- it now takes an optional environment (it was required)
- it no longer returns a second value (list of libraries)
- it's output is "pretty".
the old expand is now called core-expand.
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.
compiler. (useful for a future project)
- refershed all boot files (because of added primitives)
- regenerated some autoconf files (to use newer version)
It returns syntax-object wrapped with the marks and substitutions
that have been added to new-id since its introduction as base-id.
The new-id and base-id should be free-identifier=? and new-id
should have the same (or more) marks as base-id.
- Ikarus fasl files and source files are not compared using
(< (file-mtime ikfasl) (file-mtime filename))
instead of
(<= (file-ctime ikfasl) (file-ctime filename))
unhandled causing compile time errors.
- fixed some bootstrapping issues with pointer? (which was moved out
of the (ikarus) library)
- freshened up the bootfiles for both 32- and 64-bit version of
ikarus.
(ikarus system $foreign).
- changed the names of some of the pointer primitives
- changed the name of the procedure make-ffi to make-callout
- updated examples and libraries to conform with new names
- updated the users guide to provide a complete description of
the (ikarus foreign) library
- updated list of missing R6RS features in the users guide
> (import (ikarus system $foreign))
> (((ffi-prep-cif 'void '(uint32))
(dlsym (dlopen #f) "hello_world"))
10)
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
>
exported by the environment. Try
> (environment-symbols (environment '(rnrs)))
- Added an internal export mechanism so that identifiers can be
exported from within a library. The syntax is the same:
(export export-spec* ...)
when appears in a library's top level, adds the export specs to
the set of exported identifiers. So, one can do:
(library (A)
(export)
(import (ikarus))
(export a)
(define a 17))
When appearing in non-library definition context, the export form
is ignored.