Update of /cvsroot/sbcl/sbcl
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv21888
18.104.22.168: thread-safe INTERN, EXPORT, &co
* Modifications to packages grab a global lock. INTERN is the only
real potential performance bottleneck here, but as long as the
symbol already exists it doesn't need to get the lock.
We need a global lock instead of a per-package lock because eg.
(EXPORT 'FOO::BAR :FOO) and (INTERN "BAR" :ZOT) can conflict, even
though they operate on different packages.
Since races should be rare we use a spinlock to avoid making a
system call for every release.
Interrupt safety? Probably no. It's likely that you can wedge the
package system into a bad state if you really try.
RCS file: /cvsroot/sbcl/sbcl/NEWS,v
retrieving revision 1.1221
retrieving revision 1.1222
diff -u -d -r1.1221 -r1.1222
--- NEWS 2 Jul 2007 16:58:20 -0000 1.1221
+++ NEWS 11 Jul 2007 13:56:49 -0000 1.1222
@@ -17,6 +17,8 @@
objects that can be seen by the GC.
* bug fix: defaulting of values in contexts expecting more than 7
variables now works on x86-64. (reported by Christopher Laux)
+ * bug fix: modifications to packages (INTERN, EXPORT, etc) are now
+ thread safe.
changes in sbcl-1.0.7 relative to sbcl-1.0.6:
* MOP improvement: support for user-defined subclasses of
RCS file: /cvsroot/sbcl/sbcl/version.lisp-expr,v
retrieving revision 1.3498
retrieving revision 1.3499
diff -u -d -r1.3498 -r1.3499
--- version.lisp-expr 4 Jul 2007 00:15:27 -0000 1.3498
+++ version.lisp-expr 11 Jul 2007 13:56:49 -0000 1.3499
@@ -17,4 +17,4 @@
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)