A minimalist continuation-based Scheme written in C.
Go to file
Jesse D. McDonald cbcea20701 Lots of misc. cleanup, and a few bug fixes.
* Remap all instance variables in one pass, to avoid an insidious bug [1].
* Fix another bug by merging promote-shared-variables and narrow-binds [2].
* Don't assume different variable means different value in propogate-set!.
* Add support for (apply), (value-list) and (call-with-values) forms.
* Add support for including files (as if directly substituted) in reader.
* Use scheme/match library to simplify form pattern-matching.
* Refactor (map-form) and (search-form) using a more basic (traverse-form),
  which just recurses over the form and returns void by default, and a
  new utility function (curry-keywords) to provide default keyword arguments.

[1] Was renaming e.g. %f0 to %i0, then %i0 to %i1, which eliminates the
distinction between %f0 and %i0. Solution is to construct a map from old
names to new names, then traverse the form and change every old variable
to its new equivalent in the map exactly once.

[2] Some variables were not being promoted to boxes, as promotions only occur
at the top-level, when constructing each lambda, and narrow-binds could push
the unpromoted variables down into a subordinate lambda form first. Solution
was to promote variables immediately after narrowing bindings, including the
recursive calls which exist after pushing variables into nested scopes.
2012-07-14 13:45:22 -05:00
doc Commit other half of doc/compiler.txt -> compiler.ss move. 2012-07-14 13:43:50 -05:00
libcompiler Lots of misc. cleanup, and a few bug fixes. 2012-07-14 13:45:22 -05:00
mods Add automatic dependency tracking to the build rules. 2012-07-14 13:42:30 -05:00
src Adjust initial allocations to improve memory efficiency. 2012-07-14 13:45:20 -05:00
.hgignore Ignore dependency (*.d) files. 2012-07-14 13:42:51 -05:00
COPYING Add a formal public-domain dedication so that others can use this. 2012-07-14 13:40:14 -05:00
Makefile Adjust build script to capitalize HAVE_MOD_* macros. 2012-07-14 13:43:01 -05:00
builtin.c Swap continuation & context in the lambda and template structures. 2012-07-14 13:43:26 -05:00
builtin.h Swap continuation & context in the lambda and template structures. 2012-07-14 13:43:26 -05:00
compiler.scm Lots of misc. cleanup, and a few bug fixes. 2012-07-14 13:45:22 -05:00
gc.c Add the rest of the FP math primitives. 2012-07-14 13:45:01 -05:00
gc.h Separate statistics for Gen-0 vs. Gen-1 garbage collection. 2012-07-14 13:43:17 -05:00
interp.c Fix a missing-root error in interp.c:perform_tail_call(). 2012-07-14 13:43:39 -05:00
interp.h Swap continuation & context in the lambda and template structures. 2012-07-14 13:43:26 -05:00
reader.c Stop reading at EOF, and signal an error when EOF occurs inside a string. 2012-07-14 13:43:32 -05:00
reader.h Adjust indirect form (#i"path") to be relative to the current file. 2012-07-14 13:42:16 -05:00
rosella.c Adjust initial allocations to improve memory efficiency. 2012-07-14 13:45:20 -05:00
run-tests.sh Commit simple script to run regression tests: src/examples/test-*.rla. 2012-07-14 13:43:38 -05:00