JeffBezanson
23b728155f
some boehm gc tweaks
2010-05-02 23:23:00 +00:00
JeffBezanson
a2b57453cb
adding interoperability with boehm gc if BOEHM_GC is defined
2010-05-02 20:36:39 +00:00
JeffBezanson
b7f08e854f
fully separating femtolisp into library core and main program
2010-05-02 18:17:47 +00:00
JeffBezanson
1dcc71ec82
factoring out startup routine for embedded use
2010-04-29 18:39:17 +00:00
JeffBezanson
eec95c17b8
adding fl_ prefix to some functions
2010-04-29 18:01:26 +00:00
JeffBezanson
2e99f52b29
adding dependency on equal.c in makefiles
...
adding a missing va_end
minor change to hash function
2010-02-05 19:56:10 +00:00
JeffBezanson
1649e64ad3
putting llt_init in a separate file
2010-01-06 20:27:04 +00:00
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
8eb100a3cf
simplifying copy-list
...
improving the gambit-like read-line function
adding with-output-to-string
2009-12-03 20:12:06 +00:00
JeffBezanson
3dc2275a07
making os name symbols non-constant, so they aren't evaluated at compile time
...
more aliases
2009-10-22 03:32:12 +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
be0d4d0d47
renaming - adding fl_ prefix to some more functions
2009-08-23 07:06:57 +00:00
JeffBezanson
37a23afb3c
adding io.peekc, top-level-bound? (alias)
...
fixing behavior of number?
fixing bugs in get-output-string, setting eof
2009-08-23 05:07:46 +00:00
JeffBezanson
0cc3595e80
renaming backquote-related symbols to scheme style
...
adding multi-arg for-each
now R6RS psyntax can be fully bootstrapped
interpreter maintenance
2009-08-18 03:46:09 +00:00
JeffBezanson
9ed9a51786
adding *print-level* and *print-length*
...
fixing open-string-output-port (R6RS)
making io.tostring! more consistent
adding newlines to boot file; wastes space but will allow more
efficient diffing
2009-08-13 04:09:35 +00:00
JeffBezanson
97c05e8eb4
a couple bug fixes
...
some small performance tweaks
moving some test files around
2009-08-09 20:34:07 +00:00
JeffBezanson
929ec92a65
adding support for eof-object
...
renaming exported symbol NIL to FL_NIL
making default vector fill #f
some misc. cleanup
2009-08-09 18:04:03 +00:00
JeffBezanson
51f645a916
adding gensym?, fixing keyword?
...
checking in psyntax library, and more scheme aliases to make it work
2009-08-09 17:05:40 +00:00
JeffBezanson
302ddec770
adding read and print support for named characters, e.g. #\space
...
printing infs and nans in R6RS format
making closure print syntax more compact; fn instead of function
adding more c[ad]+r functions
2009-08-08 21:44:14 +00:00
JeffBezanson
1a6d9d391f
adding with-bindings, with-output-to-file, with-output-to
...
simplifying printing. now based on standard function write,
removing io.print and io.princ
using same top level exception handler for scripts as repl
2009-08-08 00:29:55 +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
0278b152b8
fixing a case where tail position was not properly observed
2009-07-21 03:42:15 +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
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
3793cf676c
implementing stack traces
...
some cleanup
2009-07-06 03:56:48 +00:00
JeffBezanson
494e439510
using lisp value stack for call frames instead of the C stack
...
adding the ability to grow the value stack as needed
the net effect is that calls use much less space, and stack frames
can use all available heap space. the only downside is that C builtins
must be aware that the stack can change out from under them if they call
lisp code. currently the only example of this is table.foldl.
also fixing bug where exceptions failed to unwind the gc handle stack.
2009-07-03 18:43:15 +00:00
JeffBezanson
2f78b407ea
some renaming (intern is now symbol) and moving stuff around
...
adding scheme aliases
2009-06-30 03:21:41 +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
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
943c0d71d1
tiny performance tweaks: removing some variables, making some static
2009-06-09 18:46:02 +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
7e59898778
updating doc
2009-05-31 22:27:37 +00:00
JeffBezanson
ba32e4b0e9
simplifying the whole list* situation, taking better advantage of
...
existing builtin functionality
2009-05-31 18:58:09 +00:00
JeffBezanson
7e65db3e74
faster append
...
removing 'equal' alias
removing some top level bindings
2009-05-30 21:13:13 +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
bfbbf051c9
doing a better job hashing circular structure. the hash function is now
...
always fast and gives conservative correct answers, at the expense of
fidelity on medium and large size structures. for example (hash (iota 15))
gives the same result as (hash (iota 14)).
2009-05-20 03:39:20 +00:00
JeffBezanson
c2026ba77c
adding gc handles, making evaluator stack static
...
this provides a better interface and could only help performance
starting to add some useful library code
2009-05-19 02:54:56 +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
e365cb1d33
adding divide by 0 check in div
2009-05-14 02:53:04 +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