[Larceny-users] Libraries and macros reference implementation update

AndrevanTonder andre at het.brown.edu
Tue Aug 14 10:41:38 EDT 2007


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 #,@ to (quasi-)syntax and unsyntax(-splicing)
   so we are independent of this reader extension.




More information about the Larceny-users mailing list