mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-05 11:45:45 +00:00
Initialize cl--gensym-counter to 0
Previously it was initialized to a random value, which made it harder to reproduce earlier Emacs runs. The need for a random value went away when Emacs introduced and used the #: syntax for uninterned symbols (Bug#20862). * doc/misc/cl.texi (Creating Symbols, Common Lisp Compatibility): Document that cl--gensym-counter now starts with 0. * lisp/emacs-lisp/cl-lib.el (cl--gensym-counter): Remove. (cl--random-time): Move to near only remaining use. * lisp/emacs-lisp/cl-macs.el (cl--gensym-counter): Initialize to 0.
This commit is contained in:
parent
5e3fde03b4
commit
efc262f5f8
@ -2877,14 +2877,8 @@ their names will not conflict with ``real'' variables in the user's
|
||||
code.
|
||||
|
||||
(Internally, the variable @code{cl--gensym-counter} holds the counter
|
||||
used to generate names. It is incremented after each use. In Common
|
||||
Lisp this is initialized with 0, but this package initializes it with
|
||||
a random time-dependent value to avoid trouble when two files that
|
||||
each used @code{cl-gensym} in their compilation are loaded together.
|
||||
Uninterned symbols become interned when the compiler writes them out
|
||||
to a file and the Emacs loader loads them, so their names have to be
|
||||
treated a bit more carefully than in Common Lisp where uninterned
|
||||
symbols remain uninterned after loading.)
|
||||
used to generate names. It is initialized with zero and incremented
|
||||
after each use.)
|
||||
@end defun
|
||||
|
||||
@defun cl-gentemp &optional x
|
||||
@ -4543,10 +4537,7 @@ example, local @code{special} declarations, which are purely
|
||||
advisory in Emacs Lisp, do not rigorously obey the scoping rules
|
||||
set down in Steele's book.
|
||||
|
||||
The variable @code{cl--gensym-counter} starts out with a pseudo-random
|
||||
value rather than with zero. This is to cope with the fact that
|
||||
generated symbols become interned when they are written to and
|
||||
loaded back from a file.
|
||||
The variable @code{cl--gensym-counter} starts out with zero.
|
||||
|
||||
The @code{cl-defstruct} facility is compatible, except that structures
|
||||
are of type @code{:type vector :named} by default rather than some
|
||||
|
@ -249,16 +249,6 @@ so that they are registered at compile-time as well as run-time."
|
||||
`(progn ,@body)))) ; Avoid loading cl-macs.el for cl-eval-when.
|
||||
|
||||
|
||||
;;; Symbols.
|
||||
|
||||
(defun cl--random-time ()
|
||||
(let* ((time (copy-sequence (current-time-string))) (i (length time)) (v 0))
|
||||
(while (>= (cl-decf i) 0) (setq v (+ (* v 3) (aref time i))))
|
||||
v))
|
||||
|
||||
(defvar cl--gensym-counter (* (logand (cl--random-time) 1023) 100))
|
||||
|
||||
|
||||
;;; Numbers.
|
||||
|
||||
(define-obsolete-function-alias 'cl-floatp-safe 'floatp "24.4")
|
||||
@ -298,6 +288,11 @@ If true return the decimal value of digit CHAR in RADIX."
|
||||
(let ((n (aref cl-digit-char-table char)))
|
||||
(and n (< n (or radix 10)) n)))
|
||||
|
||||
(defun cl--random-time ()
|
||||
(let* ((time (copy-sequence (current-time-string))) (i (length time)) (v 0))
|
||||
(while (>= (cl-decf i) 0) (setq v (+ (* v 3) (aref time i))))
|
||||
v))
|
||||
|
||||
(defvar cl--random-state
|
||||
(vector 'cl--random-state-tag -1 30 (cl--random-time)))
|
||||
|
||||
|
@ -161,7 +161,7 @@ whether X is known at compile time, macroexpand it completely in
|
||||
|
||||
;;; Symbols.
|
||||
|
||||
(defvar cl--gensym-counter)
|
||||
(defvar cl--gensym-counter 0)
|
||||
;;;###autoload
|
||||
(defun cl-gensym (&optional prefix)
|
||||
"Generate a new uninterned symbol.
|
||||
|
Loading…
Reference in New Issue
Block a user