moving stuff around some more
fixing a bug in character-number comparison
checking for overflow in integer literals
improved implementation of backquote
misc. updates, mostly about portability and warnings
fixing subtle bug where heapsize was set wrong at some points
fixing a 64-bit issue and a nan issue
porting over some improvements: now fl_applyn can handle any function
porting over some small changes from julia's flisp
fixes for boehm compatibility
adding interoperability with boehm gc if BOEHM_GC is defined
porting over some minor changes to LLT
fully separating femtolisp into library core and main program
factoring out startup routine for embedded use
adding fl_ prefix to some functions
porting over some small LLT fixes
adding 2 more aliases needed for gambit
adding dependency on equal.c in makefiles
putting llt_init in a separate file
clarifying which values are unspecified, and making the unspecified value
fixing some numeric typedefs to avoid conflicts in some environments
making os name symbols non-constant, so they aren't evaluated at compile time
improving portability to Mac OS
changes to support mac compilation better. patches from Stefan.
renaming - adding fl_ prefix to some more functions
adding io.peekc, top-level-bound? (alias)
renaming backquote-related symbols to scheme style
adding => form of cond clauses
adding *print-level* and *print-length*
changing semantics to respect lexical scope more strictly; now
fixing bug in with-input-from-file
adding support for eof-object
adding gensym?, fixing keyword?
adding offset and count arguments to io.write
adding functions io.copy, io.readall, time.fromstring
adding read and print support for named characters, e.g. #\space
adding with-bindings, with-output-to-file, with-output-to
better error checking for formal argument lists
finishing initial implementation of keyword arguments
fixing a bug in optional args + rest args with no required arguments
fixing use of an undefined behavior that was breaking compiles occasionally
changing optional args to allow default values to be computed from
adding support for optional arguments
adding some combined instructions and teaching the compiler to emit them:
adding io.pos, io.readlines, read-all
making long argument lists more efficient
fixing a case where tail position was not properly observed
simplifying code by eliminating the hybrid stack/heap calling convention
rewriting some primitives to take advantage of the full language; they
changing boot file format; the old one did not preserve sharing
keeping track of function names, printing nice stack traces
adding functions max and min
using lisp value stack for call frames instead of the C stack
some renaming (intern is now symbol) and moving stuff around
adding the ability for the VM to use computed goto where available
adding maxstack calculation and stack overflow protection
optimizations to map and case
tiny performance tweaks: removing some variables, making some static
adding opcodes loada0, loada1, loadc00, loadc01
implementing support for lambdas with up to 2^32-1 required arguments
some renaming and reorganizing
simplifying the whole list* situation, taking better advantage of
making copy-list a builtin, since the functionality was there anyway.
fixing bug in cond when condition wasn't followed by any forms
allowing multiple expressions in lambda
fixing bug printing functions involved in cycles
made cons hashing tail recursive on cdrs
fixing hash function to do a better job on long lists.
doing a better job hashing circular structure. the hash function is now
adding gc handles, making evaluator stack static
adding R6RS div, mod, div0, mod0
adding divide by 0 check in div
adding integer division function div
fixing hash of circular structure to avoid tree recursion (very important!!)