Update of /cvsroot/sbcl/sbcl
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv10321
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/version.lisp-expr,v
retrieving revision 1.3500
retrieving revision 1.3501
diff -u -d -r1.3500 -r1.3501
--- version.lisp-expr 12 Jul 2007 10:31:20 -0000 1.3500
+++ version.lisp-expr 12 Jul 2007 17:28:40 -0000 1.3501
@@ -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".)