This is to announce that an update of my libraries and
macros implementation is available at:
http://www.het.brown.edu/people/andre/macros
CHANGES SINCE VERSION OF JULY 31, 2007:
--------------------------------------
- A compatible explicit renaming library has been included.
See documentation in standard-libraries.scm and tutorial
in examples.scm.
- Now completely r5rs-portable.
- Greatly expanded the porting notes.
- The few bindings necessary at runtime have been separated
into the small runtime include file runtime.scm.
As a result, since object programs do not depend on the full
expander, their runtime images can be much smaller than before.
- All runtime uses of eval, and a number of expand-time uses of eval,
have been removed.
- Added ex:expand-r5rs-file for expanding r5rs-like toplevel files.
- We now check that libraries imported at runtime are the
same build that the client library was expanded against.
- Uses better environment compression policy to make library
object code smaller.
- Changed some uses of unspecified value to undefined value
denoting the letrec(*) black hole.
- Replaced explicit deconstruction with pattern matching for
better readability and maintenance.
- The code has been modularized with let and letrec-syntax to
minimize the number of toplevel exports. It has been reorganized
so that internal definitions will work with both r5rs letrec
and r6rs letrec* semantics.
- The expander now relies on r5rs syntax-rules and letrec-syntax
and should run in a correct r5rs system. It is also metacircular.
In other words, if you don't have r5rs macros, you may use the
provided fully expanded version to bootstrap modifications by
feeding the expander to its expanded self.
- Removed uses of srfi-9.
- Library bindings are now properly removed before reinvoking
a previously invoked library.
- Changed representation of libraries.
- Added missing export char? to (rnrs base) and (rnrs).
- Expansion of lambda has been optimized to eliminate a closure
in the no-internal-definition case.
- Added 'only' annotations to standard libraries to make their
environments, and therefore object code, much smaller.
- Removed uses of let-values.
- Removed uses of nonstandard parameterize.
- Reorganized code so it should run on r5rs systems with letrec
semantics for internal definitions.
- Cleaned up initialization code.
- Fixed a bug where a new color was not created when invoking
identifier-macro targets of set!
- Improved performance of eval by preparing environment fully
during evaluation of (environment ---), not (eval ---) as before.
- Converted #'. #`, #, and #,_at_ to (quasi-)syntax and unsyntax(-splicing)
so we are independent of this reader extension.
Received on Tue Aug 14 2007 - 10:40:26 UTC