* New bug.
Fixed hanging-on-reader-error in Darwin (and Solaris, it turns out): ... Here's the deal: lseek(), on "certain devices", has "unspecified consequences" ... said devices include, empirically, /dev/stdin ... so lseek was merrily returning a success code despite clearly being incapable of rewinding the input stream ... so in our new error-reporting for reader errors, we were assuming because of the success value that we could read the erroneous input into a buffer... ... whereas we were rather sitting there waiting for more input. ... So protect the rereading code with an INTERACTIVE-STREAM-P.
Partial fix for method definition protocol ... ANSI in its wisdom saith that the mere addition of a bogus method to a generic function is not cause for signalling an error. Signal a warning instead, and defer the error to when the function is called. Factor out common testing code into a sourceable script, and adjust the clos tests to reflect this new interpretation
* Fixed new bug shown by CLOCC: EXPT type deriver tried to work with arbitrarily large exponents; * stylistic change: eliminate (case ... ('+ ...)); * test case for the bug 45b; * stylistic change: stream tests should remove temporary files.
* Partially enable VALUES declaration: ... PROCESS-DECLS does not accept continuation; instead it returns the asserted type as the second result; ... new macro: PROCESSING-DECLS, rebinds *LEXENV* and puts THE on the result, if needed; * IR1-CONVERT-LAMBDA-BODY and similar do not accept/pass the result continuation; * remove obsolete LEXENV-WEAKEND-TYPE-RESTRICTIONS.
When is a GO tag not a GO tag? ... remove stray "p" from midst of commentary :-)
IRC as a substitute for cvs diff | mail sbcl-devel ... purportedly fix the return-from-sigint problem on Darwin/PPC, from Patrik Nordebo (KingNato)
Fix the shell suspension bug and threaded builds
* New old bugs.
Fix READ-SEQUENCE bug (DB sbcl-devel 2003-08-19, Gerd Moellman cmucl-imp) ... and add a test; Fix CEILING bug (PFD sbcl-devel 2003-08-19) ... add a test, and uncomment a bunch of now-working tests One more format string badness fix.
Mostly contrib frobs ... merge sb-grovel string handling (Andreas Fuchs sbcl-devel 2003-08-19) ... hack at sb-posix designator concept until it doesn't blow up when given list types; ... implement opendir/readdir/closedir in sb-posix [not yet properly: everything is done with (* T) rather than (* DIR) and (* DIRENT), but the interface is fine]; ... add a FINISH-OUTPUT to sb-rt, so that the failing tests are printed before the backtrace, not during; ... print ALIEN-VALUEs' alien type in PRINT-OBJECT
* New optimization policy: RECOGNIZE-SELF-CALLS; * on x86 DATA-VECTOR-REF/SIMPLE-BASE-STRING does not use AL temporary.
FORMAT string deftransforms can give spurious optimization notes on e.g. (COMPILE NIL '(LAMBDA (X) (ERROR X))); implement checking of constant format strings via DEFOPTIMIZER OPTIMIZER instead. ... also add rudimentary test of warning functionality
Slightly alleviate the bit-vector user's surprise ("mummy, why does initializing a bit-vector's elements to 1 take so long?") ... DEFTRANSFORM FILL for the easy case.
Sparc build fix I ... cross-compiler versions of ASH-RIGHT-[UN]SIGNED, to stop the compiler from going into an endless loop during compilation of STRING :-) Sparc build fix II ... we don't support sigreturn via call_into_lisp on anything but x86 yet.
* New macro SB!INT:BINDING*, uniting LET*, M-V-BIND and AWHEN; * add simple inference of iteration variable type; * SAME-LEAF-REF-P: look through CAST chains; * wrap all uses of handle_rt_signal into #!+sb-thread; * (SB-ACLREPL): CD-CMD takes one argument, not two.
* Try to fix bug 267 = optimization issue #7: inside NAMED-LAMBDA replace references to a function with the same name with self-references; * ASSERT-GLOBAL-FUNCTION-DEFINITION-TYPE: do not put type assertions for functions with EXPLICIT-CHECK attribute; ... FLOAT-RADIX does not perform explicit check; * implement cross-compiler versions of %DPB and %WITH-ARRAY-DATA.
Rename return_to_lisp_function to arrange_return_to_lisp_function, as threatened SIG_INTERRUPT_THREAD presently only exists on Linux: add #ifdef to avoid breaking other x86en Darwin complains "union has no member named `sival_int'" in handle_rt_signal. But we're only using that in thread builds anyway, so #ifdef it Bug 75 (:ELEMENT-TYPE for WITH-OUTPUT-TO-STRING) was fixed in some previous version: remove from BUGS file Shameless autopuffery, plus some amount of transpuffery, in CREDITS file. Update NEWS file tests/.cvsignore: don't tell me about threads-foreign-code.*
* AVER was too early in the cross compiler.
Move lines above/below LISP_FEATURE_X86 conditionals, to remove non-x86 brokenness introduced by return-elsewhere
Merge patch from Brian Mastenbrook for better dlfoo handling on Darwin (plus more-likely cpp options, add boilerplate) ... reindent to 4 spaces; ASSQ patch from observation by PFD sbcl-devel 2003-08-16 ... (NOT (NULL PAIR)) plus explanatory comment; Pragmatism: since not all lisps implement arrays with NIL specialized-array-element-type, our cross-compiler version needs to be more robust. Symptoms: building sbcl/ppc from openmcl loses in cold-init; sbcl/sparc from sbcl-0.7.x hangs in cross-compiler compilation of STRING ... since we don't need any (ARRAY NIL)s to cross-compile SBCL, the answer to SIMPLE-ARRAY-NIL-P for constant-folding purposes in the cross-compiler is always NIL.
Implement INTERRUPT-THREAD, which forces another thread to execute a function supplied by the caller. In the process, design a mostly entirely new scheme for calling Lisp code as a result of a handled signal: instead of calling into Lisp directly, frob the signal context and the stack to arrange that the Lisp is called after the signal handler itself has returned. This is expected to be applicable to signal handlers generally (and will have portability benefits), but needs them to be changed around to call it. Presently it's used only for interrupt-thread (SIGRTMIN) and control stack exhaustion (one branch of SIGSEGV) In principle, all you need do to use this in other places is call return_to_lisp_function in the signal handler, with the context and the function object that you wish to be called. For the x86 you also need to make sure the signal is being handled on the alternate signal stack, otherwise you'll overwrite your own stack frame.
* Provide cross-compiler versions of several internal functions; * BIGNUM-LOGNOT VOP is the same as LOGNOT-MOD32.
Fix errors shown up by new ERROR/FORMAT code in sparc backend
Fix PPC (complex double-float) bug as reported on sbcl-devel by Clemens Heitzinger 2003-08-12 ... the right way, not as per CSR patch sbcl-devel, but as per CSR words sbcl-devel; ... also fix error reporting in CERROR format DEFTRANSFORM (oh, the irony).
* Fix bug in ASSQ, reported by Paul Dietz; * FLOAT-RADIX IGNOREs its argument as was suggested by Clemens Heitzinger; * fix return type declaration for FFLOOR and friends (reported by Paul Dietz); * SB-C::DESCRIBE-COMPONENT prints blocks in IR1 component "as is"; * introduced "good" (transparent) modular functions; ... LOGAND and LOGIOR are :GOOD; * on X86: transform 32BIT-LOGICAL-xxx into LOGXXX; implement LOGXOR-MOD32; change implementation of FAST-+-MOD32: inherit without changes from FAST-+/UNSIGNED=>UNSIGNED :-). (On X86 SB-MD5 may be implemented without 32BIT-LOGICAL-xxx and evil TRULY-THE.)
Extend FORMAT string checking to ERROR, CERROR and WARN (and many internal functions too) ... correct the surprising number of bugs that this reveals; ... since one of said bugs was the *INTEXP-MAX-EXPONENT* one, default this to NIL and make the error non-continuable.
Build fixes for asdf-install. Has installed a module via cliki for me, so maybe it works now.
* Fix bug in the portable implementation of SB-MD5::I; * add support for modular functions with argument number different from 2; * SB!C::CUT-TO-WIDTH: derive node type from the type declaration; * on x86 reimplement LOGNOT as a modular function and implement 32BIT-LOGICAL-NOT in terms of LOGNOT; ... remove optimization of LOGNOT with LOGAND dest.
Initial implementation of modular functions: * new macro: SB!C:DEFINE-MODULAR-FUNCTION; * optimization of LOGAND: try to cut arguments to the needed number of bits; * implemented + with 32 bit width for x86.
* Quick trick to optimize NJF's SHA1 portable implementation: replace LOGNOT with 32BIT-LOGICAL-NOT when its DEST is LOGAND with an argument of type (UNSIGNED-BYTE 32).
…tof> was that intentional?
A full and final answer[*] to all the people who keep asking for slightly tangential software to be added to contrib: to wit, a contrib module to automate the downloading and installing of packages that are _not_ part of contrib. * (require 'asdf-install) * (asdf-install:install 'xlunit) or $ sbcl-asdf-install xlunit See contrib/asdf-install/README for more details and scary security-related muttering. Also added a :INITIAL-FUNCTION to SB-EXECUTABLE:MAKE-EXECUTABLE so that files don't have to be written such that the application starts as soon as they're loaded [*] Ha!