1.0.7.14: thread-safe INTERN, EXPORT, &co
commit4c09711eca1c33e60ff30a8f47f9c03b429d5994
authorNikodemus Siivola <nikodemus@random-state.net>
Wed, 11 Jul 2007 13:56:49 +0000 (11 13:56 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Wed, 11 Jul 2007 13:56:49 +0000 (11 13:56 +0000)
tree6db20679a08bec67aae872c35ef957740acb7971
parent7d9f232609e507b003147db7339aa0a351163d55
1.0.7.14: 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.
NEWS
src/code/package.lisp
src/code/target-package.lisp
version.lisp-expr