Commit graph

233 commits

Author SHA1 Message Date
Derick Eddington
14c99c4729 fixing identifier comparison bugs 2009-12-06 21:34:30 -08:00
Alex Shinn
f969364176 adding initial macroexpand utility
This expands an expression and gives you an sexp representation
of the resulting ast, renaming symbols when there are conflicts.
It doesn't guarantee the minimum number of renames (neither in
terms of renamed bindings nor renamed instances) but tries to be
minimal and does guarantee no renames if there are no conflicts.

This is just for debugging purposes - chibi itself directly
uses the AST without renaming or doing anything like this.
2009-12-06 23:17:37 +09:00
Alex Shinn
bb804f8062 fixing path of loop.scm 2009-12-06 17:42:16 +09:00
Alex Shinn
0efd491c24 fixing nested let-syntax hygiene, simplifying error handling
also providing better errors in some cases, and exiting with
a non-zero status on script errors
2009-12-06 17:40:50 +09:00
Alex Shinn
01f21cc905 adding initial ast module 2009-12-05 19:05:41 +09:00
Alex Shinn
d67e8b46aa makefile fixes from derick eddington 2009-12-05 18:54:04 +09:00
Alex Shinn
9ed0d705c6 adding type checking to disasm
Fixes issue #8:
http://code.google.com/p/chibi-scheme/issues/detail?id=8

Note disasm is likely to be moved out of the core soon.
2009-12-05 18:13:01 +09:00
Alex Shinn
fa879e183c removing errx on failed heap allocation 2009-12-05 18:07:41 +09:00
Alex Shinn
35776a2bc3 removing small maximum heap size from testing 2009-12-05 17:39:27 +09:00
Alex Shinn
035aa7005c no longer exit(2)ing on OOM, pre-allocating a global OOM exception 2009-12-05 17:34:27 +09:00
Alex Shinn
5d2f5912ce adding parent links to cpointers to prevent freeing shared structures 2009-12-05 17:17:55 +09:00
Alex Shinn
6bd1bd3687 adding directory-files to posix module 2009-12-02 03:51:39 +09:00
Alex Shinn
b49153dfdf adding time_t type handling to stubber, with 2010 "chibi" epoch 2009-12-02 03:13:04 +09:00
Alex Shinn
a3578d1ef8 going slightly overboard in auto-generating the correct indefinite article 2009-12-02 02:09:48 +09:00
Alex Shinn
f9e67daf43 adding initial stubber with partial posix and net modules 2009-11-30 04:07:57 +09:00
Alex Shinn
ce9bc2edeb minor bignum bugfixes 2009-11-30 01:10:15 +09:00
Alex Shinn
d0aa8de1e6 adding basic finalizer functionality 2009-11-28 18:27:42 +09:00
Alex Shinn
532a717ed9 using relative paths for include files 2009-11-28 17:44:47 +09:00
Alex Shinn
574b1daa32 using include-shared for shared object files for portability 2009-11-28 17:27:01 +09:00
Alex Shinn
0746c445ed type checking on load, better error message for missing includes 2009-11-28 16:49:31 +09:00
Alex Shinn
353594a028 fixing some 64-bit bignum arithmetic cases 2009-11-28 16:05:59 +09:00
Alex Shinn
025aae80d6 adding tree search patterns to (chibi match) 2009-11-25 22:46:38 +09:00
Alex Shinn
f74fcbce29 adding (command-line-arguments) 2009-11-23 03:54:29 +09:00
Alex Shinn
cca25351fe adding srfi-98 2009-11-23 02:42:03 +09:00
Alex Shinn
671b983214 adding (chibi match) module 2009-11-23 02:07:05 +09:00
Alex Shinn
8481f543a9 cleanup, making infinities optional, fixing build for plan9 2009-11-23 01:54:22 +09:00
Alex Shinn
66bd9a52bb no more globals!
Each contexts keep a link to the heap which it is a part
of (when using the native GC), as well as a vector of
special globals that it needs quick access to (e.g. the
`quote' and `quasiquote', etc. symbols.  You can use this
to manage multiple completely unrelated VMs in the same
application, and everything will be thread-safe.

The old behavior is still available by editing config.h,
which now includes somewhat better descriptions of all
the settings.
2009-11-23 01:13:42 +09:00
Alex Shinn
3a55e2b6f3 moving debug.c to opt/ dir 2009-11-22 18:20:24 +09:00
Alex Shinn
bb251082f6 fixing a small bug that missed some tail-recursion cases 2009-11-22 18:14:46 +09:00
Alex Shinn
3a47a903e8 disasm defaults to printing to (current-error-port) 2009-11-22 17:54:45 +09:00
Alex Shinn
636e9d75c0 adding #! as a line-comment to support unix scripts 2009-11-18 01:11:28 +09:00
Alex Shinn
3ecea4d666 adding define_foreign_opt to bind C functions with optional parameters
moving several opcodes to normal FFI functions, considering
doing the same for all I/O opcodes.
2009-11-16 04:04:23 +09:00
Alex Shinn
0581b41b1e adding hash-tables and a more friendly FFI 2009-11-16 00:52:16 +09:00
Alex Shinn
311c567c06 making EQUAL? comparison data-driven
all native types, present and future, now supported.
allows for distinguishing which slots should be used
for comparison (e.g. source info of pairs isn't compared).
2009-11-15 18:45:08 +09:00
Alex Shinn
6db4ed9155 removing strndups 2009-11-11 01:43:47 +09:00
Alex Shinn
edd08d6740 adding srfi-9 based on native types 2009-11-11 01:27:20 +09:00
Alex Shinn
f53e4df208 adding support for runtime definition of new types 2009-11-10 21:50:59 +09:00
Alex Shinn
f9b50ba909 renaming env_define to sexp_env_define since it's a public API 2009-11-05 20:51:35 +09:00
Alex Shinn
1cdd7edfa5 adding support for dynamic loading shared libraries
load now recognizes ".so" files and loads them with dlopen,
then calls sexp_init_library(ctx, env) from that library.
2009-11-05 20:41:01 +09:00
Alex Shinn
58a6724dea setting correct top in sexp_apply 2009-11-05 18:54:25 +09:00
Alex Shinn
9c128c49fa removing unintended immutability check from OP_STRING_REF 2009-11-05 06:54:52 +09:00
Alex Shinn
6afc9f964d stripping syntactic-closures in syntax-rules error messages 2009-11-03 12:57:38 +09:00
Alex Shinn
520c660347 installing config file, fixing installed module search path 2009-11-03 12:54:06 +09:00
Alex Shinn
eafd40c193 adding some handy syntax modules 2009-11-03 01:44:36 +09:00
Alex Shinn
99dd2b98e1 reporting better error for unmatched syntax-rules patterns 2009-11-03 01:05:22 +09:00
Alex Shinn
c1e8606c01 forgot to push config file 2009-11-03 01:04:53 +09:00
Alex Shinn
44d0156c80 better type checking in the VM
Fixes http://code.google.com/p/chibi-scheme/issues/detail?id=5
Some non-opcode primitive functions may still need type checking.
2009-11-02 23:52:19 +09:00
Alex Shinn
c4625e1c86 fixnum/integer naming cleanup
Replacing sexp_make_integer, sexp_integerp, etc. with sexp_make_fixnum,
sexp_fixnump, etc.  Defining the old names as variants handling either
fixnums or bignums, or just as aliases for the new terms when compiled
without bignum support.  sexp_make_integer needs to take a context now
in case it generates a bignum.
2009-11-02 23:39:42 +09:00
Alex Shinn
5b14a3a19d adding todo list 2009-11-02 01:31:23 +09:00
Alex Shinn
576a20b3bc simplifying gc variable preservation
Adding sexp_gc_var1..6 and corresponding _preserve/release1..6
referring to fixed preservation variable names, to substantially
reduce the boilerplate on C functions which produce temporary sexp
values.  The fixed variable names are safe because we never nest
them within the same C function.  The original macros are still
available for manual naming, block local variables and cases of
more than 6 gc vars.

Consider combining var+preserve into a single macro, since splitting
them is rare.
2009-11-01 19:48:30 +09:00