[1100ef] by Nikodemus Siivola
An easy way to copy lisp strings to malloc'ed memory.
I can't believe we didn't have this before. ...just seems
Also fix the OAOOM in MAKE-ALIEN and FREE-ALIEN documentation: make
[4993cd] by Nikodemus Siivola
184.108.40.206: --script bits and pieces
* Leaving out the script name means to read the script from standard
* Stream errors on standard streams cause scripts to exit silently.
* Scripts no longer us *TTY* for *TERMINAL-IO*, but make up a two-way
[f486d6] by Nikodemus Siivola
220.127.116.11: better end-of-the-world handling
* Implicit QUIT.
* Make sure we have %END-OF-THE-WORLD visible while doing cleanups.
* Handle errors from cleanups.
* Disable interrupts in places where the environment might now be up to
* If user calls QUIT, and exit hooks run without serious trouble, report the
* Also make SAVE-LISP-AND-DIE signal an error if SAVE returns. (When there is
[a7a4ca] by Nikodemus Siivola
18.104.22.168: make TRULY-THE macroexpandable
* MACRO-FUNCTION no longer checks :FUNCTION :KIND, allowing us to have
* Add %MACROEXPAND and %MACROEXPAND which are careful not to expand special
* Set the :FUNCTION :MACRO-FUNCTION into an expander that just converts
* Also add a SETF-expander.
[e8011f] by Nikodemus Siivola
22.214.171.124: automatic &rest to &more conversion
when possible, making functions such as
(defun foo (f1 f2 &rest args)
The conversion is done iff:
* The rest arg is never assigned to.
* The rest arg only appears in VALUES-LIST (incl. APPLY)
* Those calls are all in either the same lambda that
The way this works is as follows:
1. When we convert a lambda with a non-ignored &rest argument, as add
2. When we source-transform a values-list form, we check if its argument is
(%values-list-or-context list context count)
3. When we are optimizing, a deftransform fires for the form above. It
The reason for this roundabout way of doing things lies in locall analysis:
[b16362] by Nikodemus Siivola
126.96.36.199: fix performance / type derivation regression from 188.8.131.52
Since global/special variables are now always converted using
Remedy this by adding a DERIVE-TYPE optimizer for both.
[54d68c] by Nikodemus Siivola
184.108.40.206: faster with-arguments CALL-NEXT-METHOD
* Make the correctness-checking code for changed arguments in safe
This makes things like (apply #'call-next-method r1 r2 :foo foo rest)
Could still be better, but this much was quick and easy.
* Make the &REST list in CALL-NEXT-METHOD dynamic-extent. This helps
[edb7ac] by Nikodemus Siivola
220.127.116.11: explicitly indefinite-extent leaves, safer dynamic-extent &REST
Change LEAF-DYNAMIC-EXTENT to LEAF-EXTENT. Setting it to :INDEFINITE stops
Use this in CONVERT-MORE-CALL / CONVERT-HAIRY-FUN-ENTRY by proclaiming the
The upshot is that dynamic-extent &REST will only stack allocate the spine
Document this in the manual and attach appropriate caveats re. portability.
[94b4d5] by Nikodemus Siivola
18.104.22.168: deadlock detection fixes
* The same deadlock may be reported in multiple threads: adjust tests
* CHECK-DEADLOCK/DEADLOCK-CHAIN could signal an error if the deadlock
To flush out issues like this a bit better, added looping to some
[6bc7c1] by Nikodemus Siivola
22.214.171.124: fix null broadcast-streams as RUN-PROGRAM output streams
Regression from 126.96.36.199.
Since they have element-type T, COPY-DESCRIPTOR-TO-STREAM complains
Also add a missing error message about unknown element types for input
...and fix numbering of RUN-PROGRAM-CAT-* tests.
[dd9f2a] by Nikodemus Siivola
188.8.131.52: more conservative global variable conversion
Based on patch by Roman Marynchak.
* Modify IR1-CONVERT-VAR to emit SYMBOL-VALUE wrapper
* Modify IR1-STEP-FORM-P to return false for SYMBOL-VALUE
[f71445] by Nikodemus Siivola
184.108.40.206: SET-SYNTAX-FROM-CHAR and dispatch-macro characterness
Previously when the to-char was a dispatch-macro character in to-readtable,
CLHS says "If the character is a dispatching macro character, its entire