syntax: (stale-when guard-expr e* ...) ;; in definition context
(stale-when guard-expr e e* ...) ;; in expression context
semantics:
When a stale-when form is encountered while expanding any code
(expressions, macros, macros in macros, etc.) in a library
body, the guard-expr is expanded (but not evaluated) and
serialized along with the library. When the library is later
reloaded from fasl and before it is installed, the guard-expr
is evaluated. If guard-expr returns true, the fasl content is
ignored and the library is recompiled afresh from source.
fasl-directory parameter) that works as follows:
- if IKARUS_FASL_DIRECTORY is set to "", no fasl files are produced.
- if IKARUS_FASL_DIRECTORY is set to something other than "", the
string is used as a directory in which fasl files are placed.
- if IKARUS_FASL_DIRECTORY is unset, the directory
$HOME/.ikarus/precompiled is used for fasl output.
- library file names are cannonicalized using file-real-path.
- the fasl file (if produced) is the result of
(string-append (fasl-directory) (file-real-path filename) ext)
where ext is either ".ikarus-32bit-fasl" or ".ikarus-64bit-fasl".
- The old behavior (placing the fasl files in the same place as the
library files) can be achieved by setting IKARUS_FASL_DIRECTORY='/'.
directory structure recursively)
- Added split-file-name (takes a string, returns two values: the
substring before the final "/" and the string after it).
- Fixed a minor bug in file-directory?, file-exists?, etc. that were
failing on OS X if part of the path given was not a directory.
E.g., if /tmp/foo is a regular file, (file-directory? "/tmp/foo/bar")
was raising an exception instead of returning #f.
Ack now runs only 80 times slower in debug mode (down from 360
times), and bootstrapping is now done in 170 seconds instead of
500 (nondebug time is still less than 8 seconds).
dynamically instead of performing context-sensitive transformation
to determine tail/nontail calls.
- interpreter now has options to reraise, continue, or quit.
`(annotated-call ,annotation ,rator ,rands ...)
form for cases when there is an annotation attached to the procedure
call. The compiler just stripps it out and makes no use of it.
compiler. (useful for a future project)
- refershed all boot files (because of added primitives)
- regenerated some autoconf files (to use newer version)
where id->label was prematurely interning identifiers in the
environment. Now, there is id->label/intern that does that and it's
only used when an identifier's type is resolved and not at other
times (like in free-id=? and bount-id=?).