Commit Graph

45 Commits

Author SHA1 Message Date
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 88d08edecc adding io.pos, io.readlines, read-all
fixing a small ios bug
2009-07-22 03:50:57 +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 2d4a0ae30e adding functions max and min
fixing make-system-image to save aliases of builtins
2009-07-08 19:07:56 +00:00
JeffBezanson e4e8d4dfdb supporting multi-arg map
fixing branch destination display in disassemble
2009-07-08 05:53:29 +00:00
JeffBezanson 3793cf676c implementing stack traces
some cleanup
2009-07-06 03:56:48 +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 91a6ae6490 adding string.width 2009-05-31 22:09:26 +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 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 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 2c212fbcf7 adding random function
fixing bug in integer?
sorting environment in make-system-image for more stable diffs
2009-05-08 02:52:25 +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 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 2bf87ede4f fixing !print_pretty on vectors 2009-04-21 21:41:32 +00:00
JeffBezanson 2cceb9e538 fixing function? and disassemble 2009-04-21 15:47:30 +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 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