From: Christophe R. <cs...@ca...> - 2009-03-01 22:08:19
|
All, I've just released SBCL 1.0.26. As well as the NEWS file contents (pasted below), it's worth being aware that there is a known issue in CL:ROOM, which conses rather too many bignums. Best, Christophe changes in sbcl-1.0.26 relative to 1.0.25: * incompatible change: an interruption (be it a function passed to INTERRUPT-THREAD or a timer function) runs in an environment where interrupts can be enabled. The interruption can use WITH-INTERRUPTS or WITHOUT-INTERRUPTS as it sees fit. Use WITHOUT-INTERRUPTS to avoid nesting of interruptions and potentially running out of stack. Keep in mind that in the absence of WITHOUT-INTERRUPTS some potentially blocking operation such as acquiring a lock can enable interrupts. * incompatible change: GC-OFF and GC-ON are removed, as they were always unsafe. Use WITHOUT-GCING instead. * new feature: runtime option --disable-ldb * new feature: runtime option --lose-on-corruption to die at the slightest hint of possibly non-recoverable errors: running out of memory, stack, alien stack, binding stack, encountering a memory fault, etc. In the absence of --lose-on-corruption a warning is printed to stderr. * enhancement: detect binding stack exhaustion * enhancement: detect alien stack exhaustion on x86/x86-64 * improvement: generally more stable and reliable interrupt handling * improvement: there is a per thread interruption queue, interruptions are executed in order of arrival * improvement: a repeating timer reschedules itself when the it has finished, but expiration times are spaced equally. If an expiration time is in the past it will trigger after a short grace period that may give a chance to other things to run. * optimization: slightly faster gc on multithreaded builds * optimization: faster WITHOUT-GCING * bug fix: when JOIN-THREAD signals an error, do it when not holding important locks so that the debugger/handler doesn't produce recursive errors or deadlock. * bug fix: real-time signals are not used anymore, so no more hanging when the system wide real-time signal queue gets full. * bug fix: INTERRUPT-THREAD on a dying thread could produce memory fault. * bug fix: finalizers, gc hooks never run in a WITHOUT-INTERRUPTS * bug fix: fix random memory faults related to interrupts on alpha * bug fix: fix random memory faults related to interrupts on sparc * bug fix: fix deadlocks related to starting threads * bug fix: fix deadlines on locks on futex platforms * bug fix: restore errno in signal handlers * bug fix: fix deadlocks related to hash tables * bug fix: fix deadlocks in pcl |