Unnamed Fossil Project

Timeline
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

50 most recent timeline items

2014-07-13
20:17
[b291ad2347] Leaf: Add vector-set! (user: martin, tags: trunk)
2014-07-12
02:17
[dc5c23792e] Add vector and vector-ref primitives. (user: martin, tags: trunk)
01:50
[df3488f125] Add knowledge of vectors to GC (user: martin, tags: trunk)
01:42
[5dc48473df] Work on adding vectors. (user: martin, tags: trunk)
2014-07-11
03:42
[c177552a27] Add comments and fix typos. (user: martin, tags: trunk)
2014-04-03
04:50
[712cbde540] Replace ADD_SPEC() and ADD_PRIM() macros with add_special() and add_primitive() functions. (user: martin, tags: trunk)
2014-04-01
06:58
[c4b290d63b] Add t_sexp accessor functions equivalent to the macros currently used. (user: martin, tags: trunk)
2014-03-31
21:48
[cb4e96f337] Bump CONF_SYMBOL_TABLE_SIZE to 509. (user: martin, tags: trunk)
20:38
[256a08c5d1] Add boolean type and use Scheme style #t/#f/() rather than CL style t/nil. (user: martin, tags: trunk)
05:04
[0d9d2b515a] PRIMITIVES_H -> PRIMITIVE_H in primitive.h (user: martin, tags: trunk)
04:41
[2b0c6d2de6] Add IS_TRUE(); move eq()/eqv()/equal() from primitives.c to types.c and rename them with sexp_ prefix. (user: martin, tags: trunk)
01:49
[349218d1a6] Add error primitive. (user: martin, tags: trunk)
01:37
[50db7645f1] Lose enum sexp_error_type. (user: martin, tags: trunk)
01:30
[db6d27e7ad] Work on tests a bit. (user: martin, tags: trunk)
2014-03-29
22:00
[b586b0ec06] Add prim_write(); Get test_display() working without output to stdout; display() -> output() + sexp_display() and sexp_write() as wrappers for it. (user: martin, tags: trunk)
17:47
[0514112be4] Add IS_OUTPUT_FILE() and IS_INPUT_FILE() (user: martin, tags: trunk)
17:15
[d74d629074] display() takes a t_file argument, prim_display() takes it optionally. (user: martin, tags: trunk)
03:36
[b3f4febbf8] Comments/whitespace. (user: martin, tags: trunk)
2014-03-27
13:43
[aa085c9d76] Handle nil after dot, lose read_string(), read_symbol(), and try_as_number(), more descriptive errors, more comments. (user: martin, tags: trunk)
06:20
[972c4c3891] Whitespace and a comment. (user: martin, tags: trunk)
05:53
[034b668672] More documenting and some reorganizing for parse.c, parse_list() now does all the work to make sure lists don't contain TOK_ERROR. (user: martin, tags: trunk)
2014-03-26
05:47
[a0e4c42a5b] Add comments for procedures in hash_table.c (user: martin, tags: trunk)
2014-03-25
11:28
[caf71bf429] spec_read() -> prim_read(); spec_display() -> prim_display(). (user: martin, tags: trunk)
06:54
[567ffebed9] t_state's have in/out/err members for stdin/stdout/stderr SEXP_FILEs; spec_read/sexp_read_file default to ts->in if not given an arugment. (user: martin, tags: trunk)
01:48
[5316bfaff9] Start adding SEXP_FILE. (user: martin, tags: trunk)
2014-03-24
23:39
[eb56028456] +comments for eval.c (user: martin, tags: trunk)
22:56
[5b62b16fe6] Get rid of -Wno-switch-enum in Makefile. (user: martin, tags: trunk)
2014-03-23
11:06
[a2831444ef] Teach display() about errors; make_symbol() always tries to add to the symbol table; symbol_table_remove() checks that it's only going to remove the _exact_ symbol it was told to, not one that just happened to be string=?; Break up primitive_tests() into several subroutines, each calling gc_collect(), which exposed the problem with symbol_table_remove(). (user: martin, tags: trunk)
2014-03-22
11:03
[9226867fa2] TCO for closures & if. (user: martin, tags: trunk)
10:24
[327ac4b3b0] May as well let the allocator handle nil. (user: martin, tags: trunk)
10:20
[5d26f6e96c] Work towards general tail calls. (user: martin, tags: trunk)
09:45
[2e55cbca6f] Change do...while with for loop; Minor tweak to prim_cons, it cannibalizes the argument list it receives instead of calling make_pair(). (user: martin, tags: trunk)
08:56
[41ab6a6987] Add unary - for negation. (user: martin, tags: trunk)
07:41
[1b0158aef8] Add cons/list/car/cdr + more tests. (user: martin, tags: trunk)
06:25
[9d42b12ecc] Rename eq->eq? eqv->eqv? equal->equal? set->set!; Add t and nil symbols to global env in make_t_state(); Add a make_env() to env.c and use it for make_t_state(). (user: martin, tags: trunk)
03:40
[7f4f6fd7fb] More assertations; eval/apply display error and abort if they see a SEXP_ERROR; Lose t_args typedef; Add a true value (ts->t); Add load_primitives() to give a useful global env to a t_state; Add equality primitives (eq?/eqv?/equal?/not) and the other basic arith primitives (-/*///%); make_symbol()/make_string() can take 0 as length to tell them to memcpy the string they're given. (user: martin, tags: trunk)
2014-03-21
21:26
[0eec12cc5b] Add predicate macros for types (IS_FIXNUM(), IS_PAIR(), etc...) (user: martin, tags: trunk)
2014-03-20
14:36
[b3a57384e1] Get spec_eval working and since quote/define/if/set/lambda are at least functional, tag it r0.0.1 (user: martin, tags: trunk, r0.0.1)
12:03
[a4948b9133] Add tests for 0-arg and multiple arg closures; Fix parse() to handle nils in lists. (user: martin, tags: trunk)
08:27
[d12c571f89] Define and apply a closure. NOW we have all 5 basic ops. (user: martin, tags: trunk)
08:21
[c0238cdc73] Created and returned first closure. (user: martin, tags: trunk)
08:12
[d6fbf853c0] Add display.[ch] and spec_display() in primitives.c, and notice I never got around to testing closures. :) (user: martin, tags: trunk)
06:15
[ca4174da51] Rework envs to get define primitive working. They are now a list of frames, 'frame' being an a-list. ts->global_env now initializes to (nil . nil), an environment with a single empty frame. We also now have working 'set!', and with it all 5 basic ops. (user: martin, tags: trunk)
2014-03-19
20:31
[ae96e95e38] More tests, for quote and if. (user: martin, tags: trunk)
19:23
[32b72d0ba2] Start implementing/testing special forms. (user: martin, tags: trunk)
18:45
[968f23edc3] Lose make_primitive_[012]() and apply_primtitive(), there is just make_primitive() now; Same for special forms, and their C procedures take pointer to env now; Kill some trailing whitespaces. (user: martin, tags: trunk)
08:43
[f7ee91d923] Actually that was (t_state *, t_env *, t_closure *, t_list *) but now it's t_args. And snip a few more 'struct sexp *'s. (user: martin, tags: trunk)
08:35
[5405689a66] Typedefs for struct sexp and all of its variations as well as t_state with names all beginning with t_ (the _t suffix is reserved by POSIX) so things like prototypes can be shorter and more descriptive. E.G. (struct t_state *, struct sexp *, struct sexp *, struct sexp *) => (t_state *, t_env *, t_closure *, t_args *) (user: martin, tags: trunk)
05:48
[8b0873e821] apply_closure()/apply_primitive() also take env now; Try to make apply_closure handle local tail calls. (user: martin, tags: trunk)
03:07
[1e2387f4d8] Prims need t_state, read.c needs to use symbol tables again, some cleanups and, of vastly more importance, (+ 2 2) => 4 ! (user: martin, tags: trunk)