mikelisp

Current Code

Versions

mikelisp-2.4.tar.gz (patch)
Changed behavior of mul() when sizeof(long)==sizeof(long long).
Compensated for recent brain damage in GCC.
mikelisp-2.3.tar.gz (patch)
Fixed typos in documentation.txt.
mikelisp-2.2.tar.gz (patch)
Fixed typos in documentation.txt.
mikelisp-2.1.tar.gz (patch)
Added extras/lexical.lisp.
mikelisp-2.0.tar.gz
Complete rewrite.
mikelisp-1.10.tar.gz (patch)
Deleted isasciip, isdigitp, and isspacep from builtin.c. Deleted stream? and isinlist functions from preload.lisp. Moved a bunch of functions below the (evaluate-file #preload.lisp) line. Moved member and load-file to better places in preload.lisp. Cleaned up documentation in preload.lisp. Added close-parenthesis and used it in place of '). Added isascii? and isspace? functions to preload.lisp. Changed definition of let@ to evaluate in order.
mikelisp-1.9.tar.gz (patch)
Fixed typo in debug message in unique_word. Added let@ macro. Added member function. Improved quasiquote to handle things like `(foo . ,(car bar)).
mikelisp-1.8.tar.gz (patch)
Added isinlist and bind functions. Fix: added predropobj to struct objtype so word.c can unhash words sooner. Fixed switch.
mikelisp-1.7.tar.gz (patch)
Added defined? macro. Changed #map to take a variable name to use as mapvar. Added #set. Changed #define to throw an error if the name is already defined. Changed #define to only deal with globalscope.
mikelisp-1.6.tar.gz (patch)
Modified eqv? to not need the short-circuit macro. Added #let function and let macro. Added const to char* in the store_builtin_* #defines. Removed define-local and changed define_local into real_define.
mikelisp-1.5.tar.gz (patch)
Declared tryit() static. read_object() now checks that the given stream is readable. Fixed substring()'s behavior when length<=0 or offset<0. Substring now accepts #f for length to go to the end of the string. Changed the return value of macro-define to be the macro's name. Changed dprint to allow for multiple arguments. Removed many uses of real_eqv as eqv? words are now eq?. Implemented eqv? in preload.lisp and removed it from the .h and .c's.
mikelisp-1.4.tar.gz (patch)
Removed float.c. Added args-of-func and prog-of-func functions. Removed void *p from value union in struct obj. Moved car, cdr, and cons functions from preload.lisp to cons.c. Removed CADR/CADDR/CDDR macros from lisp.h. Added per-objtype eqv? function to objtype struct. Moved real_eqv from word.c to util.c. Added eqv? support to cons.c, func.c, and quote.c. exit-loop now takes optional arguments whose progn is the loop's return value. Added unique-word function to word.c and switch macro to preload.lisp. Cleaned up Makefile.
mikelisp-1.3.tar.gz (patch)
Fixed missing incref in sub(). Fixed missing call to throwoom from cons_tostring. Changed dont-expand to dont-macro-expand in preload.lisp for clarity. Added reverse/append, reverse, append and load-file to preload.lisp. Added cars, cdrs, cadrs, cadar, let*, +, -, *, and / to preload.lisp. Fixed macro definitions of map and unless in preload.lisp. Implemented reader.c in preload.lisp and simplified reader.c greatly. The repl no longer prints the result of the evaluation if it is false. scope.c's undefined_error is now allocated at runtime. Fixed missing decref(str) in string_to_integer. Changed string_tostring to the new string quoting character (" not |). Added string_length function. Added new_string function and renamed newstring to real_new_string. Fixed missing throwoom() in real_new_string. Removed extraneous lines in catch. Alway decref exception and exceptionvalue in throw (they can't be NULL). Removed extraneous lines in newobj.c. Fixed missing throwoom() in new_word.
mikelisp-1.2.tar.gz (patch)
Removed dprint from preload.lisp. Added freelist/reuse of objects, making dropobj() an O(1) operation.
mikelisp-1.1.tar.gz (patch)
2005-07-15: General cleanup and refcount bug fix in builtin.c. newscope() now calls throwoom so callers merely need return(0). New strings are initialized to null bytes.
mikelisp-1.0.tar.gz
2005-07-13: Initial release. Has basic I/O and a "soft" repl loop (i.e., one written in lisp).

Notice

Since most people have lost all touch with reality when it comes to software, I thought I'd make the following point clear: All of this software is in the public domain. In other words, there is no license or copyright on any of this software, so you can do whatever you want with it.