Subject: 24.3.50; Elisp manual description of property `pure'

From: "Drew Adams" <[email-masked]>
Date: Tue, 26 Feb 2013 11:43:34 -0800

The doc for property `pure' is inadequate and misleading.  It says only
this:
 
  `pure'
     This property is used internally to mark certain named functions
     for byte compiler optimization.  Do not set it.
 
In discussion of bug #13052, no good reason was given for this.
 
The consideration of this property as somehow being "internal", and not
for use by anyone programming with Emacs Lisp other than those
developing core Emacs, is misguided.  Users deserve a real description
of what this property does, so they can determine whether and where to
use it in code they develop.
 
The same information would of course be useful to core Emacs developers
- the manual serves them too.
 
The idea of withholding such information from users is misguided.  All
users are potentially Emacs-Lisp users and even potentially core Emacs
developers.  The Elisp manual should say what such a property actually
does, specifically.
 
AFAICT, there is no difference between using this property in code
distributed as part of core Emacs and using it in other, user code.
 
Why shouldn't, for example, a user function with a definition similar
to, or even identical to, that for `kbd' have `pure' applied to it,
since it is applied to `kbd'?  Why make users guess when `pure' might be
appropriate or inappropriate?
 
Emacs Dev really needs to get over its antiquated conception of Emacs
users as something other than Emacs-Lisp developers.  The world has
moved beyond end users submitting batch requests at the Univac job
queue.
 
GNU should be in the vanguard of putting users first and encouraging
them to dig into, understand, and modify the programs that GNU provides.
Shame on GNU for not helping users by making things more transparent.

In GNU Emacs 24.3.50.1 (i386-mingw-nt5.1.2600)
 of 2013-02-25 on ODIEONE
Bzr revision: 111879 [email-masked]
Windowing system distributor `Microsoft Corp.', version 5.1.2600
Configured using:
 `configure --with-gcc (4.7) --no-opt --enable-checking --cflags
 -IC:/Devel/emacs/build/include --ldflags -LC:/Devel/emacs/build/lib'