2011-04-29 03:26 rushing * self/cps.scm: c-call(): trcall needs the correct lexical depth of the recursive function lexical-address(): return in (:top ...) 2011-04-29 03:24 rushing * self/types.scm: get-record-sig: temporarily route around a problem where moo(pre()) is showing up in the row. 2011-04-27 07:46 rushing * lib/core.scm: syscall: new function 2011-04-27 07:46 rushing * lib/aa_map.scm: tree/insert!, tree/delete!: new macros 2011-04-27 07:46 rushing * doom/socket.scm: recv-buffer: version of recv() that takes a buffer argument syscall: moved to lib/core.scm 2011-04-27 07:45 rushing * doom/scheduler.scm: use exception handling poller/wait-and-schedule: wrap kevent() with syscall() 2011-04-27 07:44 rushing * doom/echo.scm: obligatory echo server demo 2011-04-27 07:43 rushing * self/backend.scm: emit-new-env: use new-env's top? attribute to decide whether to set (tests/t24.scm) 2011-04-27 07:42 rushing * self/cps.scm: insn:new-env: add a bool to indicate whether it's a top-most environment lenv-top?: new predicate 2011-04-27 07:41 rushing * self/transform.scm: expand-set!: expand arguments first to give macros a chance. 2011-04-27 07:40 rushing * tests/t16.exp: expected output updated to match new AA tree output 2011-04-26 02:19 rushing * util/clean.py: added doom subdir 2011-04-26 02:19 rushing * doom, doom/README, doom/doom.scm, doom/fetch.scm, doom/kqueue.scm, doom/scheduler.scm, doom/socket.scm: DOOM DOOM DOOM! the kqueue-based coro scheduler. 2011-04-26 02:16 rushing * lib/core.scm: removed Scheme call/cc - it's not typesafe callcc: add type annotation to get the correct type let/cc: use the callcc version make-generator: removed original commented-out version that used call/cc base-exception-handler: new fun *the-exception-handler*: global exception handler raise: new macro try/except: new macro 2011-04-26 02:14 rushing * lib/queue.scm: queue/iterate: new fun 2011-04-26 02:14 rushing * lib/aa_map.scm: commentary about compiler bug (that's probably fixed already, need to check) 2011-04-26 02:13 rushing * tests/t14.exp: bad expected output 2011-04-26 02:12 rushing * self/match.scm: copy credit comments from the python source constructor-rule: pvariant case - add match-fail case when appropriate 2011-04-26 02:10 rushing * self/lisp_reader.scm: repr: (QUOTE a) -> 'a 2011-04-26 02:10 rushing * self/compile.scm: new option: debugmacroexpansion verbose: print table of exceptions (with types) 2011-04-26 02:09 rushing * self/backend.scm: emit-pvcase: correctly handle presence/absence of the clause 2011-04-26 02:07 rushing * self/cps.scm: c-primapp: ignore/discard hackish type-checking exception-hanlding prims 2011-04-26 02:07 rushing * self/context.scm: new option: debugmacroexpansion new context var: exceptions 2011-04-26 02:05 rushing * self/transform.scm: maybe-expand: pass options.debugmacroexpansion to macro.apply expand-lambda, exp-function: user type annotation parse-normal-definition: temp debug output for user types 2011-04-26 02:04 rushing * self/typing.scm: support for type annotations on functions support exception handling: two new prims: %exn-raise and %exn-handle new funs: get-exn-type, unify-exception-types, type-of-raise, type-of-handle type-of-primapp: check for 'special' prims 2011-04-26 02:01 rushing * self/selfmac.scm: letrec: since we use the internal form 'function' we need to supply #f for the optional type when: new macro 2011-04-26 02:00 rushing * self/nodes.scm: node/function: store optional user type annotation 2011-04-26 01:59 rushing * self/types.scm: test-types: another test 2011-04-26 01:58 rushing * self/mbe.scm: support for -m (debugmacroexpansion) 2011-04-26 01:58 rushing * self/analyze.scm: inline-application: bad arity, give the name of the function 2011-04-26 01:57 rushing * demo/kqueue.scm: expanded the demo short commentary 2011-03-28 06:42 rushing * lib/aa_map.scm: oops, debug bit slipped in 2011-03-28 06:30 rushing * lib/frb.scm: replaced with lib/aa_map.scm 2011-03-28 06:30 rushing * util/dist.py: test bootstrap before pushing the release try really hard to get a generic self/compile.c 2011-03-27 02:00 rushing * README: release note 2011-03-27 01:58 rushing * demo/kqueue.scm: more in-progress work 2011-03-27 01:57 rushing * util/dist.py: comment 2011-03-27 01:57 rushing * lib/map.scm: use tree/empty constructor 2011-03-27 01:57 rushing * lib/symbol.scm: use tree/empty constructor 2011-03-27 01:57 rushing * lib/basis.scm: frb.scm => aa_map.scm 2011-03-27 01:56 rushing * tests/t16.scm: frb.scm => aa_map.scm 2011-03-27 01:56 rushing * tests/t16.scm: tree/print => tree/dump (which is moved to the library file) use the tree/empty constructor 2011-03-27 01:55 rushing * self/lisp_reader.scm: frb.scm => aa_map.scm 2011-03-27 01:55 rushing * self/compile.scm: trace option "-t" 2011-03-27 01:54 rushing * self/backend.scm: partially implement trace/-t option 2011-03-27 01:54 rushing * self/context.scm: vars-get-var: remove debug print make-context: use tree/empty constructor options: add 2011-03-27 01:53 rushing * self/nodes.scm: use tree/empty constructor 2011-03-27 01:53 rushing * self/analyze.scm: use tree/empty constructor 2011-03-27 01:53 rushing * self/graph.scm: use tree/empty constructor 2011-03-27 01:50 rushing * demo/frb.scm: commenting on the move 2011-03-27 01:49 rushing * lib/aa_map.scm: map based on Andersson trees 2011-03-27 01:46 rushing * lib/frb.scm: tree/empty: constructor fun tree/dump: util to dump tree structure 2011-03-24 07:56 rushing * lib/core.scm: %getcc/%putcc: are now primops, detected by analyze.scm. This lets us get rid of the '^'-prefix no-inline hack, and also use the more efficient version of let/cc. 2011-03-24 07:55 rushing * tests/t_stack0.exp: new error output 2011-03-24 07:55 rushing * tests/t_letcc.scm: simpler test 2011-03-24 07:54 rushing * tests/t_nth.exp: new error output 2011-03-24 07:54 rushing * self/compile.scm: notification of the cps pass 2011-03-24 07:54 rushing * self/backend.scm: move: convenient function to catch dead and useless moves %getcc, %putcc: new prims 2011-03-24 07:53 rushing * self/context.scm: VFLAG-GETCC: new flag 2011-03-24 07:53 rushing * self/typing.scm: %getcc/%putcc: prims that we can detect 2011-03-24 07:52 rushing * Makefile: semi: semi-clean leaves compiler executable 2011-03-24 07:51 rushing * util/clean.py: 'semi-clean': leaves self/compile executable 2011-03-24 07:48 rushing * self/analyze.scm: removed comment about inefficient var flag lookup find-recursion: watch for use of %getcc/%putcc and set flag inline: don't inline funs that use %getcc/%putcc 2011-03-24 07:42 rushing * tests/t16.scm: extra print: failed exp 2011-03-24 00:48 rushing * lib/posix.scm: posix stuff 2011-03-24 00:47 rushing * lib/core.scm: suggest the use of with make-generator 2011-03-24 00:46 rushing * self/backend.scm: avoid "r0 = r0" 2011-03-24 00:46 rushing * tests/t_samefringe0.scm: same-fringe! 2011-03-23 23:11 rushing * self/lisp_reader.scm: read-record: more useful error message 2011-03-23 22:26 rushing * self/selfmac.scm: forever: new 2011-03-23 22:25 rushing * lib/core.scm: magic: just like ocaml's Obj.magic. 2011-03-23 22:24 rushing * lib/queue.scm: queues, based on ocaml/stdlib/queue.ml 2011-03-23 22:24 rushing * lib/basis.scm: lib/queue.scm 2011-03-23 03:11 rushing * self/analyze.scm: follow-aliases: use the last name in the chain, in order to catch the '^' on the front of ^call/cc. 2011-03-21 00:47 rushing * util/bootstrap.py: trying to make a version that will run on windows 2011-03-21 00:47 rushing * lib/os.scm: moved to posix.scm 2011-03-21 00:06 rushing * util/dist.py: removed html changelog stuff 2011-03-21 00:04 rushing * util/bootstrap.py: emit flags into self/flags.scm 2011-03-21 00:03 rushing * lib/io.scm: read: broken error logic 2011-03-21 00:03 rushing * self/context.scm: context.cverbatim: allow bits of C code to be output verbatim vars-get-var, add-var: use symbol-indexvec16: disabled for now sort.merge: optimize-nvcase NYI 2011-03-17 20:31 rushing * lib/core.scm: make-vec16: disabled for now error funs: use %exit prim pair-first => pair->first maybe?: new 2011-03-17 20:29 rushing * lib/os.scm: cnull? getenv, uname: new 2011-03-17 20:29 rushing * lib/alist.scm: alist/length: new 2011-03-17 20:28 rushing * lib/frb.scm: iterators should return #u, not bool tree/size: new tree/keys, tree/values: get a list of each 2011-03-17 20:27 rushing * lib/io.scm: let* => let: new compiler don't know no let* 2011-03-17 20:27 rushing * lib/string.scm: let* => let: new compiler don't know no let* int->oct-string: new fitem: new 'repeat' formatter sys: moved to lib/os.scm copy-cstring: evacuate a C string strlen: for a cstring 2011-03-17 20:26 rushing * lib/stack.scm: top(): new method 2011-03-17 20:25 rushing * lib/symbol.scm: symbols now have an index attribute symbol->index: get the index of a symbol intern-symbol, string->symbol: use the size of the symbol table for the index symbol-index function 2011-03-17 20:19 rushing * tests/t_argv.scm: sys is now in os 2011-03-17 20:19 rushing * tests/t_literal9.scm: commented includes 2011-03-17 20:19 rushing * tests/t_symbols1.scm: check that symbol indices are working correctly 2011-03-17 20:19 rushing * tests/f_value_rest.scm: commented tweaks 2011-03-17 20:18 rushing * tests/t18.scm: irken mode line? 2011-03-17 20:18 rushing * tests/t16.scm: n-random, tree-print: rewritten with pattern matching 2011-03-17 20:17 rushing * tests/f_datatype.scm: list datatype built in 2011-03-17 20:17 rushing * tests/t_literal8.scm: updated 2011-03-17 20:16 rushing * self/lisp_reader.scm: read-string: forgot \r / #\return 2011-03-17 20:16 rushing * self/compile.scm: gcc: don't push -m64 on everyone, it breaks on 32-bit machines get-options: simple option processing verbose: macro to ease implementation of -v 2011-03-17 20:15 rushing * self/backend.scm: wrap-in: handle one type at a time, like wrap-out wrap-in, wrap-out: handle 'buffer' types irken-type->c-type: render an irken type in C syntax emit-varref, emit-varset: implement the 'top' feature emit-primop: %callocate, %exit, %cget, %cset lookup-cast: find a supported cast emit-move: don't emit r1=r1 emit-constructed: emit the new index slot when making symbols 2011-03-17 20:11 rushing * self/cps.scm: (:cexp), (:primop): store the solved type in the insn lexical-address: implement the (:top)-of-the-env feature %cset: new primop, hack here to override solved type with a 'casting' type. 2011-03-17 20:09 rushing * self/context.scm: options record, lives in context. dep-graph now uses the map-maker 2011-03-17 20:08 rushing * self/README: tell how to bootstrap 2011-03-17 20:07 rushing * self/selfmac.scm: symbol: add an 'index' attribute 2011-03-17 20:07 rushing * self/typing.scm: new prims: %callocate, %exit, %cget, %cset 2011-03-17 20:07 rushing * self/analyze.scm: always inline ((lambda () ...) ...) 2011-03-17 20:06 rushing * self/mbe.scm: angle-bracket-equal? reversed logic 2011-03-17 20:05 rushing * self/graph.scm: symbol-set-class: faster sets of symbols 2011-03-08 20:38 rushing * self/match.scm: noise 2011-03-08 20:38 rushing * self/compile.scm: suppress CPS output 2011-03-08 20:38 rushing * self/cps.scm: don't need to see free regs any more 2011-03-08 20:38 rushing * self/typing.scm: noise 2011-03-08 20:38 rushing * self/analyze.scm: safe-nvget-inline: tyop in '%nvget 2011-03-08 20:13 rushing * self/match.scm: instrumentation record-rule: implemented constructor-rule: handle pvariants as well 2011-03-08 20:12 rushing * self/lisp_reader.scm: oct-map: new delimiter? => delim? read-atom: rewritten as a state machine read(): %method syntax ('::') read-oct-int: new sexp->int: new unread etc: removed (use repr and pp) 2011-03-08 20:07 rushing * self/compile.scm: getenv-or: check for an env variable or provide a default gcc: check for CC and CFLAGS, platform, try to build a good gcc invocation main: tweaks. need a 'verbose' flag so I can stop commenting things in and out 2011-03-08 20:06 rushing * self/backend.scm: encode-immediate: new wrap-in, wrap-out: handle a few more types emit-litcon: new emit-cexp: handle non-arrow sig get-uotag, get-uitag: handle overrides for builtin types emit-primop: %make-vector, %array-ref, %array-set, %record-set emit-pvcase: new emit-constructed: new c-string-safe: new char->oct-encoding: new c-string: new emit-lookup-field: new 2011-03-08 20:02 rushing * self/cps.scm: cpsenv:reg: needs a name field! insn:pvcase new insn safe-for-let-reg: new compile: try either c-let-reg or c-let-splat c-let-splat: flag as allocating c-literal: emit litcon where appropriate lexical-address: register-rib lookup c-primapp: %vcon, %rset collect-primargs: sort args by size c-let-reg: new c-pvcase: new c-vcon: new 2011-03-08 19:58 rushing * self/context.scm: context: funs, cincludes, literals, literal-ids, symbols, variant-labels: new slots 2011-03-08 19:58 rushing * self/transform.scm: maybe-expand: convert %method syntax to method calls (via 'o'). this will be changed. expand-vcase: handle nvcase and pvcase expand-match: the 'match' special form expand-%nvcase: hack to avoid mysterious double expansion from somewhere prepend-standard-macros: new 2011-03-08 19:55 rushing * self/typing.scm: lots of instrumentation build-type-scheme: oops, add a generic if it does *not* occur free type-of-pvcase: new lookup-primapp: new schemes for %make-vector, %array-ref, %array-set, %ensure-heap, %rset, %vcon. 2011-03-08 19:53 rushing * self/selfmac.scm: symbol datatype 2011-03-08 19:53 rushing * self/nodes.scm: function?, function->name: new nvcase: added arities field NFLAG-NFLAGS: keep track of how many flags there are sort-fix-inits: two implementations walk: filled out. comment about typing problem. apply-substs: shadow function formals! 2011-03-08 19:49 rushing * self/types.scm: parse-arrow-type: reverse args is-pred?: new bool-type: not a 'base' type any more parse-field-list: new 2011-03-08 19:48 rushing * self/mbe.scm: angle-bracket-equal?: literal symbols in macros 2011-03-08 19:48 rushing * self/analyze.scm: find-leaves: implemented set-multiplier: implemented follow-aliases: follow chains of var defs analyze: all the analysis in one function, so we can repeat do-one-round: analyze, dep-graph, trim, simple, inline, simple 2011-03-08 19:45 rushing * self/graph.scm: build-dependency-graph: allow for repeated invocation node:varset: don't forget to search node.subs 2011-02-21 00:21 rushing * tests/t_string1.scm: tests out-of-range error 2011-02-21 00:20 rushing * cps.py: safe_for_tr_call: note a possible redundancy 2011-02-21 00:20 rushing * lib/pair.scm: index-eq, slice: new funs 2011-02-21 00:19 rushing * lib/core.scm: bit-get, bit-set: new funs error: more obvious output callcc/letcc: sml-nj style versions pair-first, pair-second: utility funs 2011-02-21 00:18 rushing * lib/frb.scm: tree/insert! macro 2011-02-21 00:18 rushing * lib/string.scm: string-ref, string-set!: added range-checks pad,lpad/rpad/cpad: new formatting functions simplified the format macro 2011-02-21 00:17 rushing * tests/t_letcc.scm: put tests into a function 2011-02-21 00:16 rushing * tests/t_format.scm: tests rpad/lpad/cpad 2011-02-21 00:16 rushing * nodes.py: removed unused flag and constructor attributes 2011-02-21 00:16 rushing * analyze.py: removed bad comment 2011-02-21 00:15 rushing * self/match.scm: use macro when possible 2011-02-21 00:15 rushing * self/README: should define an error datatype 2011-02-21 00:15 rushing * self/transform.scm: use macro when possible removed some debug prints expand-vcase: don't bind '_' variables 2011-02-21 00:13 rushing * self/typing.scm: removed some debug prints lookup-primapp: added rmake/rextend/raccess 2011-02-21 00:13 rushing * self/lisp_reader.scm: use macro when possible 2011-02-21 00:12 rushing * self/nodes.scm: node flags implemented varref->name node=>make-node: cut down on confusion unpack-fix: utility fun node-copy, flags-repr, indent-off: new funs rename-variables: rename functions, handle fix & let 2011-02-21 00:11 rushing * self/backend.scm: testcexp: optimized conditional emit-tail: use label for known functions emit-alloc: two different kinds of tags guess-record-type: new fun emit-primop: new prims test code moved to compile.scm 2011-02-21 00:09 rushing * self/cps.scm: lotsa work 2011-02-21 00:07 rushing * self/types.scm: fixed the row predicate funs get-record-sig, get-record-sig-sexp: new funs 2011-02-21 00:06 rushing * self/context.scm: added several fields to the context object implementation of the variable 'database': flags & counts 2011-02-21 00:05 rushing * self/analyze.scm: analyze.py in irken 2011-02-21 00:05 rushing * self/selfmac.scm: macros/etc for self-hosted irken 2011-02-21 00:04 rushing * self/compile.scm: moved code from backend.scm::test() 2011-02-21 00:04 rushing * self/graph.scm: build-dependency-graph: store into context object 2011-02-20 02:48 rushing * gc.c: removed a lot of commented-out prints 2011-02-17 05:19 rushing * match.py: record.__repr__(): forgot to accumulate sub-expressions record_rule(): prefix new variables to old variables correctly, don't just forget vars[1:] 2011-02-15 01:08 rushing * tests/t_nth.exp: *** empty log message *** 2011-02-15 01:05 rushing * run_tests.py: correctly failed tests should count as a success 2011-02-15 01:05 rushing * gc.c: use horrid PRIuPTR macro for printing pxll_int's. 2011-02-15 01:05 rushing * header.c: use horrid PRIuPTR macro for printing pxll_int's. 2011-02-15 01:04 rushing * transform.py: expand_colon, expand__percentmethod: method-invocation syntax don't 'construct' a no-arg %dtcon, leave it as an immediate 2011-02-15 01:02 rushing * graph.py: comments/debug-output to help port to irken 2011-02-15 01:01 rushing * backend.py: wrap_in: simplified 2011-02-15 01:00 rushing * cps.py: safe_for_tr_call: we can only use the trcall hack when we know exactly what the stack looks like above us. escaping funs do not provide that guarantee. 2011-02-15 00:59 rushing * context.py: funsizes 2011-02-15 00:59 rushing * tests/f0.scm, tests/t_callbug.scm, tests/t_collect.scm, tests/t_explode.scm, tests/t_explode0.scm, tests/t_fold_alist.scm, tests/t_for_range.scm, tests/t_graph.scm, tests/t_letcc.scm, tests/t_match13.scm, tests/t_match3.scm, tests/t_match_pvariant.exp, tests/t_pack.scm, tests/t_pop.scm, tests/t_pv1.scm, tests/t_read_file0.exp, tests/t_read_file0.scm, tests/t_recursive.scm, tests/t_set2.scm, tests/t_stack0.exp, tests/t_stack0.scm, tests/t_stack2.scm, tests/t_string_find0.scm, tests/t_string_join.exp, tests/t_while.scm, tests/t_y.scm: new tests 2011-02-15 00:55 rushing * self/match.scm: match compiler 2011-02-15 00:55 rushing * self/graph.scm: dependency graph, strongly-connected-components, reorder-fix 2011-02-15 00:54 rushing * irken.el: scheme-indent-match other indent-function hints 2011-02-15 00:53 rushing * lib/os.scm: for stuff like system 2011-02-15 00:53 rushing * lib/stack.scm: stack object 2011-02-15 00:53 rushing * lib/basis.scm: kitchen sink 2011-02-15 00:52 rushing * lib/set2.scm: closer to a real object, unfort typer gets confused 2011-02-15 00:52 rushing * lib/alist2.scm: closer to a real object, unfort typer gets confused 2011-02-15 00:52 rushing * lib/alist.scm: redoing the object yet again. and it will be redone at least once more 2011-02-15 00:51 rushing * lib/pair.scm: reverse-onto: pattern-matching version first, second, last: new list funs remove-eq: new fun remove-eq!: new macro map-range: new macro filter: new fun for-each2: new fun some->some? every->every? every2?: new fun pack: new fun sort.merge: fixed match compiler issue 2011-02-15 00:49 rushing * lib/core.scm: error: one %%cexp, not two error2: like a type error. probably should get rid of this. getcc, putcc: implemented as macros to avoid problems with -ni let/cc: new macro 2011-02-15 00:48 rushing * lib/io.scm: file/open-write: don't forget O_TRUNC 2011-02-15 00:48 rushing * lib/string.scm: string-find: new formatl: joins, p keywords 2011-02-15 00:47 rushing * lib/derived.scm: go back to non-strict version of letrec - we were losing all trcalls! while, for-range: new macros 2011-02-15 00:46 rushing * pxll.h: include inttypes for whacky int64 macros 2011-02-15 00:46 rushing * itypes.py: removed debugging crap removed moo_var - not needed moo(): use normal tv 2011-02-15 00:46 rushing * tests/t_string_join.scm: tests one-item join 2011-02-15 00:45 rushing * tests/f_anno1.scm: need bool datatype 2011-02-15 00:45 rushing * tests/t_format.scm: test join keyword 2011-02-15 00:45 rushing * tests/f_match6.scm: need bool datatype 2011-02-15 00:44 rushing * tests/t_datatype6.scm: extra foo/bar tests 2011-02-15 00:43 rushing * typing.py: unify_moo(): simplified apply_subst_to_type(): tweaked moo 2011-02-15 00:41 rushing * nodes.py: apply_substs.walk(): follow chains of replacements correctly 2011-02-15 00:40 rushing * analyze.py: optimize_nvcase(): be smarter about which arms of a variant have already been tested 2011-02-15 00:39 rushing * mbe.py: gen_syms(): $ syntax, replace vars in output using gensym 2011-02-15 00:38 rushing * self/transform.scm: wrap-fix, wrap-begin, wrap-definitions: new functions expand-vcase make-nvget datatype/alt objects revamped, will have to rewrite again parse-define 2011-02-15 00:37 rushing * self/typing.scm: Huet's unification algorithm, union-find more typing functions 2011-02-15 00:36 rushing * self/lisp_reader.scm: new repr/print-related functionality sexp->symbol field=? sexp=? sexp1 repr pp pp-size 2011-02-15 00:35 rushing * self/nodes.scm: cexp, let, fix, subst, primapp, nvcase nodes apply-substs 2011-02-15 00:34 rushing * self/backend.scm: more insns, more output substitute into the header file emit register declarations & in/out funs invoke gcc 2011-02-15 00:33 rushing * self/cps.scm: more insns 2011-02-15 00:33 rushing * self/types.scm: simpler type; using only tvar & pred support for Huet's unification algorithm + union-find 2011-02-15 00:32 rushing * self/context.scm: scc graph and register allocator 2011-02-15 00:32 rushing * self/mbe.scm: some/every renamed to some?/every? 2011-02-15 00:31 rushing * match.py: record.__init__(): ignore '...' in patterns, sort the pairs variable_rule(): call match at the end, cleaner constant_rule(): use fatbar to avoid exponential code duplication 2011-02-15 00:04 rushing * compile.py: added -fs fun-sizes arg; print the sizes of the largest functions 2011-02-06 08:12 rushing * itypes.py: redone for Huet's algorithm. note: debugging stuff is left in (especially atv!) 2011-02-06 08:11 rushing * typing.py: redone with Huet's algorithm. type_of_pvcase(): use explicit product predicates 2011-01-20 08:11 rushing * self/typing.scm: *** empty log message *** 2011-01-17 02:43 rushing * util/pygment.py: use a specific python 2011-01-17 01:02 rushing * LICENSE.txt: updated year 2011-01-17 00:59 rushing * tests/t_map.exp: *** empty log message *** 2011-01-17 00:59 rushing * tests/t_map.scm: test map and map2 2011-01-17 00:59 rushing * tests/t_sort.exp: new expectations 2011-01-17 00:58 rushing * tests/t_sort.scm: new test 2011-01-17 00:58 rushing * tests/t_string_split.scm: added test 2011-01-17 00:58 rushing * self/lisp_reader.scm: hex-table and dec-table: renamed to -map, lifted to top level 2011-01-17 00:57 rushing * self/backend.scm: wrap-in, wrap-out: new cexp-subst: substitute into a cexp template emit-cexp: emit code for cexp insn emit-call: emit code for non-tail function call 2011-01-17 00:56 rushing * self/cps.scm: insn:cexp: now carries a type signature print-insn: cleaned up a little 2011-01-17 00:54 rushing * self/types.scm: type-repr: new fun 2011-01-17 00:53 rushing * header.c: fix some %ld issues 2011-01-17 00:53 rushing * lib/pair.scm: prepend: new macro map2: map over two lists sort: merge sort 2011-01-17 00:52 rushing * lib/string.scm: string-join: optimize empty-sep case format: added a 'join' formatter to join lists 2011-01-17 00:51 rushing * lib/random.scm: new %%cexp syntax 2011-01-17 00:51 rushing * compile.py: fix gcc invocation on stock osx systems 2011-01-16 00:15 rushing * tests/f_anno2.scm, tests/f_datatype6.scm, tests/t_anno2.scm, tests/t_cond.scm, tests/t_datatype5.scm, tests/t_datatype6.scm, tests/t_fold0.scm, tests/t_format.scm, tests/t_hex0.scm, tests/t_inline0.scm, tests/t_int0.scm, tests/t_match12.scm, tests/t_match_char.scm, tests/t_match_pvariant0.scm, tests/t_namedlet0.scm, tests/t_nvcase1.scm, tests/t_string_join.scm, tests/t_string_split.scm, tests/t_symbols1.scm: checking in these tests 2011-01-16 00:14 rushing * self/transform.scm: moved name frobber to backend expand-lambda: call expand on body, don't map over it 2011-01-16 00:12 rushing * self/nodes.scm: frob: renamed arg 2011-01-16 00:12 rushing * self/nodes.scm: frob: use format 2011-01-16 00:12 rushing * self/backend.scm: most of the lambda calc 2011-01-16 00:11 rushing * self/cps.scm: #untabify? 2011-01-16 00:10 rushing * lib/core.scm: new %cexp syntax 2011-01-16 00:10 rushing * lib/io.scm: new %cexp syntax 2011-01-16 00:10 rushing * lib/string.scm: new %cexp syntax format, formatl, format-join: more flexible format macros 2011-01-16 00:08 rushing * backend.py: cexp_subst: new %cexp syntax 2011-01-16 00:08 rushing * tests/f1.scm, tests/f2.scm, tests/f3.scm, tests/f4.scm, tests/f_match5.scm, tests/f_value_rest.scm, tests/t0.scm, tests/t1.scm, tests/t11.scm, tests/t15.scm, tests/t17.scm, tests/t2.scm, tests/t24.scm, tests/t25.scm, tests/t30.scm, tests/t35.scm, tests/t37.scm, tests/t4.scm, tests/t5.scm, tests/t6.scm, tests/t6_2.scm, tests/t7.scm, tests/t9.scm, tests/t_alias.scm, tests/t_anno.scm, tests/t_cexp_wrap.scm, tests/t_datatype.scm, tests/t_datatype0.scm, tests/t_enum.scm, tests/t_letreg.scm, tests/t_letreg0.scm, tests/t_macro0.scm, tests/t_match2.scm, tests/t_match5.scm, tests/t_match6.scm, tests/t_match8.scm, tests/t_match_pvariant.scm, tests/t_nvcase0.scm, tests/t_pv0.scm, tests/t_recur1.scm, tests/t_stack.scm, tests/t_tail.scm, tests/t_vec16.scm, tests/t_vm.scm, tests/tak20.scm: changed %cexp syntax 2011-01-14 23:16 rushing * notes/typeargs.txt: updated to describe what I did 2011-01-14 22:53 rushing * notes/self-hosting.txt: updated to describe what I did 2011-01-14 22:53 rushing * notes/inline.txt: updated to describe what I did 2011-01-14 22:50 rushing * notes/rows.txt: updated to describe what I did 2011-01-14 02:02 rushing * self/README, self/backend.scm, self/context.scm, self/cps.scm, self/mbe.scm, self/nodes.scm, self/transform.scm, self/types.scm: breadth-first attack, self-hosted irken 2011-01-14 02:01 rushing * lib/string.scm: bool->string: new fun format: new macro 2011-01-14 02:00 rushing * typing.py: comment 2011-01-12 03:26 rushing * util/clean.py: dumb, dumb 2011-01-12 03:24 rushing * tests/t11.exp, tests/t11.scm, tests/t16.exp, tests/t7.scm, tests/t_alist0.exp, tests/t_alist0.scm, tests/t_case0.scm, tests/t_parse.scm, tests/t_parse2.scm, tests/t_string_append.scm, tests/t_string_concat.scm: changes to tests 2011-01-12 03:24 rushing * self/lisp_reader.scm: lotsa work 2011-01-12 03:23 rushing * header.c: get_case_imm: don't &0xff dump_object/TC_USERIMM: print these correctly range_check: print the range values, duh 2011-01-12 03:22 rushing * transform.py: expand_exp(): frob colon in expand_colon() expand_cond: removed (now in derived.scm) expand_case: removed (not really needed) expand_colon: new expand_let: removed (now in derived.scm) expand_letrecx: removed expand_nvcase: working toward removing the/name/hack/0/1 build_literal: handle some missing cases (like bool) 2011-01-12 03:19 rushing * lang.html: CwC available online 2011-01-12 03:19 rushing * backend.py: emit_constructed_literals.walk: special-case PXLL_TRUE/PXLL_FALSE which_typecode_fun: get_case() no worky. use get_typecode(). insn_nvcase: clean up uimm code, easier-to-read output 2011-01-12 03:16 rushing * cps.py: safe_for_let_reg(): comments/thoughts compile_primapp(): get_record_sig is now in itypes, %vget->&vget %dtcon: catch symbol:t and refer to constructed literal 2011-01-12 03:13 rushing * context.py: type_error_lines raised 2011-01-12 03:13 rushing * lib/alist.scm: alist/iterate: new 2011-01-12 03:13 rushing * lib/pair.scm: length(): aux function rather than let loop member?, map: pattern-matching rather than vcase fold, foldr: new some, every: new print-sep: new 2011-01-12 03:11 rushing * lib/core.scm: print-string: return undefined... print-string*: version that returns #of chars written. max: new address-of: new 2011-01-12 03:10 rushing * lib/io.scm: string-reader: new 2011-01-12 03:10 rushing * lib/string.scm: char->string: new string-append: now a macro string-concat: what append was string-join, string-split: new int->string: handle 0, duh int->hex-string: new 2011-01-12 03:09 rushing * lib/symbol.scm: trailing whitespace 2011-01-12 03:08 rushing * lib/derived.scm: filling this out a bit, taking responsibility away from transform 2011-01-12 03:07 rushing * lib/counter.scm: simple counter object 2011-01-12 03:07 rushing * pxll.h: comments, slight rearranging 2011-01-12 03:07 rushing * itypes.py: get_record_sig(): moved here from solver.py datatype.optimize(): turn off uimm if there are any zero-arity alts 2011-01-12 03:05 rushing * typing.py: trying to get rid of this/name/hack/0/1 type_of_primapp(): handle prims with params lookup_special_names(): pass in those params type_of_make_tuple(): vestigial, removed 2011-01-12 03:04 rushing * nodes.py: pprint(): print type after params fix_attribute_names(): (name,) becomes (name, name_params) primapp(): add a params to params parse_type(): parse record types walk_exp(): handle prims with & prefix (indicating extra params) 2011-01-12 03:01 rushing * analyze.py: transform_0_primapp(): working toward eliminating thing/x/y/0 name hacks transform_pvcase(): %vcase => &vcase, %vget => &vget is_recursive(): comment 2011-01-12 02:58 rushing * mbe.py: matches_pattern(): allow to indicate keywords. intersect(): confusion, comment t0(): tests to help me rewrite in irken 2011-01-12 02:56 rushing * match.py: constructor_rule(): report arity mismatch in pattern 2011-01-12 02:55 rushing * lisp_reader.py: read_name(): let '...' special syntax appear in record literals 2011-01-12 02:54 rushing * compile.py: comments describing path through the compiler print node tree in verbose mode before typing 2011-01-04 07:38 rushing * tests/t_set.exp: *** empty log message *** 2011-01-04 07:38 rushing * tests/t_set.scm: test lib/set.scm 2011-01-04 07:38 rushing * lib/set.scm: set datatype using lists 2010-12-17 22:02 rushing * irken.el: add an entry to 2010-12-05 23:12 rushing * lib/symbol.scm: removed unneeded comment 2010-12-05 23:08 rushing * cps.py: gen_closure(): track all functions for the back end 2010-12-05 23:08 rushing * header.c: dump_object(): print #\nul, #\space, etc... 2010-12-05 23:06 rushing * backend.py: started on profile support with call counts emit_constructed_literals(): emit a vector of all known symbols emit_profile_counters(): call counts only so far emit_dump_profile(): new fun wrap_in(): handle symbol as a predicate 2010-12-05 23:02 rushing * context.py: profile: flag keep track of all functions 2010-12-05 23:02 rushing * lib/pair.scm: member-eq?: new function 2010-12-05 23:01 rushing * lib/core.scm: error1(): new function 2010-12-05 23:01 rushing * lib/io.scm: open(): on failure, print which file we failed to open 2010-12-05 23:00 rushing * lib/string.scm: zero-terminate(): well, actually zero-terminate it rather than hoping there's a NUL there. 8^) 2010-12-05 23:00 rushing * lib/symbol.scm: symbol->string: no need for %%cexp intern-symbol: should take a symbol, not a string initialize-symbol-table: with all static symbols found by the compiler 2010-12-05 22:59 rushing * typing.py: type_of_cexp(): non-arrow types just return the type sig 2010-12-05 22:58 rushing * analyze.py: find_leaves(): recursive calls don't affect leafishness 2010-12-05 22:57 rushing * self/lisp_reader.scm: character classes using tables to implement predicates mostly finished up, support (include ...) 2010-12-05 22:55 rushing * lisp_reader.py: implement #\return, #\nul, and #\tab 2010-12-05 22:54 rushing * compile.py: "-p" profile option 2010-11-03 23:50 rushing * tests/f_match6.scm, tests/t_bool.scm, tests/t_enum.scm, tests/t_match_bool.scm, tests/t_match_string.scm, tests/t_symbols0.scm: new tests 2010-11-03 23:49 rushing * self, self/lisp_reader.scm: step 0 of self-hosting 2010-11-03 23:47 rushing * cps.py: IncompleteMatch: Exception comile_exp(): make_tuple is gone scan_constructed(): add(): adds a exp to the constructed list scan(): special support for symbol constructor compile_literal(): symbols no longer literal nodes compile_primapp(): use 'TC_VECTOR' rather than 'vector' as tag compile_nvcase(): detect IncompleteMatch 2010-11-03 23:47 rushing * header.c: get_noint_typecode() => get_case() get_case() get_case_noint() get_case_imm() get_case_tup(): new names and functions, reflecting their usage by nvcase/pvcase dump_object(): new user-immediate scheme 2010-11-03 23:46 rushing * transform.py: expand_exp(): call build_symbol() remove pointless list generator expand_if(): single-branch returns #u rather than bool expand_and(), expand_or(): now handled in derived.scm build_symbol(), build_bool(): colon-syntax constructor build_literal(): changes to bools and symbols 2010-11-03 23:43 rushing * vm/vm.scm: new print insn 2010-11-03 23:43 rushing * vm/tests/t9.scm: shorter loop, with print 2010-11-03 23:43 rushing * backend.py: emit_constructed_literals(): dotag(): use full tag name walk(): UCON => UPTR handle TC_NIL case reworked the code that emits constructors handle the special case of symbols wrap_out(): bool is now a predicate type insn_nvcase(), insn_pvcase(): handle new user-immediate scheme 2010-11-03 23:34 rushing * context.py: #comment 2010-11-03 23:34 rushing * context.py: context.variant_labels: don't prepopulate this with cons & nil. context.nvariant_offset: no longer needed 2010-11-03 23:33 rushing * bytecomp.py: added 'print' opcode go(): handle dead targets 2010-11-03 23:32 rushing * lib/pair.scm: member => member?: change of name from the scheme function reflects the different result type 2010-11-03 23:31 rushing * lib/core.scm: bool and symbol are proper datatypes 2010-11-03 23:31 rushing * lib/symbol.scm: string->uninterned-symbol(): symbols are a proper datatype now string->symbol(): use maybe constructor rather than polyvariant 2010-11-03 23:29 rushing * pxll.h: UITAG(): representation of user immediates has changed (tag is in the payload now) UCON0(),UCON(): renamed to the more obvious UPTR0(), UPTR() 2010-11-03 23:28 rushing * itypes.py: bool and symbol are now proper datatypes 2010-11-03 23:27 rushing * tests/t8.scm: datatypes needed 2010-11-03 23:27 rushing * tests/t4.scm: datatype bool needed 2010-11-03 23:26 rushing * tests/t17.scm: datatype bool needed 2010-11-03 23:26 rushing * tests/t15.scm: datatype bool needed 2010-11-03 23:26 rushing * tests/t_match8.scm: datatypes needed parse(): rewritten using list syntax 2010-11-03 23:25 rushing * tests/t_parse.exp: immediate repr change 2010-11-03 23:24 rushing * tests/t_literal7.scm: datatype symbol needed 2010-11-03 23:23 rushing * tests/t_vm.scm: addition of %print insn 2010-11-03 23:23 rushing * tests/t_literal5.scm: datatypes needed 2010-11-03 23:22 rushing * tests/t_anno0.scm: datatype bool needed 2010-11-03 23:22 rushing * tests/t9.scm: datatype bool needed 2010-11-03 23:22 rushing * tests/t7.scm: datatype bool needed 2010-11-03 23:22 rushing * tests/t3.scm: datatype bool needed 2010-11-03 23:22 rushing * tests/t16.exp: immediate repr change 2010-11-03 23:22 rushing * tests/t14.scm: member => member? 2010-11-03 23:21 rushing * tests/t_macro0.scm: datatype bool needed 2010-11-03 23:21 rushing * tests/t_letpoly.scm: datatype bool needed 2010-11-03 23:21 rushing * tests/t_alist0.exp: immediate repr change 2010-11-03 23:20 rushing * tests/t_datatype0.scm: datatype bool needed 2010-11-03 23:20 rushing * tests/t_literal8.scm: datatype bool needed 2010-11-03 23:20 rushing * tests/t_datatype.scm: datatype bool needed 2010-11-03 23:19 rushing * typing.py: type_of_conditional(): t_bool() is now a proper datatype, thus expressed via t_predicate() remember_variant_label(): removed pre-installed labels, no need to adjust for them 2010-11-03 23:18 rushing * nodes.py: make_tuple: node type no longer needed. parse_type.pfun(): allow nullary constructors in type expressions (e.g., 'bool' rather than '(bool)') 2010-11-03 23:13 rushing * match.py: MatchError,IncompleteMatch: Exceptions constant_rule: raise IncompleteMatch if is . detect string matches and use string=? as the comparison function. 2010-11-03 23:11 rushing * lisp_reader.py: bools are now created using the 'colon' constructor syntax 2010-10-29 03:50 rushing * tests/f_anno1.scm, tests/t_anno1.scm, tests/t_nth.exp, tests/t_nth.scm, tests/t_recur.scm, tests/t_recur0.scm, tests/t_recur1.scm, tests/t_single_dt.scm, tests/t_vm.scm: new tests and expected results 2010-10-29 03:47 rushing * run_tests.py: test_t_vm(): tell it which bytecode file to run (tak20) and check the output optimize: list of tests to "gcc -O" on count successful tests so we know how many total tests are defined 2010-10-29 03:46 rushing * lang.html: couple of typos fixed 2010-10-29 03:46 rushing * vm/vm.scm: thinking about pulling this into vm/parse.scm, soon. 2010-10-29 03:45 rushing * backend.py: %array-ref: %array-set: bad deref bug in range checking insn_vcase(): optimize the single-variant case, duh. 2010-10-29 03:44 rushing * parse/t2.g: the 'argument' production: use NAME=test rather than test=test. whatever ambiguity bedevils the python grammar doesn't seem to affect us. 2010-10-29 03:43 rushing * parse/gen_irken.py: put the datatype decls into the generated file 2010-10-29 03:43 rushing * bytecomp.py: register allocator moved into the cps instance 2010-10-29 03:42 rushing * lib/pair.scm: nth(): again I display my CL bias 2010-10-29 03:41 rushing * lib/frb.scm: the -tt option (type twice) caught this horrible bug in an untested generator. 2010-10-29 03:40 rushing * lib/core.scm: newline(): alias for terpri(). I was thinking like a dinosaur! 2010-10-29 03:39 rushing * lib/io.scm: STDIN_FILENO STDOUT_FILENO STDERR_FILENO defined using %%cexp file/open-stdin file/open-stdout get file-object handles to stdin and stdout 2010-10-29 03:38 rushing * lib/string.scm: scheme-oops: string- string string string file/ 2010-09-17 20:44 rushing * tests/t_extend.scm: *** empty log message *** 2010-09-17 20:43 rushing * lib/alist.scm: alist/lookup(): recursive rather than named let loop 2010-09-17 20:42 rushing * lib/pair.scm: mode line LIST and PUSH macros for-each 2010-09-17 20:41 rushing * lib/frb.scm: #mode line 2010-09-17 20:41 rushing * lib/derived.scm: #better layout of the or macro 2010-09-17 20:41 rushing * lib/lexer.scm: file: => file/ 2010-09-17 20:40 rushing * irken.el: defmacro 2010-09-17 20:40 rushing * backend.py: record-set: return the record when insn.target is not dead 2010-09-17 20:39 rushing * cps.py: compile_record_extension(): refuse to touch a record with '...' in its signature - the type solver didn't fully resolve it! 2010-09-17 20:37 rushing * context.py: print_types option type_error_lines variable 2010-09-17 20:37 rushing * itypes.py: rlabels_repr(): a much nicer way of printing row types, currently disabled because I haven't figured out how to represent things like rlabel ('field', xx, yy) 2010-09-17 20:35 rushing * solver.py: attach tvars to nodes when possible, and the reverse - in order to help describe type errors get_compress_key(): unused unifier.simplify(): speed hack for the most-called function in the whole damned compiler uncomment once again the code that removes typeless equations. unifier.prune(): rewritten. Now treated as a graph algorithm, the point of which is to leave only connected parts of the graph. The previous algorithm had 'leaks', which I believe led to the hack in simplify() that left in typeless equations. fingers crossed. solver.__init__(): save the expression being typed, to help describe type errors solver.solve(): when printing sets of tvars, sort them using 'ps()', helps when ediffing output catch type errors, call find_type_error() find_type_error(): try to find the nodes responsible for the conflict, and print a range of the node tree, VERY helpful. typer.go(): decode let-bound names as well as lambda-bound ones. 2010-09-17 20:26 rushing * nodes.py: node: 'escapes' attr, default to None 2010-09-17 20:26 rushing * analyze.py: do escape analysis before inlining, so we can avoid inlining functions that are called only once, but must be emitted because they escape. 2010-09-17 20:24 rushing * match.py: first hack at record_rule(), relatively straightforward 2010-09-17 20:24 rushing * compile.py: don't re-use the same typer object print_types option 2010-08-11 20:04 rushing * mbe.py: cleanups 2010-08-01 21:55 rushing * nodes.py: comment no longer true 2010-08-01 21:46 rushing * run_tests.py: don't exit upon the failure of a single test, instead accumulate the results and report them at the end 2010-08-01 21:46 rushing * irken.el: defmacro keyword 2010-08-01 21:45 rushing * transform.py: expand_exp(): don't split('/') unless startswith('%') expand_literal(): justify its existence build_literal(): whine about lack of enlightenment 2010-08-01 21:43 rushing * notes/classes.txt: more thoughts, little progress 2010-08-01 21:42 rushing * cps.py: compile_let_splat(): don't emit a with empty bindings 2010-08-01 21:42 rushing * context.py: standard_macros = "lib/derived.scm" 2010-08-01 21:42 rushing * lib/alist.scm: now with macros! 2010-08-01 21:41 rushing * lib/pair.scm: null?(): replaced vcase with pattern match 2010-08-01 21:41 rushing * lib/frb.scm: colon is now a reserved syntax, use class/method instead 2010-08-01 21:40 rushing * lib/core.scm: irken mode line 2010-08-01 21:40 rushing * lib/io.scm: colon is now a reserved syntax, use class/method instead 2010-08-01 21:40 rushing * lib/string.scm: list->string(): replaced vcase with pattern match 2010-08-01 21:39 rushing * lib/symbol.scm: colon is now a reserved syntax, use class/method instead 2010-08-01 21:39 rushing * lib/derived.scm: macros for derived expressions (more to come) 2010-08-01 21:38 rushing * tests/t_alist.scm: updated for new alist 2010-08-01 21:37 rushing * tests/t_match4.scm: *** empty log message *** 2010-08-01 21:36 rushing * tests/t16.exp: dunno why I keep swapping around 2010-08-01 21:34 rushing * tests/t_sorted_list.scm: colon is now a reserved syntax, use class/method instead 2010-08-01 21:34 rushing * tests/t21.scm: colon is now a reserved syntax, use class/method instead 2010-08-01 21:34 rushing * tests/t16.scm: colon is now a reserved syntax, use class/method instead 2010-08-01 21:34 rushing * tests/t_letpoly.scm: *** empty log message *** 2010-08-01 21:26 rushing * tests/t_anno.scm: test type annotations 2010-08-01 21:26 rushing * tests/t_datatype.exp: *** empty log message *** 2010-08-01 21:25 rushing * tests/t_datatype4.scm: removed abbreviations - should I try macros instead? 2010-08-01 21:22 rushing * tests/t_macro0.scm: defmacro 2010-08-01 21:20 rushing * tests/t_alist0.scm: new test for alist-with-macros 2010-08-01 21:19 rushing * solver.py: gen_let_splat(): support type annotations print_type_error(): decode types 2010-08-01 21:18 rushing * nodes.py: handle new COLON form 2010-08-01 21:17 rushing * analyze.py: instantiate.rename(): propagate in the copy 2010-08-01 21:15 rushing * match.py: handle new COLON form 2010-08-01 21:15 rushing * lisp_reader.py: make ':' an infix read macro returning (COLON hd tl) 2010-08-01 21:14 rushing * compile.py: load standard macros 2010-07-28 17:49 rushing * transform.py: add defmacro find_datatypes() => find_declarations(): search for defmacro in here as well make COLON like QUOTE, but infix (so we can annotate types) removed expand_or(), renamed expand_bor() to expand_or() (though defmacro makes it obsolete) parse_defmacro() 2010-07-26 20:06 rushing * mbe.py: removed the keyword-checking ability 2010-07-26 20:02 rushing * mbe.py: translation of Dorai Sitaram's macro-by-example code in Common Lisp 2010-06-20 00:35 rushing * tests/t6_2.scm, tests/t_backquote.scm, tests/t_letpoly.scm: new tests 2010-06-20 00:35 rushing * irken.el: first pass at an irken mode 2010-06-20 00:33 rushing * tests/t_backquote0.scm: *** empty log message *** 2010-06-20 00:33 rushing * tests/t_neg.scm: *** empty log message *** 2010-06-20 00:33 rushing * tests/t_extend.scm: *** empty log message *** 2010-06-20 00:32 rushing * tests/parse_2.py: multiple stmts 2010-06-20 00:32 rushing * tests/t_nvcase0.scm: no more list datatype extensions 2010-06-20 00:31 rushing * tests/t_alist.scm: work in progress 2010-06-20 00:31 rushing * tests/t_parse.scm: mode line 2010-06-20 00:31 rushing * tests/t_parse2.scm: add range to each item type 2010-06-20 00:30 rushing * tests/t_dump_image.scm: sys.argc 2010-06-20 00:29 rushing * tests/t14.exp, tests/t28.exp, tests/t_datatype0.exp, tests/t_symbols.exp, tests/t_vector.exp: updated some expected test output (mostly correctly rendered lists) 2010-06-20 00:28 rushing * backend.py: dotag(): hack to deal with symbolic tag specs fixed certain cases for literal lists 2010-06-20 00:26 rushing * header.c: static a couple of funs 2010-06-20 00:26 rushing * lib/alist.scm: work in progress - still dealing with type issues 2010-06-20 00:26 rushing * lib/pair.scm: #comment 2010-06-20 00:25 rushing * lib/io.scm: read-stdin 2010-06-20 00:25 rushing * lib/string.scm: sys: now a record with argc and argv components 2010-06-20 00:24 rushing * lib/lexer.scm: datatype range: support the idea of an undefined range correctly manage the range of a token 2010-06-20 00:23 rushing * transform.py: support for backquote 2010-06-20 00:23 rushing * solver.py: decode(): made a global function 2010-06-20 00:21 rushing * nodes.py: node.assigns: stuff it with nodes, not copies of the node class. 2010-06-20 00:20 rushing * lisp_reader.py: put backquote back in 2010-06-20 00:20 rushing * compile.py: comment out my personal dragonegg setup 2010-05-18 23:28 rushing * util/pygment.py: auto-highlight all the code 2010-05-18 22:55 rushing * tests/t_alist.scm: test alist 2010-05-18 22:54 rushing * tests/parse_2.py: *** empty log message *** 2010-05-18 22:53 rushing * tests/t_string_append.scm: test string-append 2010-05-18 22:52 rushing * lib/lexer.scm: lexer engine in the library 2010-05-18 22:52 rushing * tests/t_parse2.scm: replaced expr:atom with expr:{int,string,varref} break, raise, continue, pass 2010-05-18 22:51 rushing * parse/t2.g: put raise_stmt back in, oops 2010-05-18 01:35 rushing * tests/t_parse2.scm: while and for 2010-05-18 01:34 rushing * tests/parse_2.py: test for loops 2010-05-18 01:34 rushing * lib/string.scm: removed extra string-compare function added string-append 2010-05-17 19:56 rushing * parse/t2.g: stripped down 1.5.2 grammar. 2010-05-17 19:56 rushing * tests/parse_2.py: more of the grammar 2010-05-17 19:54 rushing * tests/t_parse2.scm: filling in a python-like parser 2010-05-17 19:53 rushing * backend.py: insn_primop(), %make-tuple: allow string tags insn_fatbar(): semicolon after label in order to satisfy C99 pedantry 2010-05-17 19:51 rushing * itypes.py: datatype.builtin_tags: a hack to get some tags pre-defined (e.g., list/cons & list/nil) 2010-05-17 19:51 rushing * transform.py: parse_datatype(): no need to reverse the order of the alts 2010-05-11 01:31 rushing * lib/alist.scm: *** empty log message *** 2010-05-11 01:31 rushing * tests/t_parse2.scm: lookup-goto(), lookup-action(): rewritten to use 2010-05-11 01:30 rushing * backend.py: emit_constructed_literals(): oops, forgot to implement the uimm hack here which_typecode_fun(): any uimm implies the need to call get_typecode() 2010-05-11 01:28 rushing * lib/core.scm: #comment 2010-05-10 20:00 rushing * vm/t0.scm, vm/t1.scm, vm/t10.scm, vm/t11.scm, vm/t2.scm, vm/t3.scm, vm/t4.scm, vm/t5.scm, vm/t6.scm, vm/t7.scm, vm/t8.scm, vm/t9.scm, vm/tests, vm/tests/t0.scm, vm/tests/t1.scm, vm/tests/t10.scm, vm/tests/t11.scm, vm/tests/t2.scm, vm/tests/t3.scm, vm/tests/t4.scm, vm/tests/t5.scm, vm/tests/t6.scm, vm/tests/t7.scm, vm/tests/t8.scm, vm/tests/t9.scm: moved vm tests into a subdir 2010-05-10 20:00 rushing * backend.py: insn_new_tuple(): string rather than int for tag insn_invoke(): sort the list of registers before save/restore 2010-05-10 19:59 rushing * run_tests.py: use a fresh context for each compile 2010-05-10 19:59 rushing * cps.py: cont(), dead_cont(): make these methods on the compiler compiler.regalloc: an attribute of each compilation, not global. safe_for_let_reg(): more experiments. tail_pos check is a bad idea, register-bound variables do not work around funcalls! gen_new_tuple(): tag is a string, not a number compile_vector_literal(): use 'TC_VECTOR' rather than a magic constant 2010-05-10 19:55 rushing * context.py: TC_USEROBJ moved 2010-05-10 19:55 rushing * lib/frb.scm: rewritten to use pattern matching 2010-05-10 19:54 rushing * lib/core.scm: new defns: >0, <0, logior, logxor, logand, lognot 2010-05-10 19:54 rushing * tests/tak20.scm: use zero? 2010-05-10 19:53 rushing * tests/t16.exp: The new output is more likely to be correct. 2010-05-10 19:53 rushing * tests/t_parse2.scm: this test is currently failing 2010-05-10 19:52 rushing * tests/t16.scm: new lib/frb reverses order of args to inorder & reverse 2010-05-10 19:52 rushing * transform.py: cheat_check(): simple optimizations on expressions exp_match(): vars may be passed in expand_match(): don't bind a fresh variable to a pattern argument when it's already a varref. 2010-05-10 19:51 rushing * match.py: compiler.compile(): vars is now passed in 2010-05-10 19:50 rushing * lisp_reader.py: __eq__() method to allow comparison of two atoms 2010-05-10 19:50 rushing * compile.py: the register allocator is now part of cps.compiler 2010-05-07 18:54 rushing * cps.py: #comment 2010-04-27 01:08 rushing * tests/t_vec16.scm, tests/t_vec16_1.scm: new tests 2010-04-27 01:07 rushing * lib/pair.scm: list->vec16() 2010-04-27 01:07 rushing * lib/core.scm: make-vec16() 2010-04-27 01:06 rushing * solver.py: TypeError: moved to itypes.py decompose(): temporary hack to allow int and int16 to unify lookup_special_names(): added %make-vec16 and %vec16-set 2010-04-27 01:05 rushing * vm/vm.scm: opcode datatype opcode-info: vector of info about each opcode print-args(): print the args to a vm insn next-insn0(): tracing version of next-insn vm-error(): better error handling CODE: now a vec16 2010-04-27 01:04 rushing * backend.py: range_check(): now takes length directly %make-vec16(), %vec16-ref(), %vec16-set(): new primops 2010-04-27 01:02 rushing * cps.py: support for vec16 2010-04-27 01:02 rushing * gc.c: handle TC_VEC16 2010-04-27 01:01 rushing * header.c: range_check(): changed to take a length rather than an object, so we can use it with TC_STRING and TC_VEC16 2010-04-27 01:01 rushing * pxll.h: pxll_vec16 typedef 2010-04-27 01:01 rushing * itypes.py: hackishly adding in a t_int16 type for 16-bit vectors 2010-04-26 18:44 rushing * tests/t_match10.scm, tests/t_match11.scm, tests/t_uimm.scm: new tests 2010-04-26 18:42 rushing * vm/t10.scm, vm/t11.scm, vm/t3.scm: new tests 2010-04-26 18:42 rushing * backend.py: which_typecode_fun(): look over the datatype used in an nvcase, and select one of the specialized 'get_typecode()' funs when possible. 2010-04-26 18:41 rushing * run_tests.py: use context module 2010-04-26 18:41 rushing * cps.py: safe_for_let_reg(): consider tail_pos also, in favor of using registers. compile_varref(), compile_varset(): put the var name in params for better annotations 2010-04-26 18:38 rushing * context.py: moved from compile.py 2010-04-26 18:38 rushing * bytecomp.py: use context.context rather than faking one (that way we get lots of nice defaults) new insns: ref0, call, pop, ge label and label_ref classes go(): resolve labels 2010-04-26 18:36 rushing * header.c: get_tup_typecode() get_noint_typecode() get_imm_typecode() specialized typecode fetchers to speed up NVCASE in places where we know we can eliminate some tests NO_RANGE_CHECK: #define to disable all range checking. would prefer something I can do in the type system to limit it to certain vectors. 2010-04-26 18:33 rushing * lib/core.scm: vector-length(): nasty: if we don't check for TC_EMPTY_VECTOR we'll segfault 2010-04-26 18:32 rushing * pxll.h: alias TC_CONTINUATION with TC_SAVE 2010-04-26 18:32 rushing * transform.py: process_formals(): remove more nary code exp_match(): don't call self.expand_exp() more than necessary 2010-04-26 18:30 rushing * nodes.py: removed more vestigial 'nary' code (of course, right around the time when I will probably need it again) 2010-04-26 18:30 rushing * analyze.py: start the shift toward passing optional args via context 2010-04-26 18:26 rushing * vm/vm.scm: new insns: trcall, ref0, call, pop, ge vmcont/stack datatype RETVAL get-regs(), set_regs(): register save/restore for CALL/POP regs->REGS bt() simple backtrace function print-object(), print-rib(), print-lenv(): debugging funs -1 -> sub1 2010-04-26 18:23 rushing * compile.py: moved context object into its own module start the shift toward passing optional args via context "-nrc" -DNO_RANGE_CHECK option switch back to /usr/local/bin/gcc (probably until dragonegg works) 2010-04-21 18:38 rushing * vm/t0.scm, vm/t1.scm, vm/t2.scm, vm/t3.scm, vm/t4.scm, vm/t5.scm, vm/t6.scm, vm/t7.scm, vm/t8.scm, vm/t9.scm: new tests 2010-04-21 18:38 rushing * vm/vm.scm: more insns 2010-04-21 18:37 rushing * backend.py: implement FATBAR 2010-04-21 18:37 rushing * cps.py: implement FATBAR 2010-04-21 18:37 rushing * bytecomp.py: more insns 2010-04-21 18:37 rushing * header.c: scheme->irken 2010-04-21 18:36 rushing * transform.py: exp_nvcase(): the match compiler uses FATBAR now, instead of the vcase 'else' clause, so I have to disable this error. need to fix this, maybe by distinguishing between user and match-compiler nvcase. 2010-04-21 18:35 rushing * solver.py: types for %%fatbar and %%fail 2010-04-21 18:34 rushing * match.py: implement FATBAR constructor_rule(): use FATBAR to avoid code duplication by the mixture rule 2010-04-07 21:43 rushing * bytecomp.py: first hack at a bytecode compiler 2010-04-07 21:40 rushing * vm/vm.scm: simpler vector-of-ints VM model +1,+2,etc..: performance/readability hack datatype object: an efficient type-safe wrapper for VM objects! read-int(): encoding changed to favor single-byte values 2010-04-07 21:37 rushing * backend.py: insn_nvcase(): use get_typecode() rather than get_safe_typecode(), since it handles the TC_INT case detect the uimm case and emit TC_WHATEVER depending on the base (runtime) type 2010-04-07 21:36 rushing * itypes.py: datatype.optimize(): detect applicability of the uimm optimization 2010-04-07 21:35 rushing * graph.py: partition_fix(): *within* a partition, re-order by serial number (thereby recovering source order when possible) 2010-04-07 21:35 rushing * cps.py: The 'uimm' optimization: when a datatype constructor is a single-item product *and* its type is distinguishable at runtime, then use that type instead. compile_exp(): move literal case into self.compile_literal() compile_literal(): moved here so we can override it in the byte compiler compile_primapp(): %dtcon: detect uimm case, emit args[0] instead of dtcon %nvget: same thing, emit args[0] rather than vget 2010-04-05 19:28 rushing * parse/grammar, parse/grammar.g, tests/parse_2.py, vm/parser.scm: removed old hand-written parser 2010-04-05 19:27 rushing * util/clean.py: clean the vm directory out, too 2010-04-05 19:24 rushing * backend.py: c_backend.__init__(): removed 'safety' arg function_label(): no point in sticking the serial number into a label that's already unique wrap_in(): accept vector types guess_record_type(): commented out noisy prints insn_primop(): put primop[0] into a variable %array-ref, %array-set: thinking about a suffix that turns off the range check insn_varset(): comment out "set! result used" warning insn_invoke_tail(): insn_invoke(): if args_reg is None, don't extend the environment. this stops zero-argument functions from consing, and most importantly, turns a zero-argument tail call into a goto (important for our threaded VM). 2010-04-05 19:19 rushing * cps.py: removed 'safety' arg compile_application(): don't build an empty tuple for zero-arg functions compile_function(): don't bother extending the environment with an empty rib 2010-04-05 19:18 rushing * parse/meta.py: fixed the 'priority' bug in my hand-rolled grammar. did this by writing a new one in '.g' form, translating it using meta, and then comparing it to my original. aiiiieeeeeee. 2010-04-05 19:16 rushing * parse/gen_parser.py: walk_prod(): make STAR/PLUS right-recursive in order to avoid having to parse bass-ackwards lists simplify(): don't simplify a terminal away (e.g. "pass_stmt: 'pass'") 2010-04-05 19:13 rushing * lib/pair.scm: new functions, vector->list and list->vector 2010-04-05 19:13 rushing * lib/core.scm: new functions, <<, >>, and vector-length 2010-04-05 19:12 rushing * transform.py: removed 'safety' arg 2010-04-05 19:12 rushing * tests/parse_0.py: test empty arglist 2010-04-05 19:11 rushing * tests/t21.scm: removed comment 2010-04-05 19:11 rushing * tests/t_parse2.scm: another way to tackle parse trees 2010-04-05 19:10 rushing * tests/t_tail.scm: testing empty environments for null-arg functions 2010-04-05 19:09 rushing * tests/t_parse.scm: playing around with different ways of tackling the parse tree 2010-04-05 19:09 rushing * tests/t_vector.exp: new output 2010-04-05 19:08 rushing * tests/t_vector.scm: tests vector->list and list->vector 2010-04-05 19:08 rushing * solver.py: constraint_generator.go(): commented out the call to check_constraint(), it really slows down type solving. [need to make it an option] 2010-04-05 19:07 rushing * nodes.py: rename_variables(): pass context in rather than datatypes 2010-04-05 19:07 rushing * analyze.py: find_escaping_variables(): bug, was flagging all vars inside an escaping fun as escaping 2010-04-05 19:06 rushing * vm/vm.scm: first hack at what the VM might look like 2010-04-05 19:06 rushing * compile.py: removed 'safety' option and args 2010-03-27 19:08 rushing * util/clean.py: unlink some junk files 2010-03-27 19:06 rushing * Makefile: dist script already does the clean 2010-03-27 19:06 rushing * util/dist.py: run changelog 2010-03-27 19:06 rushing * lib/core.scm: print-string(): stupidly used fputs, now uses fwrite remainer(), abs(): new funs string-length(): needed here now 2010-03-27 19:05 rushing * lib/string.scm: string-length(): moved to core.scm for print-string int->string(): simple decimal implementation 2010-03-27 19:04 rushing * tests/t_parse.scm: unparse the AST 2010-03-27 19:04 rushing * tests/t_match7.scm: bug fix 2010-03-27 04:58 rushing * tests/parse_0.py: more complicated expression 2010-03-27 04:57 rushing * tests/t_parse.scm: rewrote several vcase exprs using pattern matching (with lists) 2010-03-27 04:57 rushing * tests/t_match7.scm: T/insert(): rewrite some vcase exprs with pattern matching 2010-03-27 04:56 rushing * lib/core.scm: impossible(): new error function 2010-03-27 04:56 rushing * transform.py: expand_nvcase() => exp_nvcase() expand_pvcase() => exp_pvcase() this avoids calling the transform more than once 2010-03-27 04:55 rushing * nodes.py: apply_subst(): don't bother putting entries for '_' in the lenv 2010-03-27 04:54 rushing * match.py: kind(): support list patterns "()", "(x . y)", "(a b c d ...)" subst(): don't emit subst for wildcard vars constructor_rule(): when possible use '_' for wildcards 2010-03-26 19:46 rushing * lib/string.scm: lame string->int() 2010-03-26 19:46 rushing * Makefile: make sure we're clean 2010-03-26 19:45 rushing * tests/parse_0.py: test toy predicate language 2010-03-26 19:45 rushing * tests/t_string2.scm: test string->int 2010-03-26 19:43 rushing * tests/t_parse.scm: added a parse-tree => AST phase using pattern matching. 2010-03-26 03:51 rushing * tests/t_match9.scm: test special form 2010-03-26 03:51 rushing * tests/t_match8.scm: test matching on symbols 2010-03-26 03:50 rushing * tests/t_match7.scm: Use pattern matching to print the tree. 2010-03-26 03:49 rushing * match.py: compile(): we don't need . return vars, code kind(): handle symbols in patterns 2010-03-26 03:47 rushing * transform.py: exp_define(): take some specific work from exp_match() exp_match(): handle rules from either 'define' or 'match' expand_match(): new match special form 2010-03-25 22:27 rushing * parse/extract.py: renamed to gen_irken.py 2010-03-25 22:26 rushing * tests/f_arity.scm, tests/f_match5.scm, tests/parse_0.py, tests/t_match0.scm, tests/t_match2.scm, tests/t_match4.scm, tests/t_match5.scm, tests/t_match6.scm, tests/t_match7.scm, tests/t_match8.scm, tests/t_nvcase0.scm, tests/t_parse.scm: new pattern matching tests 2010-03-25 22:24 rushing * backend.py: insn_vcase(): massively simplified again, using get_safe_typecode(). necessary because nvcase is no longer required to be complete, thus making it possible to leave out a unit constructor and miss an immediate alternative. 2010-03-25 22:22 rushing * cps.py: disentangle pvcase and nvcase, especially since they now have such different shapes compile_primap(): support %%match-error 2010-03-25 22:21 rushing * parse/README: updated 2010-03-25 22:21 rushing * parse/gen_python_parser.py: try to do all the necessary steps in this script, and take a grammar argument 2010-03-25 22:20 rushing * parse/meta.py: alts: build an nary VBAR 2010-03-25 22:19 rushing * parse/gen_parser.py: reworked to (hopefully) generate more predictable names for sub-rules so that we can build practical parsers based on the output. 2010-03-25 22:18 rushing * header.c: comment 2010-03-25 22:17 rushing * lib/pair.scm: map() 2010-03-25 22:17 rushing * lib/string.scm: string-compare(): rewritten a little more clearly now, let_reg makes it ok. 2010-03-25 22:16 rushing * lib/symbol.scm: symbol->string symbol- parse_datatype() 2010-03-25 22:08 rushing * solver.py: gen_nvcase(): handle the new 'ealt' sub-expression. decompose(): Wow, nasty bug I stuck in there in February that caused it to automatically give a pass whenever the number of args to a predicate didn't match. Yeah, I know! lookup_special_names(): add '%%match-error' 2010-03-25 22:06 rushing * nodes.py: new node type: let_subst used to express variable substitutions so that they can be resolved in a single pass, during the translation into nodes. 2010-03-25 22:05 rushing * match.py: pattern matching! 2010-03-16 03:17 rushing * parse/gen_irken.py: renamed 2010-03-13 04:31 rushing * tests/t_case0.scm: debugging a problem with symbols in code generated for case 2010-03-13 04:31 rushing * tests/t_string1.scm: test mutability of string literals 2010-03-13 04:30 rushing * tests/t_string0.scm: new tests 2010-03-13 04:29 rushing * tests/t28.exp, tests/t28.scm, tests/t_literal.scm, tests/t_literal0.scm, tests/t_literal1.scm, tests/t_literal2.scm, tests/t_literal3.scm, tests/t_literal4.scm, tests/t_literal5.scm, tests/t_literal6.scm, tests/t_literal7.scm, tests/t_literal8.scm, tests/t_symbols.exp: new tests 2010-03-13 04:29 rushing * notes/literals.txt: straight talk about literals 2010-03-13 04:28 rushing * backend.py: emit_constructed_literals(): new (biggish) function verify(): insn_verify(): removed, along with some commented-out calls insn_constructed(): emit a reference to a constructed literal insn_make_string(): removed 2010-03-13 04:26 rushing * cps.py: scan_constructed(): scan and collect all constructed literals gen_constructed(): new insn 2010-03-13 04:25 rushing * parse/lexer.py: reworked to support new literal syntax 2010-03-13 04:25 rushing * parse/extract.py: reworked to support new literal syntax 2010-03-13 04:24 rushing * header.c: placeholder for constructed literals changed the magic string to a //comment 2010-03-13 04:24 rushing * pxll.h: STRING_TUPLE_LENGTH STRING_HEADER UOTAG UITAG UCON UCON0 UOHEAD: new macros make it easier to construct literals pxll_string: declare the data array to have no length rather than zero length 2010-03-13 04:23 rushing * itypes.py: comments 2010-03-13 04:22 rushing * transform.py: RuntimeLiteral: exception for literals with illegal bits that can't be figured at compile-time get_constant_binding(): add_constants(): removed! expand_exp(): leave strings and symbols alone expand_literal(): support the (literal ...) syntax build_literal(): rewritten to support lisp/list literals and 'constructed' literals verifies that the construct can be built at compile-time 2010-03-13 04:17 rushing * solver.py: type a constructed literal 2010-03-13 04:17 rushing * nodes.py: constructed: new node type for constructed literals 2010-03-13 04:17 rushing * compile.py: context: list of constructed literals symbol table 2010-03-07 09:22 rushing * backend.py: emit_gc_copy_regs(): couple of one-off bugs there 2010-03-07 09:15 rushing * tests/t20.scm: renamed to t_parse, still in progress 2010-03-07 09:14 rushing * backend.py: emit_gc_copy_regs(): emit functions to copy registers in and out of the heap as gc roots 2010-03-07 09:13 rushing * backend.py: track the size of allocations inside a function. if the value runs over head_room, then emit a call to check_heap() giving the number of free regs class function: holds the accumulated allocation sum alloc(): sums up allocations in self.current_fun insn_close(): manage self.current_fun inside each function 2010-03-07 09:11 rushing * gc.c: gc_flip(): now takes arg call the generated gc_regs_in() & gc_regs_out() gc_relocate(): returns void 2010-03-07 09:09 rushing * header.c: check_heap(): gc_flip(): now takes arg const head_room 2010-03-07 09:08 rushing * pxll.h: put head room into a global const variable 2010-03-05 07:35 rushing * run_tests.py: sometimes the lexer gets swapped out 2010-03-05 07:10 rushing * tests/parse_0.py: simple parse test for t_parse.scm 2010-03-05 07:10 rushing * tests/t_alias.scm: tests aliases 2010-03-05 07:10 rushing * tests/t_letreg0.scm: *** empty log message *** 2010-03-05 07:09 rushing * tests/t_datatype4.scm: tests aliases, and chunks of initialized data 2010-03-05 07:08 rushing * tests/t_datatype3.scm: *** empty log message *** 2010-03-05 07:08 rushing * backend.py: insn_vcase(): deref a pointer in GET_TYPECODE() when it's a tuple. 2010-03-05 07:07 rushing * cps.py: gen_simple_test(): renamed an arg 2010-03-05 07:07 rushing * parse/README: the forgotten extract.py step 2010-03-05 07:07 rushing * parse/gen_python_parser.py: make the lexer when you make the parser, getting them out of sync is confusing. 2010-03-05 07:06 rushing * parse/extract.py: reworked for normal-variant datatypes. 2010-03-05 07:06 rushing * tests/t_parse.scm: previously known as 't20'. reworked for normal-variant datatypes. 2010-03-05 07:05 rushing * nodes.py: node.alias: slot to hold value for aliases (see transform.py) parse_type.pfun(): handle zero-argument type predicates 2010-03-05 07:05 rushing * analyze.py: find_aliases(): detect 'aliases' like "(define plus +)" and inline them. a bit of a hack, but useful for the parser tables. transform_0_varref(): return the value of the alias 2010-03-03 06:34 rushing * cps.py: safe_for_let_reg(): don't use let_reg if any of the variables will escape 2010-03-03 06:33 rushing * header.c: dump_object(): is declared in lib/core.scm to return undefined, and in fact needs to return undefined (i.e., 'dead') rather than #t 2010-03-03 06:32 rushing * lib/pair.scm: datatype list: rearrange the order so that nil is u0 [to facilitate testing] 2010-03-03 06:32 rushing * lib/io.scm: file:read-buffer(): a bug! found by a test! 2010-03-03 06:31 rushing * tests/t0.exp, tests/t1.exp, tests/t10.exp, tests/t11.exp, tests/t12.exp, tests/t13.exp, tests/t14.exp, tests/t15.exp, tests/t15.scm, tests/t16.exp, tests/t16.scm, tests/t18.exp, tests/t19.exp, tests/t22.scm, tests/t23.exp, tests/t23.scm, tests/t24.exp, tests/t24.scm, tests/t25.exp, tests/t26.exp, tests/t27.exp, tests/t27.scm, tests/t28.exp, tests/t29.scm, tests/t30.exp, tests/t30.scm, tests/t35.exp, tests/t36.scm, tests/t37.exp, tests/t38.exp, tests/t39.exp, tests/t39.scm, tests/t42.exp, tests/t42.scm, tests/t_bad_inline.exp, tests/t_cexp_wrap.exp, tests/t_datatype.exp, tests/t_datatype.scm, tests/t_datatype0.exp, tests/t_datatype1.scm, tests/t_dump_image.exp, tests/t_empty_vector.exp, tests/t_empty_vector.scm, tests/t_frb0.scm, tests/t_letreg.exp, tests/t_letreg.scm, tests/t_small.exp, tests/t_sorted_list.exp, tests/t_sorted_list.scm, tests/t_stack.exp, tests/t_symbols.exp, tests/t_vector.exp, tests/tak20.exp, tests/tak20.scm: expected values for tests, and lots of tweaks to tests in order to make their output verifiable when possible. 2010-03-03 06:30 rushing * run_tests.py: verify the actual output of tests several functions for tests that require special attention 2010-03-02 07:50 rushing * header.c: dump_image(): return an int 2010-03-02 07:49 rushing * tests/t_rsum_0.scm: unwritten test 2010-03-02 07:48 rushing * tests/f_datatype.scm, tests/f_datatype0.scm, tests/f_value_rest.scm, tests/t_cexp_wrap.scm, tests/t_datatype.scm, tests/t_datatype0.scm, tests/t_datatype1.scm, tests/t_datatype2.scm, tests/t_dump_image.scm, tests/t_frb0.scm, tests/t_letreg.scm, tests/t_lex.scm, tests/t_small.scm, tests/t_sorted_list.scm, tests/t_stack.scm, tests/t_symbols.scm, tests/t_vector.scm: new tests 2010-03-02 07:46 rushing * backend.py: wrap_in(): wrap_out(): insn_primop(): handle cexp itypes insn_test(): changed cexp insn params insn_vcase(): special case when only two branches (use "if") insn_move(): implement the move (fetch/assign) insn 2010-03-02 07:43 rushing * run_tests.py: run tests in smallest-to-biggest order 2010-03-02 07:43 rushing * cps.py: register_rib(): specialized rib type for environment lookup, to support the let_reg() construct compiler.lexical_address(): handle register ribs compile_exp(): send 'fix' to 'let_splat', and 'let_splat' to 'let_reg' if it's a small leaf expression compile_varref(): compile_varset(): dispatch to register when needed collect_primargs(): add optional arg 'reorder' to stop it when used by let_reg (which is actually unused now, urgh) compile_let_reg(): feed init values into registers, extend environment rib cps.gen_move(): new old insn, fetch/assign to register remove_moves(): tries to cut down on pointless register traffic, doesn't work right yet. walk(): add clause for pvcase/nvcase find_allocation(): updated to (hopefully) catch all the allocating insns 2010-03-02 07:38 rushing * lib/pair.scm: list: new colon syntax for tags 2010-03-02 07:38 rushing * lib/frb.scm: tree: new colon syntax for tags 2010-03-02 07:37 rushing * lib/core.scm: maybe: new colon syntax for tags 2010-03-02 07:37 rushing * lib/string.scm: new 'raw' predicate cexp syntax list->string(): use correct vcase syntax 2010-03-02 07:37 rushing * itypes.py: datatype.__init__(): pass in context simplified by new type parser 2010-03-02 07:36 rushing * tests/t29.scm: new 'raw' predicate cexp syntax 2010-03-02 07:35 rushing * transform.py: expand_datatype(): use the colon :syntax for tags, looks better, easier to read build_literal(): removed 'comma' hack, was broken anyway 2010-03-02 07:34 rushing * tests/t20.scm: parser test temporarily disabled until I rewrite it 2010-03-02 07:32 rushing * tests/t16.scm: cosmetic 2010-03-02 07:32 rushing * solver.py: parse_cexp_type(): removed check_constraint(): make sure tvar is bound only once constraint_generator.go(): call check_constraint() gen_cexp(): rewritten to use itypes, instantiating each cexp 2010-03-02 07:31 rushing * nodes.py: node.pprint(): print the 'L' leaf annotation parse_type(): rewritten to use itypes walker.walk_exp(): use itypes for cexp 2010-03-02 07:29 rushing * analyze.py: analyzer.__init__(): new attr, inline_multiplier removed vestigial 'pending_inlines' analyze(): find leaf expressions get_fun_calls(): scale by the multiplier value for this function [adjusting for inlines] inline_threshold: lowered to 13 find_inlines.replacer(): set the multiplier when calls > 1 commented out debug print set_multiplier(): adjust the call count for funs called by an inlined fun find_leaves(): find the leaves of the node tree (defined as everything below a funcall), the idea is to identify sub-trees where let_reg is safe to use. 2010-03-02 07:25 rushing * compile.py: cps.irken_compiler => cps.cps 2010-02-24 18:13 rushing * tests/t17.scm: free(): cast arg to void* 2010-02-24 18:09 rushing * tests/t16.scm: test datatype version of frb 2010-02-24 18:07 rushing * tests/t14.scm: tests lib/pair.scm 2010-02-24 18:07 rushing * backend.py: insn_nvcase(): based on the code from 2008 2010-02-24 18:06 rushing * cps.py: support vcase/pvcase/nvcase insns 2010-02-24 18:05 rushing * parse/gen_parser.py: record an idea in the comments 2010-02-24 18:05 rushing * parse/lexer.py: gen lexstep.scm 2010-02-24 18:04 rushing * header.c: read_header(): make clang happier 2010-02-24 18:04 rushing * lib/pair.scm: redone with a datatype declaration 2010-02-24 18:03 rushing * lib/frb.scm: redone with a datatype declaration 2010-02-24 18:03 rushing * lib/core.scm: maybe: normal variant/datatype version 2010-02-24 18:03 rushing * lib/string.scm: string->list(): use normal variant version of lists 2010-02-24 18:02 rushing * lib/symbol.scm: use normal variant type rather than poly variants 2010-02-24 18:01 rushing * pxll.h: ctype.h 2010-02-24 18:01 rushing * itypes.py: t_predicate.__repr__(): cleaner sum(): not a row type, take *args instead datatype: holds info about a datatype declaration 2010-02-24 18:00 rushing * transform.py: add_constructors(): add datatype constructors to the top-level fix exp_function(): remove support for ':type' in the function name [to allow datatype:constructor syntax] expand_vcase(): catch and rename vcase depending on which syntax it uses expand_pvcase(): expand_nvcase(): 'normal' variant case expand_datatype(): record the datatype along with info needed to build constructors 2010-02-24 17:56 rushing * solver.py: check_constraint(): another sanity check: ensure that all tvars are properly bound constraint_generator.__init__(): pass in context rather than the scc graph constraint_generator.go(): call check_constraint() gen_vcase(): distinguish pvcase / nvcase gen_nvcase(): handle 'normal' vcase unifier.simplify(): renamed also -> types don't unname tvars that are in types! instantiate_scheme(): made a global fun solver.instantiate_constraint(): option 'generalize' to avoid universal quantification, for the value restriction. lookup_special_names(): implement %dtcon and %nvget 2010-02-24 17:42 rushing * nodes.py: scheme_string(), to_scheme(): removed. we're not much like scheme any more. maybe write a general 'unparse' routine later... def parse_type(): pass in a dict of known tvars walker.__init__(): pass in context so that so walk_exp() can record datatype decls handle pvcase/nvcase 2010-02-24 17:39 rushing * analyze.py: analyze(): removed 'as scheme' print transform_0_primapp(): vcase => pvcase transform_vcase,transform_pvcase,transform_nvcase(): handle both polymorphic and normal variants is_varargs(): deprecated inline_application(): disable arg-used-only-once inlining, this needs more analysis to know when it's safe to use. special-case nvget when inlining safe_nvget_inline(): is this an nvget that's safe to inline? 2010-02-24 17:34 rushing * compile.py: context.datatypes: global set of datatype decls 2010-02-04 00:09 rushing * parse/README: initial readme for the convoluted process of generating a parser 2010-02-04 00:03 rushing * tests/t_bad_inline.scm: demonstrates the problem with inlining varref args that are assigned to [fixed now] 2010-02-04 00:02 rushing * tests/t_rsum_0.scm: exploring the overly powerful nature of row sums. thinking about ditching them, too much pain for not enough gain. 2010-02-03 23:59 rushing * parse/extract.py: output vectors rather than lists, trying to make the typing phase go faster. 2010-02-03 23:59 rushing * tests/t20.scm: added the LR engine - seems to work. 2010-02-03 23:58 rushing * nodes.py: node.__init__(): automatically call 'fix_attribute_names()' 'inline' attr - for the waddell/dybvig inliner rename(): update the and slots 2010-02-03 23:56 rushing * analyze.py: inline_application(): several problems fixed. 1) if a formal or a 'varref' arg is assigned to, force it to be a 'complex' inline rather than a 'simple' one. 2) commented out the 'complex arg used only once' hack. this was breaking tests/t_stack.scm, obvious in retrospect. substitute(): this was completely failing with varset nodes, fixed. 2010-02-03 23:52 rushing * compile.py: context.nvariant_offset: addition of EMPTY_VECTOR type bumped the position of TC_NIL 2010-01-22 23:11 rushing * inliner.py: waddell & dybvig's inliner, not finished. 2009-12-13 21:30 rushing * tests/t_empty_vector.scm: make sure empty vectors (i.e., TC_EMPTY_VECTOR) work 2009-12-13 21:29 rushing * compile.py: urgh 2009-12-13 21:29 rushing * compile.py: raise the recursion limit whenever the module is imported 2009-12-13 21:28 rushing * backend.py: insn_primop(): support empty vectors by emitting TC_EMPTY_VECTOR when appropriate. 2009-12-13 21:27 rushing * tests/t20.scm: don't crash if no arg is given on the command line (i.e., run_tests.py) 2009-12-13 21:25 rushing * header.c: dump_object(): print TC_EMPTY_VECTOR as #() 2009-12-13 21:25 rushing * pxll.h: TC_EMPTY_VECTOR: new immediate type to represent the empty vector 2009-12-13 21:24 rushing * compile.py: raise the system recursion limit, cps.py is triggering overflow of the default limit of 1000. 2009-12-13 01:08 rushing * parse/grammar: full python grammar, hope to use it soon. 2009-12-13 01:05 rushing * tests/t28.scm: vector and list literals 2009-12-13 01:02 rushing * tests/t42.scm: removed prototype code 2009-12-13 01:02 rushing * tests/t42.scm: testing new generator code 2009-12-13 01:01 rushing * tests/t21.scm: moved stuff from the test into lib/io.scm. 2009-12-13 01:01 rushing * tests/t20.scm: got token filtering/synthesis working, still not running through the parser though. had to take a break to make the solver faster, it absolutely fell down when hit with parser tables. 2009-12-13 00:59 rushing * backend.py: guess_record_type(): cast tuple to list so 'index' will work on it. [tuple.index() appears in python 2.6] insn_primop(): %make-tuple: handle empty vectors (I hope). c_string(): work harder to emit safe strings for C. Unfortunately, we can't use hex encoding since it generalizes to >2 chars (i.e., >1 byte), and thus unpredictably following one with legal digit chars blows up. use octal instead. 2009-12-13 00:56 rushing * cps.py: remove debug print 2009-12-13 00:56 rushing * parse/meta.py: removed unneeded right precedence correctly emit 'optional' 2009-12-13 00:55 rushing * parse/gen_python_parser.py: build/emit the irken lexer and parser all from this one file. 2009-12-13 00:54 rushing * parse/extract.py: given the parser data from Parsing.py LR(1), emit some irken code to implement it. 2009-12-13 00:54 rushing * parse/gen_parser.py: handle OPTIONAL in addition to STAR and PLUS. name_literal(): give a default name to literals that aren't passed in. emit_python(): default to right precedence on everything. seems like a bad idea. 2009-12-13 00:52 rushing * parse/regular.py: CONCAT: inadvertently given the same string rep as PLUS. no biggie. 2009-12-13 00:51 rushing * parse/lexer.py: read(): a simple engine to test a lexer before compiling it. gen_scheme_code(): removed find_sink(): sometimes the sink state is not the second, use this to find it. gen_irken(): send output to a file rather than stdout 2009-12-13 00:49 rushing * lib/pair.scm: use a function to lower the workload on the type solver 2009-12-13 00:49 rushing * lib/frb.scm: #parens rearranged 2009-12-13 00:48 rushing * lib/core.scm: eq?(): type is ('a 'a -> bool), not, ('a 'b -> bool) putcc(): type is (cont 'a -> 'b) (confirmed from "Compiling with Continuations"). make-generator(): rewritten to use getcc/putcc directly. still considered an experiment. 2009-12-13 00:46 rushing * lib/io.scm: still 'modernizing' this file using the new type system 2009-12-13 00:45 rushing * lib/string.scm: string-ref: cast the string to 'unsigned char' to avoid negative char values. string-join: removed. nary funs unlikely any time soon. 2009-12-13 00:44 rushing * itypes.py: t_var: default to False t_predicate.__repr__(): wrap parens around arrow types to make it easier to understand complex function types 2009-12-13 00:42 rushing * transform.py: expand_case(): %eq? -> eq? build_literal(): call a function rather than inlining :cons, which leads to 'insanely detailed types'. [this probably won't help because the inliner will just undo it, sigh] 2009-12-13 00:40 rushing * solver.py: debug print removed 2009-12-13 00:39 rushing * solver.py: Lots more work to speed up the solver when it's fed large initialized data structures. s_let.counter: count the number of variables that are moved into this let multi.__init__(): multi.free(): compute free variables only when needed. get_compress_key(): used to compress the set of equations in the unifier. experimentally this actually slows things down, so not used. unifier.split(): don't cast sz.vars to a set, it already is one. (avoids a copy) call eq.free() to compute it on the fly unifier.simplify(): avoid another cast to set() solver.__init__(): try_unname - a flag to tell us to try to shrink the current s_let() solver.solve(): if try_unname is set, call do_extra_unname(). use difference_update() to update s_let.vars directly rather than copying solver.move_exists(): keep a running counter of the number of variables attached to this s_let(), every 1000 set the try_unname() flag. solver.do_extra_unname(): When solving for a large data structure, the normal split/unname isn't called until it's all over. Even relatively small data structures run into the tens of thousands of tvars. ftv(): no longer needed 2009-12-13 00:26 rushing * nodes.py: tyop 2009-12-13 00:26 rushing * compile.py: context.variant_labels: bit of a hack - pre-define :cons and :nil so they'll match the definitions in pxll.h. This way 'lists' will print out via header.c:dump_object() correctly. 2009-12-11 02:48 rushing * solver.py: unifier.split(): be careful to add eqs to u2 only *after* they've been removed from u, since the act of removing them will blow away their 'in_u' attr. 2009-12-11 01:53 rushing * solver.py: unifier: removed 'self.vars' map, went back to using a tvar attribute, 'in_u'. this has sped up type solving a *lot*, but still not enough to handle the new torture case (predefined variant data structures for the parser). merge(): removed u3: all references removed remember_variant_label(): adjust for the predefined 'negative' entries 2009-12-03 02:35 rushing * backend.py: %vget primop 2009-12-03 02:35 rushing * run_tests.py: don't optimize, we want the tests to run fast 2009-12-03 02:35 rushing * cps.py: compile_primapp(): handle %vget prim 2009-12-03 02:34 rushing * tests/t11.scm: test unary variants 2009-12-03 02:34 rushing * solver.py: type the new %vget primapp 2009-12-03 02:34 rushing * analyze.py: transform_0_let_splat(): find_vcase_label_type(): removed transform_vcase(): use a new primop '%vget' rather than %%cexp (which is harder to type) 2009-12-03 02:32 rushing * compile.py: added the '-tt' (type twice) command line switch 2009-12-02 21:50 rushing * solver.py: cleanups. decode(): renumber(): removed 2009-12-02 21:45 rushing * solver.py: find_records(): removed 2009-12-02 21:38 rushing * tests/t36.scm, tests/t37.scm, tests/t38.scm, tests/t39.scm: new tests 2009-12-02 21:37 rushing * tests/f1.scm, tests/f2.scm, tests/f3.scm, tests/f4.scm, tests/t21.scm, tests/t28.scm, tests/t31.scm, tests/t32.scm, tests/t33.scm, tests/t34.scm, tests/t8.scm: new tests, renamed tests 2009-12-02 21:37 rushing * backend.py: insn_vcase(): simplified using get_safe_typecode - necessary because vcase/else may unpredictably refer to nullary constructors ("unit types"), calling GET_TYPECODE(*p) on an immediate data type. 2009-12-02 21:35 rushing * run_tests.py: support tests starting with the letter 'f' that expect to fail 2009-12-02 21:34 rushing * cps.py: dead code 2009-12-02 21:34 rushing * pxll.h: get_safe_typecode(): inline function - used by vcase 2009-12-02 21:32 rushing * transform.py: use constant bindings for symbols build_vector(): call expand_exp() on the whole result rather than piecemeal build_literal(): fix the list construction stuff to use :cons/:nil 2009-12-02 21:29 rushing * solver.py: some attempts to speed things up class s_let: keep in a set gen_vcase(): support else clauses unifier.add(): speed up tests solve(): u3 stuff isn't needed instantiate_constraint(): correctly handle eqs with >1 variable lookup(): speed up logic typer.go(): find_records(): to be removed 2009-12-02 21:22 rushing * analyze.py: transform_vcase(): implement 'else' clauses 2009-11-30 04:52 rushing * tests/t22.scm, tests/t23.scm, tests/t24.scm, tests/t25.scm, tests/t26.scm, tests/t27.scm, tests/t28.scm, tests/t29.scm, tests/t30.scm, tests/t31.scm, tests/t32.scm, tests/t33.scm, tests/t34.scm, tests/t35.scm: new tests 2009-11-30 04:51 rushing * run_tests.py: in progress - run everything in tests/*.scm [still need to be able to check/compare output] 2009-11-30 04:50 rushing * tests/t9.scm: *** empty log message *** 2009-11-30 04:50 rushing * tests/t8.scm: note that this test currently fails 2009-11-30 04:50 rushing * tests/t7.scm: note that this test currently fails 2009-11-30 04:49 rushing * tests/t4.scm: *** empty log message *** 2009-11-30 04:49 rushing * tests/t1.scm: renamed a variable 2009-11-30 04:49 rushing * tests/t19.scm: uncommented lots of the test 2009-11-30 04:48 rushing * tests/t16.scm: introduced a dependency on lib/pair.scm somehow 2009-11-30 04:45 rushing * tests/t21.scm: moving much further along to having a working io library 2009-11-30 04:45 rushing * tests/t11.scm: give a good workout to variant case, including don't-care binding, inlining, etc.. 2009-11-30 04:44 rushing * backend.py: write_header(): support cinclude done(): records2, labels2 (these need to be cleaned up) guess_record_type(): try to disambiguate a row type insn_primop(): support %record-set insn_vcase(): use original arity to compute tag values insn_fetch_const(): vestigial, removed 2009-11-30 04:41 rushing * cps.py: compile_primapp(): support %rset get_record_tag(): moved from analysis.py to here compile_record_literal(): nasty bug - forgot to shift the record tag compile_record_extension(): distinguish between record-set! and record extension gen_lit(): .type->.ltype 2009-11-30 04:37 rushing * header.c: dump_object(): catch #\eof and print it out neatly 2009-11-30 04:36 rushing * lib/core.scm: error(): just jump to Lreturn rather than calling abort() 2009-11-30 04:36 rushing * lib/io.scm: open(): call zero-terminate on path arg 2009-11-30 04:35 rushing * lib/string.scm: zero-terminate() 2009-11-30 04:35 rushing * itypes.py: get_record_sig(): move to solver.py 2009-11-30 04:35 rushing * transform.py: expand__percentvcase(): enable the use of low-level %vcase prim [used in at least one of the tests] expand_cinclude(): new special form expand_set_bang(): new %rset translation expand_begin(): merge sequences when possible 2009-11-30 04:32 rushing * solver.py: major rewrite: finally understand S-LETALL, implemented. stop 'rendering' type schemes into human form just so they'll get chopped back up into tiny pieces again when instantiated. gen_cexp(): handle non-arrow cexp types (e.g., for C constants) gen_vcase(): have to handle this node type in order to re-type after analysis/inlining unifier(): a dict to hold memoized decode results reworked the way we store equations and variables: using mutation on the '.eq' slot was causing a *lot* of confusion, so now we have a map from var->eq. is_free(): no longer needed split(): reworked decode(): switch from '.eq' slot to var->eq map sanity(): check invariants in new data structure simplify(): done much more carefully! prune(): new function to slim a constraint by removing unnecessary equations [why this should be necessary is still a mystery to me] find_free(): find the free variables of a unifier/subst reverse_graph(): to help traverse the equation graph bottom up, used by do_letall() do_letall(): implement the S-LETALL rule solver(): separate the notion of 'verbose' from 'single-stepping' solve(): temporarily disabled the catching of type errors s-solve-id: let self.lookup() instantiate the constraint s-letall: finally implemented this rule. call move_exists() to move any 'older' vars up and out s-pop-let: actually lower the rank (ugh, how embarrassing) build_type_schemes(): removed instantiate_scheme(): instantiate the schemes returned by lookup_special_names() instantiate_constraint(): instantiate a constraint-based scheme lookup_special_names(): added %rset sum->rsum, product->rproduct print_solution(): removed get_record_sig(): redone, probably be able to remove or simplify this typer.decode(): much simpler decoding using the node.tv variable. 2009-11-30 04:17 rushing * nodes.py: node.pprint(): printing the type out again (to help me debug solver rewrite) literal: use 'ltype' for literal type rather than 'type', which breaks things later on make_tuple: use 'ttype' for tuple type, ... 2009-11-30 04:15 rushing * analyze.py: transform_0_let_splat(): transform_1_application(): disabled, to be removed transform_vcase(): delay variant type lookup emit fresh tvars for cexp results find_vcase_label_type(): to be removed 2009-11-30 04:11 rushing * lisp_reader.py: read(): support #\eof 2009-11-30 04:11 rushing * compile.py: compile_file(): step_solver arg [need to get compiler options into their own class] added a second type solver pass after inlining 2009-11-17 06:03 rushing * tests/t21.scm: moved code into lib/string.scm, this test is... simpler. 2009-11-17 05:59 rushing * lib/string.scm: sys:argv: collect into a vector instead 2009-11-17 05:43 rushing * lib/pair.scm: updated for the new type system 2009-11-17 05:42 rushing * tests/t21.scm: test vectors and argc/argv 2009-11-17 05:40 rushing * lib/frb2.scm, lib/frb3.scm, lib/list.scm, lib/primops.scm, lib/uobj.scm, lib/vector.scm, parse/lex4: lose some old files 2009-11-17 05:39 rushing * backend.py: insn_primop(): implement %make-vector 2009-11-17 05:39 rushing * cps.py: compile_primapp(): handle %make-vector 2009-11-17 05:39 rushing * header.c: vm(): include 'int i' for a loop counter 2009-11-17 05:38 rushing * solver.py: lookup_special_names(): handle %make-vector 2009-11-17 03:44 rushing * lib/pair.scm: redone for new type system 2009-11-17 01:23 rushing * solver.py: solver::solve(): oops, really new syntax in the error handler 2009-11-17 01:14 rushing * tests/t19.scm: test the symbol table 2009-11-17 01:14 rushing * tests/t20.scm: bringing the lexer back to life 2009-11-17 01:13 rushing * parse/gen_parser.py: convert a high-level grammar into a Parsing.py-style grammar 2009-11-17 01:13 rushing * parse/meta.py: parser for python-style meta-grammar 2009-11-17 01:12 rushing * lib/core.scm: updated for the new type system. printn(): print(): use proper type variables zero?(): new fun error(): return any type 2009-11-17 01:11 rushing * lib/io.scm: updated for the new type system 2009-11-17 01:10 rushing * lib/string.scm: string-compare(): trying a little to avoid consing, a little more work yet. list->string(): string->list(): updated for the new type system 2009-11-17 01:09 rushing * lib/symbol.scm: updated for the new type system 2009-11-17 01:09 rushing * itypes.py: t_symbol: t_continuation: new base types rproduct(): rsum(): special product and sum types just for use with rows 2009-11-17 01:08 rushing * tests/t18.scm: test out array-ref[syntax] 2009-11-17 01:07 rushing * tests/t16.scm: recast the test to use the code in lib/frb.scm, add a few more tests 2009-11-17 01:06 rushing * transform.py: expand__percentvcon(): only tack on the arity once expand__percent_percentmake_tuple(): looks like this avoidance is no longer needed 2009-11-17 01:05 rushing * solver.py: parse_cexp_type(): p(): handle '/raw' types gen_primapp(): catch single-value %vcon constructors, don't wrap the single type in product(). gen_make_tuple(): handle this node type solve(): catch TypeErrors and try to do something reasonable with them print_type_error(): dump the stack and decode the two types for the user. still sucks but it's better than pdb. lookup_special_names(): use 'rproduct' instead of 'product' for row types... no point in confusing the two rather different types. handle %%array-ref 2009-11-17 01:00 rushing * analyze.py: transform_vcase(): bugs in don't-care vars: bug caused by editing the 'success' node in place bug - don't set alt_formals until success.formals has been edited find_vcase_label_type(): try harder to find the type of a vcase value variable, for some reason it alternates between being in the varref or the vardef node (in which case we have to pull it out of the c_forall) 2009-11-16 02:53 rushing * lib/frb.scm: rewritten for the new type system (based on tests/t16.scm) 2009-11-14 22:32 rushing * parse/lexer.py: updated for new type system 2009-11-14 00:48 rushing * parse/Parsing.py: Jason Evan's LR(1) parser generator 2009-11-14 00:39 rushing * tests/t18.scm: testing vectors 2009-11-14 00:39 rushing * tests/t16.scm: removed some comments 2009-11-14 00:39 rushing * cps.py: compile_primapp(): %%vector-literal => %vector-literal 2009-11-14 00:37 rushing * itypes.py: vector() type constructor 2009-11-14 00:37 rushing * transform.py: build_vector(): put %vector-literal arity in its name 2009-11-14 00:37 rushing * solver.py: type vector literals 2009-11-10 20:05 rushing * tests/t17.scm: random c interface testing 2009-11-10 20:05 rushing * tests/t16.scm: continuing to port the test case. pretty much done, just need the generator. 2009-11-10 20:04 rushing * header.c: comment changes 2009-11-10 20:03 rushing * transform.py: expand_vcase(): correctly handle sequence bodies 2009-11-10 20:02 rushing * solver.py: constraint_generator: gen_varset() attempts to speed things up: commented out all the self.dprint() calls unifier.decode(): watch for cycles involving tvars only solver.solve(): c=true;s=s_let:compare ranks rather than calling u.is_free() 2009-11-10 20:00 rushing * compile.py: add code to profile the solver removed read_string() removed inline tests default to llvm-gcc only on Darwin 2009-11-09 20:46 rushing * tests/t4.scm: *** empty log message *** 2009-11-09 02:30 rushing * tests/t16.scm: okasaki's red/black trees, first attempt using new variants.. 2009-11-09 02:30 rushing * backend.py: insn_vcase(): catch a vcase for a non-existent vcon label, report it with a nicer error 2009-11-09 02:28 rushing * solver.py: unifier.unify_rows(): oops, send rdefault==rdefault through the normal decompose process 2009-11-09 02:27 rushing * nodes.py: node.__repr__(): commented out the code that prints the type of every node [too much noise in the debug dump for complex types] rename_variables.rename(): removed special case code for names starting with '&' and '_' 2009-11-09 02:26 rushing * analyze.py: transform_vcase(): filter out don't-care bindings correctly pull out the type of a variant label find_vcase_label_type(): helper for that 2009-11-07 22:02 rushing * tests/t15.scm: test cexp type decls 2009-11-07 22:02 rushing * backend.py: wrap_in(): handle/ignore type vars in cexp types 2009-11-07 22:01 rushing * itypes.py: moved parse_cexp_type to solver.py 2009-11-07 22:01 rushing * solver.py: parse_cexp_type(): moved from itypes.py to here fixed to handle type variables lookup_special_names(): updated some of the greek types in the comments to be more accurate. 2009-11-07 21:59 rushing * nodes.py: parse_type(): support type variables in cexp types complain about inconsistent arrow types 2009-11-07 01:11 rushing * LICENSE.txt: forgot to include this. 8^) 2009-11-07 00:33 rushing * solver.py: debug prints only if self.verbose 2009-11-07 00:33 rushing * graph.py: commented out debug print 2009-11-07 00:04 rushing * typing.py: Yeah! Removed typing.py! 2009-11-07 00:03 rushing * transform.py: removed references to old typing module 2009-11-07 00:02 rushing * compile.py: removed references to old typing module 2009-11-07 00:02 rushing * nodes.py: removed references to old typing module 2009-11-06 23:57 rushing * tests/t14.scm: test/demonstration of lisp lists and associated functions, built with polymorphic variants 2009-11-06 23:56 rushing * tests/t13.scm: demonstrate re-using a variant label for completely different purposes 2009-11-06 23:56 rushing * backend.py: insn_vcase(): insns.params now holds alt_formals, not just types collect (index, tag) pairs use in each case statement (rather than index) insn_new_vector() => insn_new_tuple() insn_store_vec() => insn_store_tuple() insn_store_tuple(): insns.params now contains an offset into the tuple insn_store_env(): removed insn_move(): vestigial, removed 2009-11-06 23:53 rushing * cps.py: gen_vcase(): take the alt_formals list rather than just types compile_tuple_rands() => compile_store_rands(): coalesce the jobs of these two functions, pass in an offset parameter to handle the difference. compile_vector_rands(): use compile_store_rands() compile_record_literal(): use compile_store_rands() and cut down on register abuse gen_store_env(): removed (now done with store_tuple) gen_store_vec() => gen_store_tuple() renamed, generalized gen_move(): gen_save(): vestigial, removed find_allocation(): catch new_tuple insns 2009-11-06 23:50 rushing * itypes.py: t_base: store the name of the type in an attribute 2009-11-06 23:49 rushing * transform.py: expand_exp(): oops, put that call to build_record() back in there 2009-11-06 23:48 rushing * solver.py: unifier.decode(): watch out for cyclical types find_records(): navigate the new universe of other product and row types don't forget to examine top_tv, in case the whole program returns a record. [this function needs to be removed and another way found to collect unique record signatures] 2009-11-06 05:45 rushing * tests/t12.scm: test of apply-lambda inlining 2009-11-06 05:45 rushing * tests/t11.scm: variable-arity variant constructors 2009-11-06 05:45 rushing * tests/t10.scm: variable-arity variant constructors 2009-11-06 05:44 rushing * tests/t9.scm: test the speed of record and variant creation 2009-11-06 05:44 rushing * backend.py: insn_vcase(): changed 'unit' to product() 2009-11-06 05:43 rushing * cps.py: %vcon/label/arity has arity embedded in the name 2009-11-06 05:43 rushing * itypes.py: product(): allow args other than rows 2009-11-06 05:42 rushing * transform.py: fixed the auto-lookup of expansion methods for names with encoded metadata, like %vcon/label/arity. expand__percentvcon(): encode arity into name [feeling prologish] expand_quote(): removed old list/nil code 2009-11-06 05:41 rushing * solver.py: variable-arity variant constructors and variant filters 2009-11-06 05:40 rushing * analyze.py: variable-arity variant constructors 2009-11-06 02:17 rushing * notes/log.txt: *** empty log message *** 2009-11-06 00:20 rushing * tests/t6.scm: use zero? test (makes no speed difference) 2009-11-05 23:47 rushing * backend.py: insn_test(): I got a little too aggressive inlining cexp tests, had to put back the PXLL_IS_TRUE/wrap_out() stuff. at least with llvm-gcc it generates the same code. 2009-11-05 23:45 rushing * analyze.py: turn off opt_apply_lambda_to_let transform_vcase(): don't use let - instead apply lambdas, this will allow the inliner to do the right thing inline_application(): inline the application of a lambda 2009-11-05 22:38 rushing * tests/t8.scm: playing with new vcase syntax 2009-11-05 22:37 rushing * tests/t7.scm: *** empty log message *** 2009-11-05 22:37 rushing * backend.py: removed typecase 2009-11-05 22:37 rushing * cps.py: typecase => vcase 2009-11-05 22:36 rushing * transform.py: expand_colon(): turn :label into (%vcon/label ) removed typecase expand_vcase(): first attempt 2009-11-05 22:35 rushing * solver.py: renamed %vmake to %vfail, fixed its type 2009-11-05 22:34 rushing * nodes.py: removed typecase 2009-11-05 22:34 rushing * analyze.py: removed typecase transform_vcase(): catch the impossible %vfail, emit no code 2009-11-05 22:16 rushing * lisp_reader.py: colon variant constructor syntax 2009-11-05 05:23 rushing * tests/t8.scm: testing variants - with vcase syntax 2009-11-05 05:23 rushing * tests/t7.scm: testing variants (pre-vcase/case syntax) 2009-11-05 05:22 rushing * notes/log.txt: *** empty log message *** 2009-11-05 05:18 rushing * backend.py: insn_vcase(): slightly modified version of typecase still more work to do (support products for example) 2009-11-05 05:17 rushing * cps.py: handle %vcon primapp compile_vcase(): similar to compile_typecase() gen_vcase(): new insn flatten(): handle vcase 2009-11-05 05:16 rushing * transform.py: expand_vcase(): placeholder, will be rewritten 2009-11-05 05:15 rushing * nodes.py: vcase node type (will obsolete typecase) 2009-11-05 05:14 rushing * analyze.py: transform_0_primapp(): catch %vcase, call transform_vcase() transform_1_set() removed 2009-11-04 19:36 rushing * solver.py: constraint_generator: gen(): oops, forgot to return value 2009-11-04 19:23 rushing * solver.py: constraint_generator: dynamic node type lookup (i.e., gen_varref() rather than 'if t.is_a (...)' solver: pass context rather than context.datatypes renamed %vextend to %vcon remember_variant_label() 2009-11-04 02:18 rushing * compile.py: using llvm-gcc 2009-11-04 02:17 rushing * tests/t6.scm: commentary on the different output given by gcc-llvm 2009-11-04 02:11 rushing * tests/t6.scm: testing integer loop performance (still looking good 8^) 2009-11-04 02:10 rushing * tests/t5.scm: testing simple conditionals 2009-11-04 02:10 rushing * tests/tak20.scm: the tak classic 2009-11-04 02:10 rushing * backend.py: done(): removed pointless verbose comment insn_test(): support 'simple conditionals' again by inlining a cexp test rather than casting to boolean, moving to a register and testing that register against PXLL_FALSE 2009-11-04 02:08 rushing * cps.py: make 'simple conditionals' work again 2009-11-04 02:05 rushing * header.c: removed verify() function 2009-11-04 01:10 rushing * backend.py: commented out more verify calls 2009-11-04 00:54 rushing * irken.html: updated/modified 2009-11-04 00:33 rushing * itypes.py: unit type 2009-11-04 00:23 rushing * tests, tests/t0.scm, tests/t1.scm, tests/t2.scm, tests/t3.scm, tests/t4.scm: redoing tests 2009-11-04 00:22 rushing * tests: redoing tests 2009-11-04 00:18 rushing * backend.py: pass in compile context removed obsolete node.typecheck support emit_typecheck(): removed done(): emit the lookup_field() function insn_primop(): implement %record-get, %extend-tuple commented out some self.verify() calls (to be removed) removed support for safety>3 calls to verify 2009-11-04 00:15 rushing * cps.py: pass in compile context compile %raccess, %rextend compile_record_literal(): compile_record_extension(): turn these into %make-tuple calls 2009-11-04 00:14 rushing * header.c: lookup_field() prototype varref_safe(), varset_safe(): removed 2009-11-04 00:14 rushing * itypes.py: t_str => t_string t_undefined get_record_sig(): given a product (rlabel (...)), extract the signature of the record (i.e., its sorted list of labels) 2009-11-04 00:12 rushing * transform.py: transformer: pass in compile context removed obsolete klass support support record literals, record access build_record(): transform a record literal into a set of primops expand_class(): removed 2009-11-04 00:10 rushing * solver.py: removed unused fun 2009-11-04 00:10 rushing * solver.py: updating the comments a bit generator.gen(): attach tvar at each node treat primapp like app n-ary let_splat handle sequence map literals through base_types unifier.split(): replace compress local fun with self.decode() when splitting out a var, see if it has a node attached and 'solve' its type using self.decode() solver: pass in context.datatypes instantiate(): treat ints like tvars lookup_special_names(): put this back - record ops are primapps now typer: pass in context after running the solver, decode any remaining tvars find_records(): scan all types for complete record definitions, remember them along with the set of all labels 2009-11-04 00:03 rushing * nodes.py: removed obsolete typecheck attr removed obsolete 'klass' stuff rename_variables() now takes a datatypes arg [to avoid renaming constructors] 2009-11-04 00:02 rushing * analyze.py: undo temporary hacks for row-related prims 2009-11-04 00:02 rushing * analyze.py: pass the compilation context down comment out the get/set transforms handle row-related primitives [fixme] 2009-11-04 00:00 rushing * notes/rows.txt: *** empty log message *** 2009-11-02 01:43 rushing * lisp_reader.py: support for record literals 2009-11-02 01:43 rushing * compile.py: new 'context' class to hold information across all the various passes 2009-10-28 23:36 rushing * notes/log.txt: sp 2009-10-28 23:32 rushing * t1.c, test.image, test.img: first release in a while! 2009-10-28 23:32 rushing * notes/log.txt: *** empty log message *** 2009-10-28 23:31 rushing * tests/tc1.scm: *** empty log message *** 2009-10-28 23:31 rushing * tests/tc0.scm: *** empty log message *** 2009-10-28 23:29 rushing * itypes.py: types 2009-10-28 23:28 rushing * notes/classes.txt: thoughts on classes and a circular dependency 2009-10-28 23:27 rushing * tests/t0.scm: use %%cexp 2009-10-28 23:26 rushing * solver.py: interactive testing only 2009-10-28 23:26 rushing * compile.py: new constraint-based type inference engine 2009-10-28 23:25 rushing * gc.c: gcc warnings 2009-10-28 23:25 rushing * header.c: gcc warnings 2009-10-28 22:57 rushing * solver.py: removed unneeded test cases and prim_env support 2009-10-28 22:56 rushing * solver.py: first version that limps along and types irken nodes. still no rows. 2009-10-28 22:55 rushing * graph.py: dependency graph and fix-reordering code from old HM typing.py module 2009-10-19 21:15 rushing * cps.py: renamed lambda_tree => nodes 2009-10-19 21:15 rushing * transform.py: renamed lambda_tree => nodes 2009-10-19 21:15 rushing * typing.py: renamed lambda_tree => nodes 2009-10-19 21:15 rushing * analyze.py: renamed lambda_tree => nodes 2009-10-19 21:15 rushing * compile.py: renamed lambda_tree => nodes 2009-10-19 21:14 rushing * tests/y.scm: Y ask Y? 2009-10-19 21:01 rushing * lambda_tree.py, nodes.py: renamed lambda_tree.py to nodes.py 2009-10-19 20:57 rushing * notes/log.txt: *** empty log message *** 2009-10-19 20:52 rushing * README, lib/rbtree.scm, pottier_remy.py: readme is html, removing unneeded files, preparing for new solver 2009-10-19 20:45 rushing * lib/core.scm: clearing out mods in prep for the new type solver 2009-10-19 20:44 rushing * lib/io.scm: clearing out mods in prep for the new type solver 2009-10-19 20:44 rushing * lib/string.scm: clearing out mods in prep for the new type solver 2009-10-19 20:44 rushing * tests/product_0.scm: clearing out mods in prep for the new type solver 2009-10-19 20:43 rushing * tests/io_0.scm: clearing out mods in prep for the new type solver 2009-10-19 20:43 rushing * tests/t_callcc_2.scm: clearing out mods in prep for the new type solver 2009-10-19 20:42 rushing * tests/step5.scm: clearing out mods in prep for the new type solver 2009-10-19 20:42 rushing * typing.py: clearing out mods in prep for the new type solver [this file will be going away! 8^)] 2009-10-19 20:23 rushing * analyze.py: clearing out mods in prep for the new type solver 2009-10-19 20:22 rushing * lambda_tree.py: class-related stuff I'm going to have to replace anyway 2009-10-19 20:22 rushing * lisp_reader.py: support postfix array notation 2009-10-19 20:22 rushing * compile.py: clearing out mods in prep for the new type solver trying out llvm/clang 2009-10-19 20:21 rushing * cps.py: clearing out mods in prep for the new type solver %%product-ref (will probably be replaced) 2009-10-19 20:20 rushing * parse/lexer.py: table-based dfa using strings 2009-10-19 20:19 rushing * pxll.h: clearing out mods in prep for the new type solver 2009-10-19 20:19 rushing * transform.py: clearing out mods in prep for the new type solver 2009-10-19 20:18 rushing * solver.py: checking in the pottier/remy solver 2009-09-30 21:35 rushing * README: *** empty log message *** 2009-09-30 21:34 rushing * irken.html: converted from README, updated 2009-07-19 23:30 rushing * pottier_remy.py: simply typed lambda calculus, constraint generation. still need to write a solver (which here I think just means unify()). 2009-01-05 21:31 sam * notes/log.txt: *** empty log message *** 2009-01-05 21:28 sam * cps.py: pxll => irken 2009-01-05 21:27 sam * compile.py: pxll => irken 2009-01-05 21:25 sam * a.out, test, test.c, typing.backup.py, typing.backup2.py, typing_attr_type.py: removing these old files which don't belong in the repository. 2009-01-05 21:24 sam * tests/frb.scm: got the generator code working, fixed the nth problem with polymorphism. renamed 'tree:' => 'node:' 2009-01-05 21:23 sam * cps.py: pass verbose down into compiler and 'find_allocation()' 2009-01-05 21:22 sam * lib/core.scm: added datatype 2009-01-05 21:22 sam * lib/symbol.scm: use node: rather than tree: prefix for the frb 2009-01-05 21:21 sam * lib/frb.scm: put identifying 'node:' prefix on many of the top-level funs [may formalize this syntax later with some kind of package/module/structure system] node:make-generator: in order to pass key/val pairs through the generator, we have to package them up using the constructor. 2009-01-05 21:19 sam * typing.py: removed some outdated comments product.__init__(): handle procedure types initial_type_environment(): pass down to build_type_scheme() build_type_scheme(): when printing verbose info, print the name of the function we're schemeing for. 2009-01-05 21:17 sam * compile.py: pass verbose down to cps.py 2008-12-22 21:38 sam * README: *** empty log message *** 2008-12-22 21:29 sam * .: renamed the project 2008-12-22 21:19 sam * test new user product datatypes 2008-12-22 21:19 sam * trying to grok why aliases are borked 2008-12-22 21:18 sam * new string tests 2008-12-22 21:18 sam * new io tests 2008-12-22 21:18 sam * updated for new typing 2008-12-22 21:16 sam * updated for new typing 2008-12-22 21:16 sam * updated for new typing 2008-12-22 21:16 sam * updated for new typing 2008-12-22 21:16 sam * updated for new typing 2008-12-22 21:15 sam * updated for new typing 2008-12-22 21:15 sam * hand-translated for the new typing [need to fix the lexer generator] 2008-12-22 21:15 sam * wrap_in(): support a '/raw' annotation to stop an object from getting auto-wrapped. (needed to access a string *object*) insn_primop(): make-tuple: handle dead constructors (maybe a bad idea?) TC_USEROBJ+tag: multiply tag by 4! insn_new_vector: insn_store_vec: used for large vector literals 2008-12-22 21:12 sam * compile_primapp(): if a vector literal has more than 5 elements, compile it as a sequence of assignments - otherwise a 100-element vector needs 100 registers to build! compile_vector_literal(): fill in a vector literal like it were a series of function arguments. analyze(): renamed to 'find_allocation()', and updated/fixed. walk_function(): handle the special case of 'typecase' (similar to 'test') 2008-12-22 21:09 sam * re-arranged to not place a limit on typecodes (i.e., user tags will continue past TC_USEROBJ and TC_USERIMM...) 2008-12-22 21:07 sam * dump_object(): don't forget to divide user tags by 4 allocate(): calling check_heap() here is a Bad Idea, removed even this commented code to stop me from doing it. 2008-12-22 21:06 sam * updated for new typing 2008-12-22 21:05 sam * updated for new typing 2008-12-22 21:05 sam * updated for new typing 2008-12-22 21:04 sam * updated for new typing 2008-12-22 21:04 sam * updated for new typing 2008-12-22 21:03 sam * h-m version of lib/pair.scm ('pair' doesn't correctly describe this any more) 2008-12-22 21:02 sam * TC_USERIMM comment was wrong TC_LAST removed 2008-12-22 21:02 sam * datatype: support datatypes nil: emit '() as (list/nil) rather than atom ('nil', 'nil') add_constants_and_classes(): prepending constants... now probably not needed due to typing.reorder_fix(). 2008-12-22 21:00 sam * class product: support user-defined product types... optional name gen_constructor(): get_datatype_constructors(): new methods get_type_variable(): wrapper for the constructor that makes these act more like 'pure' types (i.e., so they act more like the integers they used to be). I kept running into a problem where two tvars with the same serial were conflicting with each other. the_type_map: pulled out the bottom-most layer of the type environment. To me it seems much less confusing to have a separate data structure recording all the 'named' types. wildcard(): renamed to parse_cexp_type() support function types in %%cexp (needed this for call/cc) check_partition(): needed to suss out bugs in partition_fix() reorder_fix(): use the dependency graph to physically re-order the values in a fix... this was needed in order to correctly handle e.g. a top-level variable that needs to call a function to initialize itself... [in Scheme these are usually set to #f, but with typing we can't be so sloppy] 2008-12-22 20:53 sam * alpha_convert(): removed [now lives in lambda_tree.py] transform_1_fix(): coalesce cascading fix (just like we do with let_splat) check_args(): removed, no longer needed! various notes/reminders, this file still needs lots of updating work, mostly to get it to use the two graphs created by typing. 2008-12-22 20:51 sam * add_constructors(): commented out class code added support for product datatypes 2008-12-22 20:49 sam * pxll=>irken new notes on The Plan 2008-12-22 20:29 sam * pxll=>irken 2008-12-22 20:29 sam * pxll=>irken 2008-12-18 01:57 sam * tests that should fail to typecheck 2008-12-18 01:55 sam * contrived example meant to have at least one strongly-connected component 2008-12-18 01:55 sam * testing the SCC algorithm using the graph from CLR 2008-12-18 01:54 sam * analyzer.__init__(): vars dict is now passed in analyzer.add_constructors(): moved to lambda_tree.py transform_0_typecase(): layout of alt_formals changed 2008-12-18 01:53 sam * cleaned up some outdated comments 2008-12-18 01:52 sam * flesh out this test of polymorphism and union types, by instantiating the red-black tree and several functions using a few different types. 2008-12-18 01:51 sam * expand_typecase(): the 'typecase' node was cleaned up a bit 2008-12-18 01:50 sam * Turns out that H-M polymorphism works by continually embedding letrecs inside of each other. Rather than force the user to do this, we compute what that embedded set would look like, and then emulate that *only for the purposes of typing*. rearranged the file more logically type_of(): fix: 'virtually' partition the fix into topologically-sorted groups of strongly-connected parts. build_dependency_graph(): build_call_graph(), moved from analyze.py to here. transpose(): make the transpose of a adjacency-matrix graph strongly(): find the strongly-connected components of the graph using Kosaraju's algorithm. returns the components in topologically-sorted order. partition_fix(): using the SCC graph computed by strongly(), sort each set of functions/vars in a fix in dependency order. 2008-12-18 01:44 sam * moved alpha conversion and add_constuctors() into this file 2008-12-18 01:43 sam * compile_file(): pulled alpha conversion out of analyze.py, now runs *before* typing. pass the dict of all variables into analyze, which still needs it. 2008-12-13 04:05 sam * *** empty log message *** 2008-12-13 04:01 sam * *** empty log message *** 2008-12-13 04:00 sam * yet another version of function red-black trees, this time using algrebraic datatypes. 2008-12-13 03:59 sam * wrap_in(): automatically convert to insn_typecase(): GET_TYPECODE() will *not* return zero for a pointer value, so use 'default' rather than 'case 0'. 2008-12-13 03:58 sam * compile_typecase(): use exp.vtype, not the (possibly tvar) value type node.print_info(): typecase: print the assigned vtype 2008-12-13 03:57 sam * type_program(): don't bother with any of the code that tries to attach types to nodes... the type_of() wrapper seems to do a good enough job now. type_of(): typecase: type=>vtype in typecase node set vtype when sorting the alts, also sort the alt formals! push everything back into the node correctly 2008-12-13 03:53 sam * transform_0_typecase(): allow 'dontcare' bindings 2008-12-13 03:52 sam * typecase: changed the 'type' attr to 'vtype', less confusing 2008-12-13 03:52 sam * read(): allow #u for the 'undefined' type 2008-12-12 01:33 sam * *** empty log message *** 2008-12-12 01:31 sam * support unit types insn_typecase(): emit 1-2 switch clauses depending on the mix of unit and tuple types. 2008-12-12 01:30 sam * support unit types insn needs to pass the type object down 2008-12-12 01:30 sam * support unit types dump_object(): fall-through for TC_USERIMM+n 2008-12-12 01:29 sam * support unit types new #define for TC_USERIMM, user-defined immediate types (i.e., unit types) start there. 2008-12-12 01:29 sam * support unit types 2008-12-12 01:29 sam * support unit types 2008-12-12 01:28 sam * *** empty log message *** 2008-12-12 01:28 sam * support unit types 2008-12-11 02:57 sam * *** empty log message *** 2008-12-11 02:56 sam * updated to new syntax 2008-12-11 02:56 sam * updated to new syntax 2008-12-11 02:56 sam * new 2008-12-11 02:56 sam * new 2008-12-11 02:55 sam * compile_typecase(): change the name of the attr again! 2008-12-11 02:55 sam * typecase: new syntax - require name of type 2008-12-11 02:54 sam * class product: handle polymorphic products class union: handle polymorphic unions initial_type_environment(): build polymorphic datatypes correctly removed the 'nil' base type union.get_datatype_constructors(): just return the names unify(): fail correctly when two base types differ type_of(): typecase: handle the new explicit-type syntax instantiate_type(): handle products & unions 2008-12-11 02:48 sam * compile_typecase(): typecase node attribute renamed 2008-12-11 02:48 sam * typecase: new syntax - require name of type 2008-12-10 23:20 sam * *** empty log message *** 2008-12-10 23:17 sam * compile_typecase(): typecase node attribute renamed 2008-12-10 23:17 sam * full algebraic datatypes expand_datatype(): new syntax expand_typecase(): new syntax 2008-12-10 23:16 sam * full algebraic datatypes class product: minimal support for a product type lookup_subst(): don't store None as the final value of a tvar. 8^) union.gen_constructor(): handle product sub-types unify(): remember original values of t1&t2 for debugging watch for type aliases and dereference them [this might be the trick I need to do recursive types correctly] type_of(): union: unify using a product sub-type when appropriate typecase: unify using a product sub-type when appropriate 2008-12-10 23:05 sam * transform_0_typecase(): new 'variant' of typecase 2008-12-10 23:04 sam * full algebraic datatypes typecase: changed 'varname' attr to 'variant', though I think I need to undo it... I thought I had a way of avoiding the requirement that it be a varref. 2008-12-10 23:02 sam * first test of full algebraic datatypes 2008-12-10 01:46 sam * *** empty log message *** 2008-12-10 01:37 sam * *** empty log message *** 2008-12-10 01:37 sam * *** empty log message *** 2008-12-10 01:35 sam * insn_primop(): new variant of make-tuple supporting variant-type tags insn_typecase(): new insn, generates a switch 2008-12-10 01:34 sam * supporting union/sum datatypes compile_typecase(): new method gen_typecase(): new method, insn type pretty_print(): special-case along with and 2008-12-10 01:33 sam * dump_object(): handle TC_USEROBJ+ [this needs to be done to gc as well] 2008-12-10 01:32 sam * comment describing how variant types are tagged 2008-12-10 01:32 sam * expand_datatype(): new method expand_typecase(): new method 2008-12-10 01:30 sam * supporting union/sum datatypes class union: union/sum type. type_of(): let_splat: extend the rib one var at a time application: handle rator_type of typecase: unify it apply_tenv(): walk let* ribs backward 2008-12-10 01:25 sam * supporting union/sum datatypes analyze(): call add_constructors if there are any datatype defns transform(): added a 'stage' arg, to allow differents sets of transforms for different stages of optimization. add_constructors(): add union/sum constructors transform_0_typecase(): hack to wrap typecase with a let that pulls out the (single) variant object. this is likely to go away when I switch to sum-of-products. 2008-12-10 01:22 sam * supporting union/sum datatypes node.flag: boolean flag, used in analyze to stop infinite recursive transform. I'll probably end up removing this. constructor, typecase: new node types 2008-12-05 01:35 sam * type_of(): primapp/%%array-ref: return the array's item type, not the array type itself. 2008-12-05 01:33 sam * build_vector(): trying this: allow expressions rather than just constants 2008-12-04 11:42 sam * rewrote all code using instances rather than an assoc of ints, including the 'path' compression suggested by the secret eoplv1 draft chapter. probably still some more cleaning up to do. 2008-12-04 10:19 sam * read(): bug when reading the symbol '-' 2008-12-04 06:45 sam * insn_primop(): %array-set 2008-12-04 06:44 sam * compile_primapp(): emit %%array-set 2008-12-04 06:44 sam * expand_set_bang(): emit %%array-ref 2008-12-04 06:43 sam * test assignment 2008-12-04 06:41 sam * array assignment 2008-12-04 04:54 sam * array types 2008-12-04 04:48 sam * analyze(): point out in a useless comment how this is currently borken. 2008-12-04 04:44 sam * support %array-ref prim, plus range check 2008-12-04 04:44 sam * compile_primapp(): spun this into a separate fun added support for %%array-ref. eventually I'll get the 'number of percent signs' problem figured out.8^) 2008-12-04 04:41 sam * range_check(): new function for checking runtime array index 2008-12-04 04:41 sam * build_vector(): instead of calling the 'vector' function, use a %%vector-literal primapp removed unused gen_constructor() function 2008-12-04 04:40 sam * added an array type. still need to support set! on array refs 2008-12-04 04:35 sam * reader.read(): support postfix array-reference syntax. a little ugly. 2008-12-04 04:35 sam * use '-m64' instead of '-arch ppc64', this seems to work on intel and ppc default to -m64 on os x 2008-12-02 03:55 sam * don't tar up the svn dir 2008-12-02 03:43 sam * analyzer.replace(): when recomputing the node size after replacing the sub-nodes, count this node as one, not zero. analyzer.inline_application(): verbose print reformatted so the size is easier to read 2008-12-02 03:41 sam * node.__init__(): default the size to one, not zero 2008-12-02 03:40 sam * removed some prints, protected others with 'if verbose:' removed add_typechecks() function 2008-12-02 03:15 sam * *** empty log message *** 2008-12-02 03:00 sam * 2008-12-02 02:58 sam * pxll import