JeffBezanson
219ffb7e63
clarifying which values are unspecified, and making the unspecified value
...
true, since only #f should be false.
removing not-really-used definitions of true and false, which just seem to
be asking for conflicts
2010-01-06 18:27:28 +00:00
JeffBezanson
be453f2ed5
improving portability to Mac OS
...
fixes for big endian architectures (PowerPC)
renaming exported symbol raise to fl_raise
fixing some bugs and oversights discovered in the process
2009-08-29 00:54:51 +00:00
JeffBezanson
43b6029727
allowing form (define x)
...
error checking define a bit better
fixing a small bug in expand-lambda
2009-08-12 05:15:21 +00:00
JeffBezanson
332235231c
changing semantics to respect lexical scope more strictly; now
...
anything can be shadowed by closer nested variables
fixing bugs in let-syntax and expanding optional arg default values
improving expansion algorithm on internal define
some small optimizations to the compiler
maintaining interpreter for bootstrapping
2009-08-12 04:56:32 +00:00
JeffBezanson
c6a977063e
better error checking for formal argument lists
...
some cosmetic error improvements
adding more tests
2009-08-03 05:00:44 +00:00
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
adb702cdf8
fixing a bug in optional args + rest args with no required arguments
...
adding some code for keyword argument processing
2009-07-29 04:20:28 +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
57c066fcdf
simplifying code by eliminating the hybrid stack/heap calling convention
...
other misc. cleanup
2009-07-20 04:57:17 +00:00
JeffBezanson
642d1e1bd4
rewriting some primitives to take advantage of the full language; they
...
do not need to be written in terms of the base language any more
moving handling of internal define and multiple-body-lambda to the
compiler where it belongs. macroexpand now only handles syntax.
2009-07-18 02:16:18 +00:00
JeffBezanson
2c304edf42
changing boot file format; the old one did not preserve sharing
...
between top-level functions
making colon at the end also valid for keywords
adding keyword? predicate
fixing bug in map
adding functions to emulate values and call-with-values
adding receive macro
improving equal? on closures
adding lambda-lifting optimization to the compiler
2009-07-17 01:30:26 +00:00
JeffBezanson
c19aaeabd6
keeping track of function names, printing nice stack traces
...
changing default bootstrap process to use VM instead of interpreter
fixing bug where only a fixnum could index a vector
merging equal.c into the main compilation unit
2009-07-10 04:17:39 +00:00
JeffBezanson
e4e8d4dfdb
supporting multi-arg map
...
fixing branch destination display in disassemble
2009-07-08 05:53:29 +00:00
JeffBezanson
b5897e0ad1
adding maxstack calculation and stack overflow protection
...
making append benchmark more useful by measuring interpreter
speed instead of the builtin
2009-06-27 23:07:22 +00:00
JeffBezanson
8decdc4ae4
making append a builtin
...
making branch destinations relative so we can access the code
using *ip instead of code[ip]
doing the same to bp (argument access)
small improvement to map, builtin->instruction
better profiling
2009-06-15 02:25:21 +00:00
JeffBezanson
6ec69f5375
optimizations to map and case
...
several optimizations to the compiler itself, mostly involving
emit and encode-byte-code
experimental, very basic profiling utility
2009-06-11 00:34:50 +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
7c48f6ae53
some renaming and reorganizing
...
using more scheme-like names append! and reverse!
2009-05-31 21:06:04 +00:00
JeffBezanson
bbcc68cfdf
making copy-list a builtin, since the functionality was there anyway.
...
adding builtin primitive apply-nlist*, to speed up list* and nlist*
2009-05-30 17:54:27 +00:00
JeffBezanson
a23bee041f
fixing bug in cond when condition wasn't followed by any forms
...
fixing typo in cps.lsp
optimizing constant conditions in if
2009-05-30 17:04:34 +00:00
JeffBezanson
e2c1d2ae9e
some cleanup
2009-05-30 02:52:22 +00:00
JeffBezanson
c42ee12d4c
allowing multiple expressions in lambda
...
making cond a macro
increasing size limit for cvalues on the managed heap, and inline
allocated hashtables
2009-05-29 04:38:50 +00:00
JeffBezanson
c38c47d264
adding R6RS div, mod, div0, mod0
...
small improvement to cmp_eq
explicit -fomit-frame-pointer was causing test failures with gcc4.3.2
2009-05-14 17:54:59 +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
77e37368c9
fixing trace and untrace
...
replacing function->vector with function:code, function:vals, and
function:env
2009-05-13 01:13:40 +00:00
JeffBezanson
a7a31cf53a
fixing vararg apply to work properly
2009-05-11 23:55:40 +00:00
JeffBezanson
afa77a8c5f
adding array?
...
adding vararg apply
2009-05-08 04:08:31 +00:00
JeffBezanson
3dbaa358f9
making 3rd argument to string.sub optional
...
some renaming
removing 1/Instructions table
2009-05-07 02:10:52 +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
14d625bd83
some performance tweaks
2009-04-27 03:21:53 +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
2cceb9e538
fixing function? and disassemble
2009-04-21 15:47:30 +00:00
JeffBezanson
305c350c56
a couple small fixes
...
making bytecode representation more space-efficient
2009-04-21 14:53:18 +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
5ab7a7c1e1
adding new "translucent" function type for byte-compiled lambdas
2009-04-19 22:22:17 +00:00
JeffBezanson
2ed581e62d
adding top-level-value and set-top-level-value!, using them instead of
...
set and eval where appropriate
adding separate integer? and integer-valued? predicates
2009-04-17 14:41:15 +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
JeffBezanson
debf3fd517
moving (length) out of core
...
changing another recursive call to goto
adding special cases in compiler for 0 and 1 argument versions of some
vararg builtins
beginning implementation of bytecode interpreter
2009-04-09 04:04:27 +00:00
JeffBezanson
e119a66bcd
moving lognot out of core
...
fixing type check in ash
2009-04-02 03:53:38 +00:00
JeffBezanson
8e78e4cdbb
making some utf8 routines more robust against invalid data
...
implementing tail position in compiler
adding arg count checking for instructionized builtins
2009-04-02 02:22:38 +00:00
JeffBezanson
43e8d1fbf0
adding the ability to heap-allocate extentions to the value stack,
...
so recursion depth is limited only by the process stack limit.
reorganizing evaluator so the same code is used for evaluating
and pushing arguments for both builtin functions and lambdas.
for now this is slower, but it was done in preparation for
Things To Come.
adding list-head
implementing the calling convention for long argument lists in
bytecode compiler. arguments are broken down into a nest of
list and nconc calls.
also implementing vararg builtins.
2009-04-01 04:31:49 +00:00