Tobias C. Rittweiler [Sun, 28 Mar 2010 20:08:38 +0000 (20:08 +0000)]
1.0.37.13: Make SIGNAL-SEMAPHORE interruptable.
Although a SEMAPHORE's mutex is private to that SEMAPHORE, and the
mutex is released during the wait in WAIT-ON-SEMAPHORE, it's still
possible to starve in SIGNAL-SEMAPHORE while waiting to acquire the
mutex because a deadline handler around WAIT-ON-SEMAPHORE could be
running in the implicitly called CONDITION-WAIT which reacquires the
mutex.
Hence make sure that the call to GET-MUTEX in SIGNAL-SEMAPHORE is
interruptable.
Tobias C. Rittweiler [Sun, 28 Mar 2010 17:44:49 +0000 (17:44 +0000)]
1.0.37.12: Fix typo in "Reporting bugs" section of the manual.
s/call_backtrace_from_fp/call backtrace_from_fp/
fixes lp#541771
(The last commit message contained a bogus commit version header
of "1.0.37.6"; it was "1.0.37.11", of course.)
Tobias C. Rittweiler [Sun, 28 Mar 2010 17:35:37 +0000 (17:35 +0000)]
1.0.37.6: Add SB-SYS:CANCEL-DEADLINE restart to DEADLINE-TIMEOUTs.
* Establish an SB-SYS:CANCEL-DEADLINE restart in SIGNAL-DEADLINE.
* Add an SB-SYS:CANCEL-DEADLINE restart function.
* Make SB-INT:READ-EVALUATED-FORM take an optional prompt. This
function is commonly used to query the user for input in restarts.
Use it in the SB-SYS:DEFER-DEADLINE restart in SIGNAL-DEADLINE.
* Bind *DEADLINE-SECONDS* in SB-THREAD:MAKE-THREAD. Not binding it
does not seem to have severe consequences, but that's not obvious
so just bind both so humans won't waste brain cycles on
it. SB-KERNEL:SUB-GC also binds both.
* Add usage of WITH-TEST to tests/deadline.impure.lisp. Also add
a test case for the new CANCEL-DEADLINE restart.
Nikodemus Siivola [Sun, 28 Mar 2010 16:36:30 +0000 (16:36 +0000)]
1.0.37.10: docs, docs are good
* Add ATOMIC-INCF, ATOMIC-DECF, COMPARE-AND-SWAP, and TRY-SEMAPHORE
to the manual.
* Teach docstrings.lisp to skip &ENVIRONMENT and &WHOLE in
lambda-lists. (Needed by the above.)
Nikodemus Siivola [Sun, 28 Mar 2010 16:29:13 +0000 (16:29 +0000)]
1.0.37.9: atomic STOREW for large integer constants on x86-64
* First move the constant into TEMP-REG-TN, then into memory -- not
into memory in two stages. Even though memory is probably
write-combining, an interrupt could still leave us with a bogus
value.
Nikodemus Siivola [Sun, 28 Mar 2010 15:19:11 +0000 (15:19 +0000)]
1.0.37.8: add ATOMIC-DECF, fix WAIT-ON-SEMAPHORE-BUGLET
* We already had SB-EXT:ATOMIC-INCF, so this seems a sensible
companion. I really cannot remember why I didn't do things like
this in the first place -- lack of time, maybe?
* Use ATOMIC-DECF instead of DECF in WAIT-ON-SEMAPHORE to decrement
the waitcount: if we unwind from CONDITION-WAIT due to timeout the
mutex might no longer be ours.
Nikodemus Siivola [Sun, 28 Mar 2010 13:44:46 +0000 (13:44 +0000)]
1.0.37.7: RETRY restart for NO-APPLICABLE-METHOD and NO-PRIMARY-METHOD
Wrap calling the NO-FOO gf in a CALL-NO-FOO function which provides
the restart.
Can't do the same easily for NO-NEXT-METHOD, as return-value from
CALL-NEXT-METHOD would get messed up.
Tobias C. Rittweiler [Sun, 28 Mar 2010 13:37:22 +0000 (13:37 +0000)]
1.0.37.6: Add SB-THREAD:TRY-SEMAPHORE.
Nikodemus Siivola [Sun, 28 Mar 2010 12:16:02 +0000 (12:16 +0000)]
1.0.37.5: remove a redundant IF
(IF BOOL X X) == X
The duplication occurred at 0.9.3.32 when INSTANCE-LAMBDA in the
first leg was be replaced with a regular LAMBDA.
Nikodemus Siivola [Sun, 28 Mar 2010 10:51:51 +0000 (10:51 +0000)]
1.0.37.4: robuster page table pickup
The Problem:
It is rare, but apparently possible, for there to be free pages in
the middle of allocated pages even after the double-collection we
do in gc_and_save().
Previously this was not an issue, since the static space pickup
mechanism just ended up marking those pages as boxed and full --
so we could get a page or few of (0 . 0) in the static generation.
No biggie.
Now, however, we save page table information into the core (for
normal, not cold cores). This means that a would get a page marked
as free, but since it was below alloc_ptr gencgc_pickup_dynamic()
would mark it having bytes_used=PAGE_BYTES, etc.
...and later, find_freeish_pages() would look at the page and
cry out in existential anguish becaue it should be free but
didn't have bytes_used==0. Oh Noes!
The Fix:
gencgc_pickup_dynamic() needs to be careful about pages marked free
if partial pickup has already been done from the core.
Nikodemus Siivola [Sun, 28 Mar 2010 10:44:04 +0000 (10:44 +0000)]
1.0.37.3: make *STANDARD-INPUT*, *STANDARD-OUTPUT*, and *ERROR-OUTPUT* bivalent
* Also allow bivalent output streams to use :LINE buffering: take it
to mean :FULL for binary output.
Nikodemus Siivola [Sun, 28 Mar 2010 09:38:46 +0000 (09:38 +0000)]
1.0.37.2.: document UNLOAD-SHARED-OBJECT in the manual
Nikodemus Siivola [Sun, 28 Mar 2010 09:37:39 +0000 (09:37 +0000)]
1.0.37.1: more correct restart text for MAKE-PACKAGE
* Selecting CONTINUE will clobber the existing package, not leave
it alone.
Christophe Rhodes [Sun, 28 Mar 2010 09:02:28 +0000 (09:02 +0000)]
1.0.37: will be tagged as sbcl_1_0_37
Nikodemus Siivola [Fri, 26 Mar 2010 12:59:25 +0000 (12:59 +0000)]
1.0.36.40: fix PPC build
* Resent unknown-type reparsing changes could result in LVAR-TYPE
being #<UNKNOWN-TYPE RESTART> but _behaving_ as if it actually was
#<STRUCTURE-CLASSOID RESTART> -- make PRIMITIVE-TYPE reparse the type
if appropriate so that the right template can be found.
* This problem was masked on x86oids as they have %INSTANCE-REF arg
type *, whereas PPC had INSTANCE.
Fixes launchpad bug #542894.
Nikodemus Siivola [Thu, 25 Mar 2010 12:24:39 +0000 (12:24 +0000)]
1.0.36.39: report location correctly in run-sbcl.sh
* Thanks to Attila Lendvai for noticing. In despite the freeze.
Nikodemus Siivola [Tue, 23 Mar 2010 18:06:05 +0000 (18:06 +0000)]
1.0.36.38: unBREAK
...oops.
Nikodemus Siivola [Tue, 23 Mar 2010 17:52:10 +0000 (17:52 +0000)]
1.0.36.37: fix minor regression from 1.0.36.33
* Don't patch the &REST into the type when it has * for args.
Juho Snellman [Sun, 21 Mar 2010 06:32:04 +0000 (06:32 +0000)]
1.0.36.36: Update release checklist
* Add a note about chmoding the release directories to
group-writable.
* Remove the obsolete and commented out upload instructions.
Tobias C. Rittweiler [Sat, 20 Mar 2010 16:08:06 +0000 (16:08 +0000)]
1.0.36.35: More accurate WHO-CALLS / WHO-EXPANDS information
* Fix for .34 which also affects WHO-EXPANDS; instead of pointing at
the toplevel form, actually point into the right subform.
* Bug due to typo: CDDR was used instead of CADDR.
Nikodemus Siivola [Fri, 19 Mar 2010 21:33:08 +0000 (21:33 +0000)]
1.0.36.34: WHO-CALLS information for source transformed calls
* Generalize the solution used for macroexpansion XREFs to take care
of other source-level stuff: this includes both source-transforms
and compiler-macros.
Fixes launchpad bug #542174.
Note re. 1.0.36.33: the commit message is erronous. The real commit
message would have noted that since FIND-OPTIONAL-DISPATCH-TYPES
doesn't rightly consider &REST mismatch a lossage in the presence of
&KEY, we need to make sure the type assigned to the leaf has a &REST
type if the function actually has a &REST argument.
Nikodemus Siivola [Fri, 19 Mar 2010 20:35:15 +0000 (20:35 +0000)]
1.0.36.33: handle missing &REST in proclamations
* FIND-OPTIONAL-DISPATCH-TYPES cannot skip &REST verification in the
presence of &KEY.
Fixes launchpad bug #458354.
Nikodemus Siivola [Thu, 18 Mar 2010 18:58:20 +0000 (18:58 +0000)]
1.0.36.32: reparsing undefined types when necessary
In type methods for unknown types that have since parsing become
defined, update the type as necessary.
Fixes bug #309128.
Nikodemus Siivola [Thu, 18 Mar 2010 11:17:01 +0000 (11:17 +0000)]
1.0.36.30: on x86-64 split MOVE-TO-SINGLE into -REG and -STACK versions
* More accurate lifetime for the temporary in both, to avoid spurious
moves, as per patch.
* When moving from control stack to reg, untag in the XMM register
instead of a GP register, as per patch.
* Missing commas in SSE shuffle instruction printers.
Adapted from patch by Lutz Euler on sbcl-devel 2009-10-12.
Nikodemus Siivola [Thu, 18 Mar 2010 08:16:50 +0000 (08:16 +0000)]
1.0.36.30: print_generation_stats even if heap exhaustion happens during allocation
Ditto for various GC control variables. Handling heap exhaustion is
tricky enough that puking more information is better than less.
Nikodemus Siivola [Wed, 17 Mar 2010 16:51:55 +0000 (16:51 +0000)]
1.0.36.29: better Control-C signaling
Actually SIGNAL the SB-SYS:INTERACTIVE-INTERRUPT so that handlers
can run.
Nikodemus Siivola [Wed, 17 Mar 2010 14:28:00 +0000 (14:28 +0000)]
1.0.36.28: real LOAD-LOGICAL-PATHNAME-TRANSLATIONS
* Read translations from SYS:SITE;HOST.TRANSLATIONS.NEWEST.
Patch by Michael Weber on sbcl-devel.
Nikodemus Siivola [Wed, 17 Mar 2010 12:35:29 +0000 (12:35 +0000)]
1.0.36.27: less mprotect calls in GENCGC
* In unprotect_oldspace(), instead of calling os_protect() for every
page that needs unprotecting separately, call it once for every
contiguous region of pages. (Thanks to Vitaly Mayatskikh.)
* Replace the unprotection calls from free_oldspace() and
copy_large_object() with asserts: unprotect_oldspace should already
have unprotected everything of interest.
Nikodemus Siivola [Wed, 17 Mar 2010 11:53:29 +0000 (11:53 +0000)]
1.0.36.26: bug using OF-TYPE VECTOR in LOOP
Case of :ELEMENT-TYPE * vs T confusion.
Fixes launchpad bug #540186.
Nikodemus Siivola [Mon, 15 Mar 2010 09:36:41 +0000 (09:36 +0000)]
1.0.36.25: stuff silly putty into pipe to stop ASDF-INSTALL leaking
* ...or the moral equivalent thereof.
Nikodemus Siivola [Mon, 15 Mar 2010 09:13:59 +0000 (09:13 +0000)]
1.0.36.24: FIND/POSITION bounds checking on lists
* Signal an error if the list is shorter than required, and also
check for circularity.
Based on patch by: Jorge Tavares
Fixes launchpad bug #452008.
* Also add declarations for some error signaling functions used by
sequence code so that compiler knows they never return.
Nikodemus Siivola [Fri, 12 Mar 2010 12:37:12 +0000 (12:37 +0000)]
1.0.36.23: more consistent handling of ignored DX declarations
* Use COMPILER-STYLE-WARN if the declaration is for an unbound
variable or function.
* Use COMPILER-NOTIFY is the declaration is free, but the
var/function is bound.
* Take care not to create an entry in *FREE-VARS* due to processing
a DX declaration.
Fixed launchpad bug #497321.
Nikodemus Siivola [Fri, 12 Mar 2010 11:23:09 +0000 (11:23 +0000)]
1.0.36.22: bogus style-warning in DEFSTRUCT edge-case
* Using initformless &AUX to specify uninitialized structure slots
caused a bogus style-warning.
Patch by: Adlai Chandrasekhar <Munchking@gmail.com>
Fixed launchpad bug #528807.
Nikodemus Siivola [Fri, 12 Mar 2010 09:38:25 +0000 (09:38 +0000)]
1.0.36.21: stricter handling of invalid backquote expressions
Based on patch by: Stas Boukarev <stassats@gmail.com>
Fixed launchpad bug #309093.
Nikodemus Siivola [Thu, 11 Mar 2010 17:09:46 +0000 (17:09 +0000)]
1.0.36.20: prettier WITH-COMPILATION-UNIT documentation
* Adjust the docstring for the benefit of the manual, and
teach docstrings.lisp more about parsing embedded examples.
Nikodemus Siivola [Thu, 11 Mar 2010 13:53:49 +0000 (13:53 +0000)]
1.0.36.19: WITH-COMPILATION-UNIT :POLICY
* Allows binding *POLICY* and *POLICY-RESTRICTIONS*. Read the
docstring and weep.
* Document both RESTRICT-COMPILER-POLICY and WITH-COMPILER-POLICY in
the manual.
* Also make DECLARATION-INFORMATION heed *POLICY-RESTRICTIONS*.
Based on patch by: Tobias C. Rittweiler <tcr@freebits.de>
Fixes Launchpad bug #313337.
Nikodemus Siivola [Thu, 11 Mar 2010 10:11:44 +0000 (10:11 +0000)]
1.0.36.18: remove *MERGE-SORT-TEMP-VECTOR* and *ZAP-ARRAY-DATA-TEMP*
* STABLE-SORT no longer uses a pre-allocated temporary vector, but
rather allocates it as-required.
Based on patch by: Keith James <dev@deoxybyte.co.uk>
* ADJUST-ARRAY no longer uses a pre-allocated temporary vector, but
rather allocates is as-required.
In both cases after the temporary vector is done with, it is
truncated to 0-length to prevent garbage retention.
Fixes Launchpad bug #496249.
Nikodemus Siivola [Thu, 11 Mar 2010 08:33:59 +0000 (08:33 +0000)]
1.0.36.17: SB-INTROSPECT building without SB-EVAL
Patch by: Stas Boukarev <stassats@gmail.com>
Fixes Launchpad bug #535658.
Nikodemus Siivola [Tue, 9 Mar 2010 09:57:29 +0000 (09:57 +0000)]
1.0.36.16: allocation profiling for new threads
Patch by: Leslie Polzer <polzer@gnu.org>
Fixes Launchpad bug #472499.
Nikodemus Siivola [Mon, 8 Mar 2010 17:05:41 +0000 (17:05 +0000)]
1.0.36.15: upgraded array element-type of unions and intersections
* Rename EXTRACT-UPGRADED-ELEMENT-TYPE and
EXTRACT-DECLARED-ELEMENT-TYPE ARRAY-TYPE-UPGRADED-ELEMENT-TYPE and
ARRAY-TYPE-DECLARED-ELEMENT-TYPE, and make them work on array types
instead of LVARs.
* Make ARRAY-TYPE-UPGRADED-ELEMENT-TYPE able to handle general
intersection and union types. Code by "Gustavo"
<gugamilare@gmail.com>.
* Make ARRAY-TYPE-DIMENSIONS-OR-GIVE-UP able to handle general
intersection and union types.
Fixes Launchpad bug #316078.
Nikodemus Siivola [Mon, 8 Mar 2010 13:44:58 +0000 (13:44 +0000)]
1.0.36.14: better differences of numeric types
Handle differences of numeric types accurately in TYPE-DIFFERENCE (no
change unless both arguments are number-types.)
Fixes Launchpad bug #309124.
Alastair Bridgewater [Mon, 1 Mar 2010 17:31:03 +0000 (17:31 +0000)]
1.0.36.13: Fix test case clos.impure.lisp / BUG-520366.
* Fix rename failure quux -> quux-520366.
Alastair Bridgewater [Mon, 1 Mar 2010 16:54:00 +0000 (16:54 +0000)]
1.0.36.12: Make sb-posix build on win32 again.
* Don't support accessing d_ino on win32.
Alastair Bridgewater [Mon, 1 Mar 2010 16:51:17 +0000 (16:51 +0000)]
1.0.36.11: Make slam.sh work on Win32.
* This is just a matter of changing the userinit and sysinit to
version.lisp-expr like was done back when for make.sh.
Alastair Bridgewater [Mon, 1 Mar 2010 16:32:55 +0000 (16:32 +0000)]
1.0.36.10: UD2-BREAKPOINTS for Win32
* Make UD2-BREAKPOINTS work on Win32.
* Add :ud2-breakpoints as a feature affecting fasl format, as it
changes the trap code used in compiled code.
Alastair Bridgewater [Mon, 1 Mar 2010 13:09:00 +0000 (13:09 +0000)]
1.0.36.9: UD2-BREAKPOINTS feature for x86oid systems
* Add new feature UD2-BREAKPOINTS, enabled by default only on x86oid
darwin targets.
* Use said feature instead of DARWIN for breakpoint trap selection.
* Make breakpoints work when using UD2-BREAKPOINTS (tested on x86 and
x86-64 linux).
* This patch brought to you by lp#309067, which remains valid for
three reasons: First, the test case is still disabled. Second, this
only fixes for x86oids, not for PPC. And third, I didn't actually test
this on a darwin system.
Nikodemus Siivola [Sun, 28 Feb 2010 20:26:43 +0000 (20:26 +0000)]
1.0.36.8: deal with environment argument in TYPEP transforms
Thanks to Karol Swietlicki.
Launchpad bug #309788
Nikodemus Siivola [Sun, 28 Feb 2010 19:40:40 +0000 (19:40 +0000)]
1.0.36.7: fix SB-C::CLASS-INFO printing
Launchpad bug #514762
Nikodemus Siivola [Sun, 28 Feb 2010 19:37:09 +0000 (19:37 +0000)]
1.0.36.6: array data vector type derivation
* Needs to be done for ARRAY-STORAGE-VECTOR and %ARRAY-DATA-VECTOR
in addition to %DATA-VECTOR-AND-INDEX.
* If the array is simple, we may be able to derive the exact length
of the data vector, not just the element type.
Nikodemus Siivola [Sun, 28 Feb 2010 19:05:39 +0000 (19:05 +0000)]
1.0.36.5: delay transforms for SLOT-VALUE and (SETF SLOT-VALUE)
Fixes launchpad bug #520366
Nikodemus Siivola [Sun, 28 Feb 2010 18:51:56 +0000 (18:51 +0000)]
1.0.36.4: muffle style-warnings for undefined slot writers
* Reported by Frederik Tolf on sbcl-help.
Nikodemus Siivola [Sun, 28 Feb 2010 17:52:37 +0000 (17:52 +0000)]
1.0.36.3: FUNCTION-LAMBDA-EXPRESSION and declarations in interpreted functions
* Don't throw them away, that is.
Fixes launchpad bug #524707
Nikodemus Siivola [Sun, 28 Feb 2010 17:37:12 +0000 (17:37 +0000)]
1.0.36.2: buglet in LVAR-MATCHES
* LVAR-USE where it should have been LVAR-USES.
Fixes launchpad bug #523612.
Alastair Bridgewater [Sun, 28 Feb 2010 17:13:59 +0000 (17:13 +0000)]
1.0.36.1: Improve backtrace from THROW to unknown tag on x86oids.
* Essentially, just fake up another stack frame before hitting the
error trap.
Christophe Rhodes [Sun, 28 Feb 2010 15:59:05 +0000 (15:59 +0000)]
1.0.36: will be tagged as sbcl_1_0_36
Christophe Rhodes [Sat, 27 Feb 2010 16:47:49 +0000 (16:47 +0000)]
1.0.35.23: restore buildability on clisp
Problem report and fix from Josh Elasser sbcl-devel 2010-02-16.
Nathan Froyd [Sat, 27 Feb 2010 16:46:05 +0000 (16:46 +0000)]
1.0.35.22: fix building on Darwin when sysctl is not in PATH
Thanks to Robert Goldman for the fix.
Nathan Froyd [Sat, 27 Feb 2010 16:43:12 +0000 (16:43 +0000)]
1.0.35.21: ANSI-fy random-state seeding changes
Thanks to Fare for redoing his patch.
Nathan Froyd [Sat, 27 Feb 2010 16:22:56 +0000 (16:22 +0000)]
1.0.35.20: More robust checking for DEFMETHOD argument specializers
Fixes lp#525916, reported by Reinout Stevens.
Nathan Froyd [Sat, 27 Feb 2010 16:01:21 +0000 (16:01 +0000)]
1.0.35.19: fix SB-EXT:GENERATION-* accessors for generation > 0
Add the `lutexes' slot to `struct generation' as defined from Lisp.
Not paying attention to OAOO bites again. Unfortunately, several things
are still OAOOM...
Nathan Froyd [Mon, 22 Feb 2010 21:54:31 +0000 (21:54 +0000)]
1.0.35.18: Fix type-derivation for EXPT
A small thinko in the condition checking for (EXPT <RATIONAL> <RATIONAL>).
Nathan Froyd [Tue, 16 Feb 2010 04:45:25 +0000 (04:45 +0000)]
1.0.35.17: micro-optimize x86-64 MOVE-TO-SINGLE
Sometimes we move a descriptor -> float -> stack. Teach MOVE-TO-SINGLE
how to do descriptor -> stack in one step.
Alastair Bridgewater [Sun, 14 Feb 2010 20:17:36 +0000 (20:17 +0000)]
1.0.35.16: Whitespace damage.
Tobias C. Rittweiler [Sat, 13 Feb 2010 01:04:44 +0000 (01:04 +0000)]
1.0.35.15: Add and export various functions related to type specifiers.
* TYPEXPAND-1, TYPEXPAND, TYPEXPAND-ALL work like their MACROEXPAND
counterparts except that they expand type specifiers.
* DEFINED-TYPE-NAME-P returns whether a symbol is known to name a
type specifier.
* VALID-TYPE-SPECIFIER-P returns whether a (possibly compound) type
specifier is known, and syntactically / structurally correct. A
type specifier is valid if it is to be accepted as second argument
by TYPEP -- except that VALID-TYPE-SPECIFIER-P can also deal with
FUNCTION and VALUES type specifiers.
* Export these functions from SB-EXT.
Tobias C. Rittweiler [Sat, 13 Feb 2010 00:12:52 +0000 (00:12 +0000)]
1.0.35.14: Remove unused function PRINT-CONTINUATION.
Tobias C. Rittweiler [Thu, 11 Feb 2010 22:11:07 +0000 (22:11 +0000)]
1.0.35.12: Minor cleanup in %TARGET-DEFSTRUCT.
* Minor refactoring: split MAKE-DEFSTRUCT-PREDICATE and
MAKE-DEFSTRUCT-COPIER out of %TARGET-DEFSTRUCT.
* Remove FIXME: MAKE-DEFSTRUCT-COPIER now returns a closure which
type checks its argument for proper layout before passing it to
COPY-STRUCTURE.
Tobias C. Rittweiler [Thu, 11 Feb 2010 22:04:03 +0000 (22:04 +0000)]
1.0.35.12: Add SB-INTROSPECT:FUNCTION-TYPE.
* New function which takes a function designator and returns the
function's declared, or derived FTYPE.
Tobias C. Rittweiler [Thu, 11 Feb 2010 18:11:20 +0000 (18:11 +0000)]
1.0.35.11: Minor cleanup in MAKE-FUN-TYPE / MAKE-VALUES-TYPE
* MAKE-FUN-TYPE and MAKE-VALUES-TYPE took an :ARGS key parameter
to translate from a list type-specifier to a ctype. This
was used in the type-translators for FUNCTION and VALUES, only.
So I removed :ARGS, and put that code into those type-translators.
* Renamed ARGS-TYPES helper function to PARSE-ARGS-TYPES.
Nathan Froyd [Thu, 11 Feb 2010 03:37:26 +0000 (03:37 +0000)]
1.0.35.10: d_ino access in SB-POSIX
Thanks to Philipp Marek and Pierre THIERRY for independent, nearly
identical patches.
Nathan Froyd [Thu, 11 Feb 2010 03:26:58 +0000 (03:26 +0000)]
1.0.35.9: Add support for non-trivial random seeds
SBCL is using the popular MT19937 PRNG algorithm, but up until now,
was only seeding the initial random state with a 32-bit seed, and
choosing a seed subject to a lot of collisions (a second-precise timer)
when called with (MAKE-RANDOM-STATE T).
This patch adds and documents an SBCL extension to MAKE-RANDOM-STATE
that supports initializing a random-state based on an arbitrary UNSIGNED-BYTE
or a (SIMPLE-ARRAY (UNSIGNED-BYTE 8)). Also supported (but documented as
not officially so) is a (SIMPLE-ARRAY (UNSIGNED-BYTE 32)). Last but not least,
(MAKE-RANDOM-STATE T) will try to initialize the random state by reading
256 bits from /dev/urandom, which should eliminate the collision problem and
make SBCL's PRNG suitable for more applications than before.
Finally, we use in our random-state initialization routines the very same
algorithms that the author of MT19937 recommends in the latest version
of his C source, and we have tested the output to be identical (see
November 2009 discussion in the sbcl-devel mailing-list).
Nathan Froyd [Mon, 8 Feb 2010 17:42:25 +0000 (17:42 +0000)]
1.0.35.8: Fix FILE-POSITION on simple-streams after READ-VECTOR
Patch ported from CMUCL; independent testcase that doesn't rely on Unixisms
added instead of the one from CMUCL.
Nathan Froyd [Mon, 8 Feb 2010 16:13:14 +0000 (16:13 +0000)]
1.0.35.7: fix docstrings for printing-releated things
This fixes Launchpad bug #518696.
Tobias C. Rittweiler [Sat, 6 Feb 2010 10:30:36 +0000 (10:30 +0000)]
1.0.35.6: Fix typo in make-config.sh
on ppc: :stacka-allocatable-lists -> :stack-allocatable-lists
Alastair Bridgewater [Sat, 6 Feb 2010 05:03:13 +0000 (05:03 +0000)]
1.0.35.5: Fix backtrace from internal-error on x86-64 OS X.
* Backtraces from internal-error traps were truncated before reaching
the erring stack frame due to an invalid frame pointer value being set
up in the mach exception handler. Fixed.
Gabor Melis [Thu, 4 Feb 2010 23:27:00 +0000 (23:27 +0000)]
1.0.35.4: fix compilation on chenygc platforms
Thanks to Larry Valkama and Bruce O'Neel.
Tobias C. Rittweiler [Thu, 4 Feb 2010 21:13:04 +0000 (21:13 +0000)]
1.0.35.3: Give initial thread function an explicit name..
...for slightly improved backtrace experience.
Tobias C. Rittweiler [Mon, 1 Feb 2010 18:55:13 +0000 (18:55 +0000)]
1.0.35.2: Fix CONDITION-WAIT to signal deadline with interrupts enabled.
Tobias C. Rittweiler [Sun, 31 Jan 2010 20:25:30 +0000 (20:25 +0000)]
1.0.35.1: Fix CONDITION-WAIT not to signal a deadline twice (LP #512914)
Christophe Rhodes [Sun, 31 Jan 2010 11:10:39 +0000 (11:10 +0000)]
1.0.35: will be tagged as sbcl_1_0_35
Christophe Rhodes [Sat, 30 Jan 2010 21:30:50 +0000 (21:30 +0000)]
1.0.34.16: Test case for ROUND brokenness
Paul Khuong [Sat, 30 Jan 2010 16:16:13 +0000 (16:16 +0000)]
1.0.34.15: Fix DERIVE-TYPE optimizer for %UNARY-ROUND
Handle exclusive bounds conservatively by treating them as inclusive
(instead of dying).
Christophe Rhodes [Thu, 28 Jan 2010 11:36:26 +0000 (11:36 +0000)]
1.0.34.14: fix permissions of directories of asdf-using contribs
Report (lp #508485, sbcl-devel variously) and fix from Eugene Ossintsev
Nathan Froyd [Wed, 27 Jan 2010 01:57:12 +0000 (01:57 +0000)]
1.0.34.13: add DERIVE-TYPE optimizer for %UNARY-ROUND
This change enables %UNARY-ROUND to be inlined on several platforms.
Nathan Froyd [Wed, 27 Jan 2010 00:45:11 +0000 (00:45 +0000)]
1.0.34.12: slightly better code generation for x86-64 float conversions
%{SINGLE,DOUBLE}-FLOAT required an unnecessary temporary stack slot.
Float->integer and float->float conversions also suffered from not being
able to take arguments in stack SCs.
Nathan Froyd [Tue, 26 Jan 2010 15:42:42 +0000 (15:42 +0000)]
1.0.34.11: properly inline %UNARY-TRUNCATE/{SINGLE,DOUBLE}-FLOAT
Add DERIVE-TYPE optimizers for them so the compiler can see that VOPs
are applicable. Add a testcase that should be valid everywhere.
Alastair Bridgewater [Mon, 25 Jan 2010 03:47:20 +0000 (03:47 +0000)]
1.0.34.10: New chapter for internals manual.
* Chapter: Objects In Memory, describing type tags and heap object
layouts.
Cyrus Harmon [Thu, 21 Jan 2010 05:09:43 +0000 (05:09 +0000)]
1.0.34.9: darwin/x86-64 sb-posix:stat fixes from Kei Suzuki
* sb-unix:unix-stat/lstat/fstat return the 32bit inode with x86 and
the 64bit inode with x86-64,
* sb-posix:stat/lstat/fstat get stat values using the old stat calls
with x86 and the new ones with x86-64
* re-enable now-working sb-posix stat tests
Tobias C. Rittweiler [Wed, 20 Jan 2010 22:51:19 +0000 (22:51 +0000)]
1.0.34.8: Cosmetic improvements to error output on compilation abort.
* Make sure that error output is printed on a fresh line.
* Add mandatory newline before and after so the abortion
stands out visually.
* Make sure to report the actual condition (fatal-compiler-error
is just an encapsulation.)
Nathan Froyd [Fri, 8 Jan 2010 16:29:31 +0000 (16:29 +0000)]
1.0.34.7: add missing x86-64-vm.lisp file from previous commit
Nathan Froyd [Fri, 8 Jan 2010 02:21:15 +0000 (02:21 +0000)]
1.0.34.6: improvements to SB-ROTATE-BYTE on x86-64
- Generate ROL/ROR instructions for 32-bit rotates, rather than shifts,
ands, and ors;
- Generate ROL/ROR instructions for 64-bit rotates.
While we're here, we might as well fix the FIXME about the ordering of
DEFTRANSFORMS to ensure we do the right thing for identity rotates.
Nathan Froyd [Wed, 6 Jan 2010 16:56:22 +0000 (16:56 +0000)]
1.0.34.5: remove dead DATA-VECTOR-{REF,SET} transforms
The transforms for (SIMPLE-ARRAY (UNSIGNED-BYTE N)) where (< N 8) have
never been used. Consign them to the version control bitbucket.
Nathan Froyd [Wed, 6 Jan 2010 05:05:43 +0000 (05:05 +0000)]
1.0.34.4: micro-optimize widetag checking on x86oids
If we are checking a range of widetags and there are no more widetags to
check, we can tweak the widetag and do a single, unsigned comparison.
Tobias C. Rittweiler [Mon, 4 Jan 2010 15:55:21 +0000 (15:55 +0000)]
1.0.34.3: Fix second return value of GET-MACRO-CHARACTER.
GET-MACRO-CHARACTER always refered to *READTABLE* when computing its
second return value (the non-terminating-p flag) rather than to the
readtable that may have been passed explicitly.
Alastair Bridgewater [Wed, 30 Dec 2009 22:54:27 +0000 (22:54 +0000)]
1.0.34.2: Make threads.pure.lisp symbol-value-in-thread.[78] tests more reliable.
* Actually assert that an error occurred (setf won't signal an
unbound-variable if the thread still lives).
* Join the thread before attempting to access the value (no more race
condition).
Alastair Bridgewater [Wed, 30 Dec 2009 22:53:37 +0000 (22:53 +0000)]
1.0.34.1: Kludge reduction in debug-int.
* We can't dump packages in the cross-compiler, but we can use
load-time-value, which is sufficient.
Christophe Rhodes [Wed, 30 Dec 2009 20:09:45 +0000 (20:09 +0000)]
1.0.34: will be tagged as sbcl_1_0_34
Alastair Bridgewater [Thu, 24 Dec 2009 00:08:11 +0000 (00:08 +0000)]
1.0.33.30: Fix sb-posix build on win32.
* This was entirely symbol-export issues between win32 and non-win32.
Alastair Bridgewater [Tue, 22 Dec 2009 17:22:50 +0000 (17:22 +0000)]
1.0.33.29: Fix x86oid backtrace on sigaltstack in LDB.
* altstack_pointer_p() derives the location of the altstack from the
value of arch_os_get_current_thread(), which returns a struct thread *.
This caused the subsequent offset calculation to be off by a factor of
sizeof(struct thread), thus completely overshooting the altstack area.
Alastair Bridgewater [Mon, 21 Dec 2009 16:30:08 +0000 (16:30 +0000)]
1.0.33.28: Display descriptions for internal errors in the runtime.
* In genesis, output a define with the descriptions of internal
errors.
* In interr.c, create an array with said descriptions and use it when
describing an internal error.
Gabor Melis [Mon, 21 Dec 2009 13:12:47 +0000 (13:12 +0000)]
1.0.33.27: fix regressions in DESCRIBE from 1.0.33.5