JeffBezanson
15c8cb327d
finishing initial implementation of keyword arguments
...
fixing up interpreter so it can be used for bootstrapping again
removing let/copyenv optimization because it really didn't seem to help much
2009-08-02 04:06:07 +00:00
JeffBezanson
ecfd81148f
changing optional args to allow default values to be computed from
...
preceding arguments
tidying some stuff with keywords
2009-07-28 04:16:20 +00:00
JeffBezanson
eceeddf6d2
adding support for optional arguments
...
error checking formal argument lists
making filter preserve the order of elements in the input list
2009-07-27 03:34:33 +00:00
JeffBezanson
c61dc10002
adding some combined instructions and teaching the compiler to emit them:
...
brn, brnn, brne, cadr
2009-07-24 04:20:09 +00:00
JeffBezanson
66c671bfee
making long argument lists more efficient
2009-07-22 02:10:20 +00:00
JeffBezanson
0278b152b8
fixing a case where tail position was not properly observed
2009-07-21 03:42:15 +00:00
JeffBezanson
3844191d70
adding the ability for the VM to use computed goto where available
...
with gcc v4.3.2 I found the combination of -O2 and computed goto to give the
best performance; with -O3 performance was a little worse and computed goto
was a wash.
2009-06-28 19:47:11 +00:00
JeffBezanson
27a3e413d3
adding opcodes loada0, loada1, loadc00, loadc01
...
adding offset and count arguments to dump
2009-06-08 03:22:32 +00:00
JeffBezanson
17752decf4
implementing support for lambdas with up to 2^32-1 required arguments
...
using copy-list to implement append2
fixing bug in op_vargc when nrequired==MAX_ARGS
making fetching of multibyte numbers from bytecode portable
some cleanup in compiler
2009-06-06 21:15:54 +00:00
JeffBezanson
ae2a4dd156
adding integer division function div
...
changing / to do real division always
fixing equal? to distinguish -0.0 and 0.0
making equal? and eqv? false on numbers of different exactness
2009-05-14 01:30:25 +00:00
JeffBezanson
c94774a5df
adding *error-stream* variable
...
removing unnecessary byte after :let in bytecode encoding
adding script for easy bootstrapping
2009-05-05 23:51:13 +00:00
JeffBezanson
de19e4f401
adding return special form
...
eliminating some unnecessary top-level bindings
adding opcodes add2, sub2, neg
2009-04-26 22:19:32 +00:00
JeffBezanson
0dc4c16276
making procedure? a builtin
...
fixing type error trying to apply #t, #f, nil
2009-04-24 20:43:56 +00:00
JeffBezanson
d6f73d0bf0
implementing #vu8 read and print syntax for uint8 vectors
...
much more compact string representation of bytecode
2009-04-21 15:35:46 +00:00
JeffBezanson
25812731cc
eliminating interpreter. the bytecode VM is now fully bootstrapped.
...
making the empty vector a singleton
removing syntax environment stuff from core
reimplementing eval using the compiler
fixing a couple bugs in long argument lists
2009-04-21 00:56:05 +00:00
JeffBezanson
86b7738c89
cleaning up implementation of apply() entry point
...
removing use of interpreter in computed calls to builtins
2009-04-17 03:40:52 +00:00
JeffBezanson
94814a2e34
a bug fix and a first pass at let-optimization
2009-04-16 21:20:15 +00:00
JeffBezanson
ad4a086790
converting for to a special form
...
adding loadi8 instruction
cleaning up numeric comparison, reducing repeated code
2009-04-16 03:05:38 +00:00
JeffBezanson
36a209cd5f
making = a builtin
...
fixing = and eqv? to work properly on NaNs
fixing other comparison predicates to be consistent
2009-04-15 23:54:43 +00:00
JeffBezanson
672558d30f
bytecode vm is now working, off by default
...
various bug fixes
language changes:
• constant symbols no longer shadow everything
• eval* removed
• vararg lists always allocated on entry, dotted argument
lists not preserved
new applyn() entry point
2009-04-15 00:12:01 +00:00