Commit Graph

37 Commits

Author SHA1 Message Date
JeffBezanson 7c48f6ae53 some renaming and reorganizing
using more scheme-like names append! and reverse!
2009-05-31 21:06:04 +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 a7a31cf53a fixing vararg apply to work properly 2009-05-11 23:55:40 +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 27120b0ce4 fixing bug in truncate
simplifying nconc loop
2009-04-22 15:02:49 +00:00
JeffBezanson 291b5f86e0 fixing nconc on long argument lists 2009-04-22 01:40:10 +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 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 fe72c101e2 avoiding sprintf for error messages where possible
moving raise, logand, logior, logxor, and ash out of core
changing prog1 to a special form
2009-03-25 02:28:21 +00:00
JeffBezanson a9b0f7879b removing some unnecessary stuff
improving key-error
2009-03-23 20:44:19 +00:00
JeffBezanson 5edb75af2c making nconc, assq, and memq builtins
some small optimizations to string.map, string.trim,
string.inc, string.dec, aref
2009-03-17 03:29:17 +00:00
JeffBezanson 5681745bc3 adding apply1, using it in trycatch (avoids consing)
allowing left bit shift to overflow to larger types
fixing bug in number->string on uint64
fixing bug in rand.uint64
2009-03-13 22:26:44 +00:00
JeffBezanson d81e6c2d57 adding ash function
making more functions static
removing list_nth, using vectors for enums instead
making more operators return fixnums where possible
2009-03-11 19:16:40 +00:00
JeffBezanson 40cff81550 more reorganization of LLT
adding io.readuntil, io.readline
improvements to ios_readprep
2009-03-03 03:16:30 +00:00
JeffBezanson 0c0471e856 moving implementation of startup, repl, load, and top-level
exception handler into system.lsp

adding several iostream functions

adding support for internal define
2009-02-19 03:31:40 +00:00
JeffBezanson 79e12b2dcb adding io.print and io.princ
misc. touch-ups
2009-02-09 05:38:40 +00:00
JeffBezanson 1097597437 file stream creation and io.read 2009-02-09 03:22:31 +00:00
JeffBezanson 2c1bb59486 adding integer? and number->string
a bit more renaming
2009-02-01 05:41:43 +00:00
JeffBezanson a55b46e9a6 switching to scheme #t, #f, and () values
porting code to sort out which NILs are false and which are
empty lists

switching to scheme-style special forms. however you feel about
scheme names vs. CL names, using both is silly.

mostly switching to scheme predicate names, with compatibility
aliases for now. adding set-constant! to make this efficient.

adding null?, eqv?, assq, assv, assoc, memq, memv, member

adding 2-argument form of if
allowing else as final cond condition

looking for init file in same directory as executable, so flisp
can be started from anywhere

renaming T to FL_T, since exporting a 1-character symbol is
not very nice

adding opaque type boilerplate example file

adding correctness checking for the pattern-lambda benchmark

bugfix in int2str
2009-01-29 01:04:23 +00:00
JeffBezanson d8132ad204 adding CPRIM type, smaller representation for primitives
bug fixes in opaque type handling
2009-01-02 23:00:21 +00:00
JeffBezanson dc50df083c adding branch probability annotations
wrote a CPS transformer that can be used to provide coroutines

misc. cleanup
2008-12-28 08:01:18 +00:00
JeffBezanson b5dda68eab adding support for finalization of values
enabling type-specific print and relocate behavior

allowing GC to be triggered by large buffer allocations

adding hash table constructor and print function

renamed some functions
2008-12-20 06:16:00 +00:00
JeffBezanson 6962211e76 changing representation of cvalue types so each type is
explicitly represented in an fltype_t struct, and symbolic
types are hash-consed. a lot of code is smaller and simpler
as a result. this should allow more features in less space
(both code and data) going forward.

changing \DDD and \x escape sequences to read bytes instead of
characters

re-fixing uint64 cast bug

adding Paul Hsieh's hash function, to be evaluated later
2008-12-11 04:04:17 +00:00
JeffBezanson a4bb09bcb2 adding equalhash.c
some cleanup

moving some library code around for size optimization

now using == instead of flt_equals for float comparison, mostly
for hash compatibility
2008-11-28 21:44:59 +00:00
JeffBezanson e7e5677d51 support reading hex float literals
better text representation of infs and nans

removing construction of low-level numeric types directly from strings

adding hash function corresponding to equal

better way to initialize builtins

moving advanced bitvector ops to separate compilation unit

rearranging hash table code so it can be specialized for different
comparison functions

one good way to bloat a piece of software is to add several
ASCII pictures of the mona lisa
2008-11-23 07:12:37 +00:00
JeffBezanson c8c59b1dfc added globals *install-dir* and *print-width*, parameterized
prettyprinter by screen width

decent accumulate-while and accumulate-for
2008-09-11 02:37:38 +00:00
JeffBezanson d6470ac62f fixed array constructor so it doesn't require allocating a generic
container first

updates and improvements to ios
2008-08-29 03:27:59 +00:00
JeffBezanson 9acdf313b9 adding more ios functions
porting femtolisp to use ios for all I/O
2008-08-17 18:16:31 +00:00
JeffBezanson fa0e134dd8 adding "d.df" syntax for reading single-precision numbers
misc. fixes
more work on ios
2008-08-16 21:15:36 +00:00
JeffBezanson 62e5c359d0 adding string.inc and string.dec
moving string functions to their own file
2008-08-05 04:34:14 +00:00
JeffBezanson 46f2f47b14 switched to 3-bit type tags for simpler checking
fixnums still have 30 bits

moving towards making "guest functions" more opaque; their type is now
just 'builtin

pretty printing some forms better: defun, defmacro, for, label
support *print-pretty*
2008-08-05 01:43:12 +00:00
JeffBezanson c3811312a7 adding vector.map, string.char
fixing 0-trip-count case in (for)
2008-08-02 16:18:39 +00:00
JeffBezanson 180b05fa8e storing environment size on the stack so lambda doesn't need to
compute it. changed penv from pointer to stack index.
result is best performance yet.

fixing constantp to be true for quoted values
2008-07-18 04:16:07 +00:00
JeffBezanson 0c9010a117 import femtolisp source 2008-07-01 01:54:22 +00:00