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. _______________________________________________ Larceny-users mailing list Larceny-users@lists.ccs.neu.edu https://lists.ccs.neu.edu/bin/listinfo/larceny-users