ChangeLog
- 2010-03-27 04:58 rushing
- [r496] tests/parse_0.py more complicated expression
- 2010-03-27 04:57 rushing
- [r495] tests/t_parse.scm rewrote several vcase exprs using pattern matching (with lists)
- 2010-03-27 04:57 rushing
- [r494] tests/t_match7.scm T/insert(): rewrite some vcase exprs with pattern matching
- 2010-03-27 04:56 rushing
- [r493] lib/core.scm impossible(): new error function
- 2010-03-27 04:56 rushing
- [r492] transform.py expand_nvcase() => exp_nvcase()expand_pvcase() => exp_pvcase() this avoids calling the transform more than once
- 2010-03-27 04:55 rushing
- [r491] nodes.py apply_subst(): don't bother putting entries for '_' in the lenv
- 2010-03-27 04:54 rushing
- [r490] match.py kind(): support list patterns "()", "(x . y)", "(a b c d ...)"subst(): don't emit subst for wildcard varsconstructor_rule(): when possible use '_' for wildcards
- 2010-03-26 19:46 rushing
- [r489] lib/string.scm lame string->int()
- 2010-03-26 19:46 rushing
- [r488] Makefile make sure we're clean
- 2010-03-26 19:45 rushing
- [r487] tests/parse_0.py test toy predicate language
- 2010-03-26 19:45 rushing
- [r486] tests/t_string2.scm test string->int
- 2010-03-26 19:43 rushing
- [r485] tests/t_parse.scm added a parse-tree => AST phase using pattern matching.
- 2010-03-26 03:51 rushing
- [r484] tests/t_match9.scm test <match> special form
- 2010-03-26 03:51 rushing
- [r483] tests/t_match8.scm test matching on symbols
- 2010-03-26 03:50 rushing
- [r482] tests/t_match7.scm Use pattern matching to print the tree.
- 2010-03-26 03:49 rushing
- [r481] match.py compile(): we don't need <name>. return vars, codekind(): handle symbols in patterns
- 2010-03-26 03:47 rushing
- [r480] 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
- [r479] parse/extract.py renamed to gen_irken.py
- 2010-03-25 22:26 rushing
- [r478] 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
- [r477] 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
- [r476] cps.py disentangle pvcase and nvcase, especially since they now have such different shapescompile_primap(): support %%match-error
- 2010-03-25 22:21 rushing
- [r475] parse/README updated
- 2010-03-25 22:21 rushing
- [r474] 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
- [r473] parse/meta.py alts: build an nary VBAR
- 2010-03-25 22:19 rushing
- [r472] 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
- [r471] header.c comment
- 2010-03-25 22:17 rushing
- [r470] lib/pair.scm map()
- 2010-03-25 22:17 rushing
- [r469] lib/string.scm string-compare(): rewritten a little more clearly now, let_reg makes it ok.
- 2010-03-25 22:16 rushing
- [r468] lib/symbol.scm symbol->stringsymbol-<?
- 2010-03-25 22:16 rushing
- [r467] itypes.py datatype.arity(): return the arity of a constructor
- 2010-03-25 22:15 rushing
- [r466] tests/t_dump_image.scm 'thunk' now takes an argument
- 2010-03-25 22:13 rushing
- [r465] lib/core.scm dump(),load(): can't use a thunk easily since call/cc wants an arg.
- 2010-03-25 22:12 rushing
- [r464] transform.py __init__(): initialize a pattern match compilerfind_datatypes(): scan for datatypes at top level, rather than wherever we might find them.process_formals(): remove variable-arity codeexp_define(): catch pattern-matching definitionsexp_match(): call the match compilerexpand_nvcase(): removed the assumption that all alts are present, which forces us to keep track of which ones are. add support for an 'else' clause.expand_datatype() => parse_datatype()
- 2010-03-25 22:08 rushing
- [r463] 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
- [r462] 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
- [r461] match.py pattern matching!
- 2010-03-16 03:17 rushing
- [r460] parse/gen_irken.py renamed
- 2010-03-13 04:31 rushing
- [r459] tests/t_case0.scm debugging a problem with symbols in code generated for case
- 2010-03-13 04:31 rushing
- [r458] tests/t_string1.scm test mutability of string literals
- 2010-03-13 04:30 rushing
- [r457] tests/t_string0.scm new tests
- 2010-03-13 04:29 rushing
- [r456] 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
- [r455] notes/literals.txt straight talk about literals
- 2010-03-13 04:28 rushing
- [r454] backend.py emit_constructed_literals(): new (biggish) functionverify():insn_verify(): removed, along with some commented-out callsinsn_constructed(): emit a reference to a constructed literalinsn_make_string(): removed
- 2010-03-13 04:26 rushing
- [r453] cps.py scan_constructed(): scan and collect all constructed literalsgen_constructed(): new insn
- 2010-03-13 04:25 rushing
- [r452] parse/lexer.py reworked to support new literal syntax
- 2010-03-13 04:25 rushing
- [r451] parse/extract.py reworked to support new literal syntax
- 2010-03-13 04:24 rushing
- [r450] header.c placeholder for constructed literalschanged the magic string to a //comment
- 2010-03-13 04:24 rushing
- [r449] pxll.h STRING_TUPLE_LENGTH STRING_HEADER UOTAG UITAG UCON UCON0 UOHEAD: new macros make it easier to construct literalspxll_string: declare the data array to have no length rather than zero length
- 2010-03-13 04:23 rushing
- [r448] itypes.py comments
- 2010-03-13 04:22 rushing
- [r447] transform.py RuntimeLiteral: exception for literals with illegal bits that can't be figured at compile-timeget_constant_binding():add_constants(): removed!expand_exp(): leave strings and symbols aloneexpand_literal(): support the (literal ...) syntaxbuild_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
- [r446] solver.py type a constructed literal
- 2010-03-13 04:17 rushing
- [r445] nodes.py constructed: new node type for constructed literals
- 2010-03-13 04:17 rushing
- [r444] compile.py context: list of constructed literals symbol table
- 2010-03-07 09:22 rushing
- [r443] backend.py emit_gc_copy_regs(): couple of one-off bugs there
- 2010-03-07 09:15 rushing
- [r442] tests/t20.scm renamed to t_parse, still in progress
- 2010-03-07 09:14 rushing
- [r441] 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
- [r440] 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 regsclass function: holds the accumulated allocation sumalloc(): sums up allocations in self.current_funinsn_close(): manage self.current_fun inside each function
- 2010-03-07 09:11 rushing
- [r439] gc.c gc_flip(): now takes <nregs> arg call the generated gc_regs_in() & gc_regs_out()gc_relocate(): returns void
- 2010-03-07 09:09 rushing
- [r438] header.c check_heap():gc_flip(): now takes <nregs> argconst head_room
- 2010-03-07 09:08 rushing
- [r437] pxll.h put head room into a global const variable
- 2010-03-05 07:35 rushing
- [r436] run_tests.py sometimes the lexer gets swapped out
- 2010-03-05 07:10 rushing
- [r435] tests/parse_0.py simple parse test for t_parse.scm
- 2010-03-05 07:10 rushing
- [r434] tests/t_alias.scm tests aliases
- 2010-03-05 07:10 rushing
- [r433] tests/t_letreg0.scm *** empty log message ***
- 2010-03-05 07:09 rushing
- [r432] tests/t_datatype4.scm tests aliases, and chunks of initialized data
- 2010-03-05 07:08 rushing
- [r431] tests/t_datatype3.scm *** empty log message ***
- 2010-03-05 07:08 rushing
- [r430] backend.py insn_vcase(): deref a pointer in GET_TYPECODE() when it's a tuple.
- 2010-03-05 07:07 rushing
- [r429] cps.py gen_simple_test(): renamed an arg
- 2010-03-05 07:07 rushing
- [r428] parse/README the forgotten extract.py step
- 2010-03-05 07:07 rushing
- [r427] 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
- [r426] parse/extract.py reworked for normal-variant datatypes.
- 2010-03-05 07:06 rushing
- [r425] tests/t_parse.scm previously known as 't20'.reworked for normal-variant datatypes.
- 2010-03-05 07:05 rushing
- [r424] 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
- [r423] 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
- [r422] cps.py safe_for_let_reg(): don't use let_reg if any of the variables will escape
- 2010-03-03 06:33 rushing
- [r421] 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
- [r420] lib/pair.scm datatype list: rearrange the order so that nil is u0 [to facilitate testing]
- 2010-03-03 06:32 rushing
- [r419] lib/io.scm file:read-buffer(): a bug! found by a test!
- 2010-03-03 06:31 rushing
- [r418] 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
- [r417] run_tests.py verify the actual output of testsseveral functions for tests that require special attention
- 2010-03-02 07:50 rushing
- [r416] header.c dump_image(): return an int
- 2010-03-02 07:49 rushing
- [r415] tests/t_rsum_0.scm unwritten test
- 2010-03-02 07:48 rushing
- [r414] 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
- [r413] backend.py wrap_in():wrap_out():insn_primop(): handle cexp itypesinsn_test(): changed cexp insn paramsinsn_vcase(): special case when only two branches (use "if")insn_move(): implement the move (fetch/assign) insn
- 2010-03-02 07:43 rushing
- [r412] run_tests.py run tests in smallest-to-biggest order
- 2010-03-02 07:43 rushing
- [r411] cps.py register_rib(): specialized rib type for environment lookup, to support the let_reg() constructcompiler.lexical_address(): handle register ribscompile_exp(): send 'fix' to 'let_splat', and 'let_splat' to 'let_reg' if it's a small leaf expressioncompile_varref():compile_varset(): dispatch to register when neededcollect_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 ribcps.gen_move(): new old insn, fetch/assign to registerremove_moves(): tries to cut down on pointless register traffic, doesn't work right yet.walk(): add clause for pvcase/nvcasefind_allocation(): updated to (hopefully) catch all the allocating insns
- 2010-03-02 07:38 rushing
- [r410] lib/pair.scm list: new colon syntax for tags
- 2010-03-02 07:38 rushing
- [r409] lib/frb.scm tree: new colon syntax for tags
- 2010-03-02 07:37 rushing
- [r408] lib/core.scm maybe: new colon syntax for tags
- 2010-03-02 07:37 rushing
- [r407] lib/string.scm new 'raw' predicate cexp syntaxlist->string(): use correct vcase syntax
- 2010-03-02 07:37 rushing
- [r406] itypes.py datatype.__init__(): pass in context simplified by new type parser
- 2010-03-02 07:36 rushing
- [r405] tests/t29.scm new 'raw' predicate cexp syntax
- 2010-03-02 07:35 rushing
- [r404] transform.py expand_datatype(): use the colon :syntax for tags, looks better, easier to readbuild_literal(): removed 'comma' hack, was broken anyway
- 2010-03-02 07:34 rushing
- [r403] tests/t20.scm parser test temporarily disabled until I rewrite it
- 2010-03-02 07:32 rushing
- [r402] tests/t16.scm cosmetic
- 2010-03-02 07:32 rushing
- [r401] solver.py parse_cexp_type(): removedcheck_constraint(): make sure tvar is bound only onceconstraint_generator.go(): call check_constraint()gen_cexp(): rewritten to use itypes, instantiating each cexp
- 2010-03-02 07:31 rushing
- [r400] nodes.py node.pprint(): print the 'L' leaf annotationparse_type(): rewritten to use itypeswalker.walk_exp(): use itypes for cexp
- 2010-03-02 07:29 rushing
- [r399] analyze.py analyzer.__init__(): new attr, inline_multiplier removed vestigial 'pending_inlines'analyze(): find leaf expressionsget_fun_calls(): scale by the multiplier value for this function [adjusting for inlines]inline_threshold: lowered to 13find_inlines.replacer(): set the multiplier when calls > 1 commented out debug printset_multiplier(): adjust the call count for funs called by an inlined funfind_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
- [r398] compile.py cps.irken_compiler => cps.cps
- 2010-02-24 18:13 rushing
- [r397] tests/t17.scm free(): cast arg to void*
- 2010-02-24 18:09 rushing
- [r396] tests/t16.scm test datatype version of frb
- 2010-02-24 18:07 rushing
- [r395] tests/t14.scm tests lib/pair.scm
- 2010-02-24 18:07 rushing
- [r394] backend.py insn_nvcase(): based on the code from 2008
- 2010-02-24 18:06 rushing
- [r393] cps.py support vcase/pvcase/nvcase insns
- 2010-02-24 18:05 rushing
- [r392] parse/gen_parser.py record an idea in the comments
- 2010-02-24 18:05 rushing
- [r391] parse/lexer.py gen lexstep.scm
- 2010-02-24 18:04 rushing
- [r390] header.c read_header(): make clang happier
- 2010-02-24 18:04 rushing
- [r389] lib/pair.scm redone with a datatype declaration
- 2010-02-24 18:03 rushing
- [r388] lib/frb.scm redone with a datatype declaration
- 2010-02-24 18:03 rushing
- [r387] lib/core.scm maybe: normal variant/datatype version
- 2010-02-24 18:03 rushing
- [r386] lib/string.scm string->list(): use normal variant version of lists
- 2010-02-24 18:02 rushing
- [r385] lib/symbol.scm use normal variant type rather than poly variants
- 2010-02-24 18:01 rushing
- [r384] pxll.h ctype.h
- 2010-02-24 18:01 rushing
- [r383] itypes.py t_predicate.__repr__(): cleanersum(): not a row type, take *args insteaddatatype: holds info about a datatype declaration
- 2010-02-24 18:00 rushing
- [r382] transform.py add_constructors(): add datatype constructors to the top-level fixexp_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 usesexpand_pvcase():expand_nvcase(): 'normal' variant caseexpand_datatype(): record the datatype along with info needed to build constructors
- 2010-02-24 17:56 rushing
- [r381] solver.py check_constraint(): another sanity check: ensure that all tvars are properly boundconstraint_generator.__init__(): pass in context rather than the scc graphconstraint_generator.go(): call check_constraint()gen_vcase(): distinguish pvcase / nvcasegen_nvcase(): handle 'normal' vcaseunifier.simplify(): renamed also -> types don't unname tvars that are in types!instantiate_scheme(): made a global funsolver.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
- [r380] 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 tvarswalker.__init__(): pass in context so that so walk_exp() can record datatype declshandle pvcase/nvcase
- 2010-02-24 17:39 rushing
- [r379] analyze.py analyze(): removed 'as scheme' printtransform_0_primapp(): vcase => pvcasetransform_vcase,transform_pvcase,transform_nvcase(): handle both polymorphic and normal variantsis_varargs(): deprecatedinline_application(): disable arg-used-only-once inlining, this needs more analysis to know when it's safe to use. special-case nvget when inliningsafe_nvget_inline(): is this an nvget that's safe to inline?
- 2010-02-24 17:34 rushing
- [r378] compile.py context.datatypes: global set of datatype decls
- 2010-02-04 00:09 rushing
- [r377] parse/README initial readme for the convoluted process of generating a parser
- 2010-02-04 00:03 rushing
- [r376] tests/t_bad_inline.scm demonstrates the problem with inlining varref args that are assigned to [fixed now]
- 2010-02-04 00:02 rushing
- [r375] 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
- [r374] parse/extract.py output vectors rather than lists, trying to make the typing phase go faster.
- 2010-02-03 23:59 rushing
- [r373] tests/t20.scm added the LR engine - seems to work.
- 2010-02-03 23:58 rushing
- [r372] nodes.py node.__init__(): automatically call 'fix_attribute_names()' 'inline' attr - for the waddell/dybvig inlinerrename(): update the <refs> and <assigns> slots
- 2010-02-03 23:56 rushing
- [r371] 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
- [r370] compile.py context.nvariant_offset: addition of EMPTY_VECTOR type bumped the position of TC_NIL
- 2010-01-22 23:11 rushing
- [r369] inliner.py waddell & dybvig's inliner, not finished.
- 2009-12-13 21:30 rushing
- [r368] tests/t_empty_vector.scm make sure empty vectors (i.e., TC_EMPTY_VECTOR) work
- 2009-12-13 21:29 rushing
- [r367] compile.py urgh
- 2009-12-13 21:29 rushing
- [r366] compile.py raise the recursion limit whenever the module is imported
- 2009-12-13 21:28 rushing
- [r365] backend.py insn_primop(): support empty vectors by emitting TC_EMPTY_VECTOR when appropriate.
- 2009-12-13 21:27 rushing
- [r364] 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
- [r363] header.c dump_object(): print TC_EMPTY_VECTOR as #()
- 2009-12-13 21:25 rushing
- [r362] pxll.h TC_EMPTY_VECTOR: new immediate type to represent the empty vector
- 2009-12-13 21:24 rushing
- [r361] compile.py raise the system recursion limit, cps.py is triggering overflow of the default limit of 1000.
- 2009-12-13 01:08 rushing
- [r360] parse/grammar full python grammar, hope to use it soon.
- 2009-12-13 01:05 rushing
- [r359] tests/t28.scm vector and list literals
- 2009-12-13 01:02 rushing
- [r358] tests/t42.scm removed prototype code
- 2009-12-13 01:02 rushing
- [r357] tests/t42.scm testing new generator code
- 2009-12-13 01:01 rushing
- [r356] tests/t21.scm moved stuff from the test into lib/io.scm.
- 2009-12-13 01:01 rushing
- [r355] 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
- [r354] 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
- [r353] cps.py remove debug print
- 2009-12-13 00:56 rushing
- [r352] parse/meta.py removed unneeded right precedencecorrectly emit 'optional'
- 2009-12-13 00:55 rushing
- [r351] parse/gen_python_parser.py build/emit the irken lexer and parser all from this one file.
- 2009-12-13 00:54 rushing
- [r350] 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
- [r349] 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
- [r348] parse/regular.py CONCAT: inadvertently given the same string rep as PLUS. no biggie.
- 2009-12-13 00:51 rushing
- [r347] parse/lexer.py read(): a simple engine to test a lexer before compiling it.gen_scheme_code(): removedfind_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
- [r346] lib/pair.scm use a <cons> function to lower the workload on the type solver
- 2009-12-13 00:49 rushing
- [r345] lib/frb.scm #parens rearranged
- 2009-12-13 00:48 rushing
- [r344] 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
- [r343] lib/io.scm still 'modernizing' this file using the new type system
- 2009-12-13 00:45 rushing
- [r342] 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
- [r341] itypes.py t_var: default <in_u> to Falset_predicate.__repr__(): wrap parens around arrow types to make it easier to understand complex function types
- 2009-12-13 00:42 rushing
- [r340] transform.py expand_case(): %eq? -> eq?build_literal(): call a function <cons> 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
- [r339] solver.py debug print removed
- 2009-12-13 00:39 rushing
- [r338] 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 letmulti.__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 flyunifier.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 copyingsolver.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
- [r337] nodes.py tyop
- 2009-12-13 00:26 rushing
- [r336] 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
- [r335] 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
- [r334] 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 removedremember_variant_label(): adjust for the predefined 'negative' entries
- 2009-12-03 02:35 rushing
- [r333] backend.py %vget primop
- 2009-12-03 02:35 rushing
- [r332] run_tests.py don't optimize, we want the tests to run fast
- 2009-12-03 02:35 rushing
- [r331] cps.py compile_primapp(): handle %vget prim
- 2009-12-03 02:34 rushing
- [r330] tests/t11.scm test unary variants
- 2009-12-03 02:34 rushing
- [r329] solver.py type the new %vget primapp
- 2009-12-03 02:34 rushing
- [r328] analyze.py transform_0_let_splat():find_vcase_label_type(): removedtransform_vcase(): use a new primop '%vget' rather than %%cexp (which is harder to type)
- 2009-12-03 02:32 rushing
- [r327] compile.py added the '-tt' (type twice) command line switch
- 2009-12-02 21:50 rushing
- [r326] solver.py cleanups.decode():renumber(): removed
- 2009-12-02 21:45 rushing
- [r325] solver.py find_records(): removed
- 2009-12-02 21:38 rushing
- [r324] tests/t36.scm, tests/t37.scm, tests/t38.scm, tests/t39.scm new tests
- 2009-12-02 21:37 rushing
- [r323] 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
- [r322] 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
- [r321] run_tests.py support tests starting with the letter 'f' that expect to fail
- 2009-12-02 21:34 rushing
- [r320] cps.py dead code
- 2009-12-02 21:34 rushing
- [r319] pxll.h get_safe_typecode(): inline function - used by vcase
- 2009-12-02 21:32 rushing
- [r318] transform.py use constant bindings for symbolsbuild_vector(): call expand_exp() on the whole result rather than piecemealbuild_literal(): fix the list construction stuff to use :cons/:nil
- 2009-12-02 21:29 rushing
- [r317] solver.py some attempts to speed things upclass s_let: keep <vars> in a setgen_vcase(): support else clausesunifier.add(): speed up testssolve(): u3 stuff isn't neededinstantiate_constraint(): correctly handle eqs with >1 variablelookup(): speed up logictyper.go(): find_records(): to be removed
- 2009-12-02 21:22 rushing
- [r316] analyze.py transform_vcase(): implement 'else' clauses
- 2009-11-30 04:52 rushing
- [r315] 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
- [r314] 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
- [r313] tests/t9.scm *** empty log message ***
- 2009-11-30 04:50 rushing
- [r312] tests/t8.scm note that this test currently fails
- 2009-11-30 04:50 rushing
- [r311] tests/t7.scm note that this test currently fails
- 2009-11-30 04:49 rushing
- [r310] tests/t4.scm *** empty log message ***
- 2009-11-30 04:49 rushing
- [r309] tests/t1.scm renamed a variable
- 2009-11-30 04:49 rushing
- [r308] tests/t19.scm uncommented lots of the test
- 2009-11-30 04:48 rushing
- [r307] tests/t16.scm introduced a dependency on lib/pair.scm somehow
- 2009-11-30 04:45 rushing
- [r306] tests/t21.scm moving much further along to having a working io library
- 2009-11-30 04:45 rushing
- [r305] tests/t11.scm give a good workout to variant case, including don't-care binding, inlining, etc..
- 2009-11-30 04:44 rushing
- [r304] backend.py write_header(): support cincludedone(): records2, labels2 (these need to be cleaned up)guess_record_type(): try to disambiguate a row typeinsn_primop(): support %record-setinsn_vcase(): use original arity to compute tag valuesinsn_fetch_const(): vestigial, removed
- 2009-11-30 04:41 rushing
- [r303] cps.py compile_primapp(): support %rsetget_record_tag(): moved from analysis.py to herecompile_record_literal(): nasty bug - forgot to shift the record tagcompile_record_extension(): distinguish between record-set! and record extensiongen_lit(): .type->.ltype
- 2009-11-30 04:37 rushing
- [r302] header.c dump_object(): catch #\eof and print it out neatly
- 2009-11-30 04:36 rushing
- [r301] lib/core.scm error(): just jump to Lreturn rather than calling abort()
- 2009-11-30 04:36 rushing
- [r300] lib/io.scm open(): call zero-terminate on path arg
- 2009-11-30 04:35 rushing
- [r299] lib/string.scm zero-terminate()
- 2009-11-30 04:35 rushing
- [r298] itypes.py get_record_sig(): move to solver.py
- 2009-11-30 04:35 rushing
- [r297] transform.py expand__percentvcase(): enable the use of low-level %vcase prim [used in at least one of the tests]expand_cinclude(): new special formexpand_set_bang(): new %rset translationexpand_begin(): merge sequences when possible
- 2009-11-30 04:32 rushing
- [r296] 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/inliningunifier(): 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 neededsplit(): reworkeddecode(): switch from '.eq' slot to var->eq mapsanity(): check invariants in new data structuresimplify(): 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/substreverse_graph(): to help traverse the equation graph bottom up, used by do_letall()do_letall(): implement the S-LETALL rulesolver(): 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(): removedinstantiate_scheme(): instantiate the schemes returned by lookup_special_names()instantiate_constraint(): instantiate a constraint-based schemelookup_special_names(): added %rset sum->rsum, product->rproductprint_solution(): removedget_record_sig(): redone, probably be able to remove or simplify thistyper.decode(): much simpler decoding using the node.tv variable.
- 2009-11-30 04:17 rushing
- [r295] 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 onmake_tuple: use 'ttype' for tuple type, ...
- 2009-11-30 04:15 rushing
- [r294] analyze.py transform_0_let_splat():transform_1_application(): disabled, to be removedtransform_vcase(): delay variant type lookup emit fresh tvars for cexp resultsfind_vcase_label_type(): to be removed
- 2009-11-30 04:11 rushing
- [r293] lisp_reader.py read(): support #\eof
- 2009-11-30 04:11 rushing
- [r292] 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
- [r291] tests/t21.scm moved code into lib/string.scm, this test is... simpler.
- 2009-11-17 05:59 rushing
- [r290] lib/string.scm sys:argv: collect into a vector instead
- 2009-11-17 05:43 rushing
- [r289] lib/pair.scm updated for the new type system
- 2009-11-17 05:42 rushing
- [r288] tests/t21.scm test vectors and argc/argv
- 2009-11-17 05:40 rushing
- [r287] 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
- [r286] backend.py insn_primop(): implement %make-vector
- 2009-11-17 05:39 rushing
- [r285] cps.py compile_primapp(): handle %make-vector
- 2009-11-17 05:39 rushing
- [r284] header.c vm(): include 'int i' for a loop counter
- 2009-11-17 05:38 rushing
- [r283] solver.py lookup_special_names(): handle %make-vector
- 2009-11-17 03:44 rushing
- [r282] lib/pair.scm redone for new type system
- 2009-11-17 01:23 rushing
- [r281] solver.py solver::solve(): oops, really new syntax in the error handler
- 2009-11-17 01:14 rushing
- [r280] tests/t19.scm test the symbol table
- 2009-11-17 01:14 rushing
- [r279] tests/t20.scm bringing the lexer back to life
- 2009-11-17 01:13 rushing
- [r278] parse/gen_parser.py convert a high-level grammar into a Parsing.py-style grammar
- 2009-11-17 01:13 rushing
- [r277] parse/meta.py parser for python-style meta-grammar
- 2009-11-17 01:12 rushing
- [r276] lib/core.scm updated for the new type system.printn():print(): use proper type variableszero?(): new funerror(): return any type
- 2009-11-17 01:11 rushing
- [r275] lib/io.scm updated for the new type system
- 2009-11-17 01:10 rushing
- [r274] 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
- [r273] lib/symbol.scm updated for the new type system
- 2009-11-17 01:09 rushing
- [r272] itypes.py t_symbol:t_continuation: new base typesrproduct():rsum(): special product and sum types just for use with rows
- 2009-11-17 01:08 rushing
- [r271] tests/t18.scm test out array-ref[syntax]
- 2009-11-17 01:07 rushing
- [r270] 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
- [r269] transform.py expand__percentvcon(): only tack on the arity onceexpand__percent_percentmake_tuple(): looks like this avoidance is no longer needed
- 2009-11-17 01:05 rushing
- [r268] solver.py parse_cexp_type(): p(): handle '/raw' typesgen_primapp(): catch single-value %vcon constructors, don't wrap the single type in product().gen_make_tuple(): handle this node typesolve(): catch TypeErrors and try to do something reasonable with themprint_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
- [r267] 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 editedfind_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
- [r266] lib/frb.scm rewritten for the new type system (based on tests/t16.scm)
- 2009-11-14 22:32 rushing
- [r265] parse/lexer.py updated for new type system
- 2009-11-14 00:48 rushing
- [r264] parse/Parsing.py Jason Evan's LR(1) parser generator
- 2009-11-14 00:39 rushing
- [r263] tests/t18.scm testing vectors
- 2009-11-14 00:39 rushing
- [r262] tests/t16.scm removed some comments
- 2009-11-14 00:39 rushing
- [r261] cps.py compile_primapp(): %%vector-literal => %vector-literal
- 2009-11-14 00:37 rushing
- [r260] itypes.py vector() type constructor
- 2009-11-14 00:37 rushing
- [r259] transform.py build_vector(): put %vector-literal arity in its name
- 2009-11-14 00:37 rushing
- [r258] solver.py type vector literals
- 2009-11-10 20:05 rushing
- [r257] tests/t17.scm random c interface testing
- 2009-11-10 20:05 rushing
- [r256] tests/t16.scm continuing to port the test case. pretty much done, just need the generator.
- 2009-11-10 20:04 rushing
- [r255] header.c comment changes
- 2009-11-10 20:03 rushing
- [r254] transform.py expand_vcase(): correctly handle sequence bodies
- 2009-11-10 20:02 rushing
- [r253] 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
- [r252] compile.py add code to profile the solverremoved read_string()removed inline testsdefault to llvm-gcc only on Darwin
- 2009-11-09 20:46 rushing
- [r251] tests/t4.scm *** empty log message ***
- 2009-11-09 02:30 rushing
- [r250] tests/t16.scm okasaki's red/black trees, first attempt using new variants..
- 2009-11-09 02:30 rushing
- [r249] 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
- [r248] solver.py unifier.unify_rows(): oops, send rdefault==rdefault through the normal decompose process
- 2009-11-09 02:27 rushing
- [r247] 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
- [r246] analyze.py transform_vcase(): filter out don't-care bindings correctly pull out the type of a variant labelfind_vcase_label_type(): helper for that
- 2009-11-07 22:02 rushing
- [r245] tests/t15.scm test cexp type decls
- 2009-11-07 22:02 rushing
- [r244] backend.py wrap_in(): handle/ignore type vars in cexp types
- 2009-11-07 22:01 rushing
- [r243] itypes.py moved parse_cexp_type to solver.py
- 2009-11-07 22:01 rushing
- [r242] solver.py parse_cexp_type(): moved from itypes.py to here fixed to handle type variableslookup_special_names(): updated some of the greek types in the comments to be more accurate.
- 2009-11-07 21:59 rushing
- [r241] nodes.py parse_type(): support type variables in cexp types complain about inconsistent arrow types
- 2009-11-07 01:11 rushing
- [r240] LICENSE.txt forgot to include this. 8^)
- 2009-11-07 00:33 rushing
- [r239] solver.py debug prints only if self.verbose
- 2009-11-07 00:33 rushing
- [r238] graph.py commented out debug print
- 2009-11-07 00:04 rushing
- [r237] typing.py Yeah! Removed typing.py!
- 2009-11-07 00:03 rushing
- [r236] transform.py removed references to old typing module
- 2009-11-07 00:02 rushing
- [r235] compile.py removed references to old typing module
- 2009-11-07 00:02 rushing
- [r234] nodes.py removed references to old typing module
- 2009-11-06 23:57 rushing
- [r233] tests/t14.scm test/demonstration of lisp lists and associated functions, built with polymorphic variants
- 2009-11-06 23:56 rushing
- [r232] tests/t13.scm demonstrate re-using a variant label for completely different purposes
- 2009-11-06 23:56 rushing
- [r231] backend.py insn_vcase(): insns.params now holds alt_formals, not just types collect (index, tag) pairs use <tag> 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 tupleinsn_store_env(): removedinsn_move(): vestigial, removed
- 2009-11-06 23:53 rushing
- [r230] cps.py gen_vcase(): take the alt_formals list rather than just typescompile_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 abusegen_store_env(): removed (now done with store_tuple)gen_store_vec() => gen_store_tuple() renamed, generalizedgen_move():gen_save(): vestigial, removedfind_allocation(): catch new_tuple insns
- 2009-11-06 23:50 rushing
- [r229] itypes.py t_base: store the name of the type in an attribute
- 2009-11-06 23:49 rushing
- [r228] transform.py expand_exp(): oops, put that call to build_record() back in there
- 2009-11-06 23:48 rushing
- [r227] solver.py unifier.decode(): watch out for cyclical typesfind_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
- [r226] tests/t12.scm test of apply-lambda inlining
- 2009-11-06 05:45 rushing
- [r225] tests/t11.scm variable-arity variant constructors
- 2009-11-06 05:45 rushing
- [r224] tests/t10.scm variable-arity variant constructors
- 2009-11-06 05:44 rushing
- [r223] tests/t9.scm test the speed of record and variant creation
- 2009-11-06 05:44 rushing
- [r222] backend.py insn_vcase(): changed 'unit' to product()
- 2009-11-06 05:43 rushing
- [r221] cps.py %vcon/label/arity has arity embedded in the name
- 2009-11-06 05:43 rushing
- [r220] itypes.py product(): allow args other than rows
- 2009-11-06 05:42 rushing
- [r219] 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
- [r218] solver.py variable-arity variant constructors and variant filters
- 2009-11-06 05:40 rushing
- [r217] analyze.py variable-arity variant constructors
- 2009-11-06 02:17 rushing
- [r216] notes/log.txt *** empty log message ***
- 2009-11-06 00:20 rushing
- [r215] tests/t6.scm use zero? test (makes no speed difference)
- 2009-11-05 23:47 rushing
- [r214] 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
- [r213] analyze.py turn off opt_apply_lambda_to_lettransform_vcase(): don't use let - instead apply lambdas, this will allow the inliner to do the right thinginline_application(): inline the application of a lambda
- 2009-11-05 22:38 rushing
- [r212] tests/t8.scm playing with new vcase syntax
- 2009-11-05 22:37 rushing
- [r211] tests/t7.scm *** empty log message ***
- 2009-11-05 22:37 rushing
- [r210] backend.py removed typecase
- 2009-11-05 22:37 rushing
- [r209] cps.py typecase => vcase
- 2009-11-05 22:36 rushing
- [r208] transform.py expand_colon(): turn :label into (%vcon/label <value>)removed typecaseexpand_vcase(): first attempt
- 2009-11-05 22:35 rushing
- [r207] solver.py renamed %vmake to %vfail, fixed its type
- 2009-11-05 22:34 rushing
- [r206] nodes.py removed typecase
- 2009-11-05 22:34 rushing
- [r205] analyze.py removed typecasetransform_vcase(): catch the impossible %vfail, emit no code
- 2009-11-05 22:16 rushing
- [r204] lisp_reader.py colon variant constructor syntax
- 2009-11-05 05:23 rushing
- [r203] tests/t8.scm testing variants - with vcase syntax
- 2009-11-05 05:23 rushing
- [r202] tests/t7.scm testing variants (pre-vcase/case syntax)
- 2009-11-05 05:22 rushing
- [r201] notes/log.txt *** empty log message ***
- 2009-11-05 05:18 rushing
- [r200] backend.py insn_vcase(): slightly modified version of typecase still more work to do (support products for example)
- 2009-11-05 05:17 rushing
- [r199] cps.py handle %vcon primappcompile_vcase(): similar to compile_typecase()gen_vcase(): new insnflatten(): handle vcase
- 2009-11-05 05:16 rushing
- [r198] transform.py expand_vcase(): placeholder, will be rewritten
- 2009-11-05 05:15 rushing
- [r197] nodes.py vcase node type (will obsolete typecase)
- 2009-11-05 05:14 rushing
- [r196] analyze.py transform_0_primapp(): catch %vcase, call transform_vcase()transform_1_set() removed
- 2009-11-04 19:36 rushing
- [r195] solver.py constraint_generator: gen(): oops, forgot to return value
- 2009-11-04 19:23 rushing
- [r194] 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
- [r193] compile.py using llvm-gcc
- 2009-11-04 02:17 rushing
- [r192] tests/t6.scm commentary on the different output given by gcc-llvm
- 2009-11-04 02:11 rushing
- [r191] tests/t6.scm testing integer loop performance (still looking good 8^)
- 2009-11-04 02:10 rushing
- [r190] tests/t5.scm testing simple conditionals
- 2009-11-04 02:10 rushing
- [r189] tests/tak20.scm the tak classic
- 2009-11-04 02:10 rushing
- [r188] backend.py done(): removed pointless verbose commentinsn_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
- [r187] cps.py make 'simple conditionals' work again
- 2009-11-04 02:05 rushing
- [r186] header.c removed verify() function
- 2009-11-04 01:10 rushing
- [r185] backend.py commented out more verify calls
- 2009-11-04 00:54 rushing
- [r184] irken.html updated/modified
- 2009-11-04 00:33 rushing
- [r183] itypes.py unit type
- 2009-11-04 00:23 rushing
- [r182] tests, tests/t0.scm, tests/t1.scm, tests/t2.scm, tests/t3.scm, tests/t4.scm redoing tests
- 2009-11-04 00:22 rushing
- [r181] tests redoing tests
- 2009-11-04 00:18 rushing
- [r180] backend.py pass in compile contextremoved obsolete node.typecheck supportemit_typecheck(): removeddone(): emit the lookup_field() functioninsn_primop(): implement %record-get, %extend-tuplecommented out some self.verify() calls (to be removed)removed support for safety>3 calls to verify
- 2009-11-04 00:15 rushing
- [r179] cps.py pass in compile contextcompile %raccess, %rextendcompile_record_literal():compile_record_extension(): turn these into %make-tuple calls
- 2009-11-04 00:14 rushing
- [r178] header.c lookup_field() prototypevarref_safe(), varset_safe(): removed
- 2009-11-04 00:14 rushing
- [r177] itypes.py t_str => t_stringt_undefinedget_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
- [r176] 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
- [r175] solver.py removed unused fun
- 2009-11-04 00:10 rushing
- [r174] solver.py updating the comments a bitgenerator.gen(): attach tvar at each node treat primapp like app n-ary let_splat handle sequence map literals through base_typesunifier.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 nowtyper: 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
- [r173] nodes.py removed obsolete typecheck attrremoved obsolete 'klass' stuffrename_variables() now takes a datatypes arg [to avoid renaming constructors]
- 2009-11-04 00:02 rushing
- [r172] analyze.py undo temporary hacks for row-related prims
- 2009-11-04 00:02 rushing
- [r171] analyze.py pass the compilation context downcomment out the get/set transformshandle row-related primitives [fixme]
- 2009-11-04 00:00 rushing
- [r170] notes/rows.txt *** empty log message ***
- 2009-11-02 01:43 rushing
- [r169] lisp_reader.py support for record literals
- 2009-11-02 01:43 rushing
- [r168] compile.py new 'context' class to hold information across all the various passes
- 2009-10-28 23:36 rushing
- [r167] notes/log.txt sp
- 2009-10-28 23:32 rushing
- [r166] t1.c, test.image, test.img first release in a while!
- 2009-10-28 23:32 rushing
- [r165] notes/log.txt *** empty log message ***
- 2009-10-28 23:31 rushing
- [r164] tests/tc1.scm *** empty log message ***
- 2009-10-28 23:31 rushing
- [r163] tests/tc0.scm *** empty log message ***
- 2009-10-28 23:29 rushing
- [r162] itypes.py types
- 2009-10-28 23:28 rushing
- [r161] notes/classes.txt thoughts on classes and a circular dependency
- 2009-10-28 23:27 rushing
- [r160] tests/t0.scm use %%cexp
- 2009-10-28 23:26 rushing
- [r159] solver.py interactive testing only
- 2009-10-28 23:26 rushing
- [r158] compile.py new constraint-based type inference engine
- 2009-10-28 23:25 rushing
- [r157] gc.c gcc warnings
- 2009-10-28 23:25 rushing
- [r156] header.c gcc warnings
- 2009-10-28 22:57 rushing
- [r155] solver.py removed unneeded test cases and prim_env support
- 2009-10-28 22:56 rushing
- [r154] solver.py first version that limps along and types irken nodes. still no rows.
- 2009-10-28 22:55 rushing
- [r153] graph.py dependency graph and fix-reordering code from old HM typing.py module
- 2009-10-19 21:15 rushing
- [r152] cps.py renamed lambda_tree => nodes
- 2009-10-19 21:15 rushing
- [r151] transform.py renamed lambda_tree => nodes
- 2009-10-19 21:15 rushing
- [r150] typing.py renamed lambda_tree => nodes
- 2009-10-19 21:15 rushing
- [r149] analyze.py renamed lambda_tree => nodes
- 2009-10-19 21:15 rushing
- [r148] compile.py renamed lambda_tree => nodes
- 2009-10-19 21:14 rushing
- [r147] tests/y.scm Y ask Y?
- 2009-10-19 21:01 rushing
- [r146] lambda_tree.py, nodes.py renamed lambda_tree.py to nodes.py
- 2009-10-19 20:57 rushing
- [r145] notes/log.txt *** empty log message ***
- 2009-10-19 20:52 rushing
- [r144] README, lib/rbtree.scm, pottier_remy.py readme is html, removing unneeded files, preparing for new solver
- 2009-10-19 20:45 rushing
- [r143] lib/core.scm clearing out mods in prep for the new type solver
- 2009-10-19 20:44 rushing
- [r142] lib/io.scm clearing out mods in prep for the new type solver
- 2009-10-19 20:44 rushing
- [r141] lib/string.scm clearing out mods in prep for the new type solver
- 2009-10-19 20:44 rushing
- [r140] tests/product_0.scm clearing out mods in prep for the new type solver
- 2009-10-19 20:43 rushing
- [r139] tests/io_0.scm clearing out mods in prep for the new type solver
- 2009-10-19 20:43 rushing
- [r138] tests/t_callcc_2.scm clearing out mods in prep for the new type solver
- 2009-10-19 20:42 rushing
- [r137] tests/step5.scm clearing out mods in prep for the new type solver
- 2009-10-19 20:42 rushing
- [r136] 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
- [r135] analyze.py clearing out mods in prep for the new type solver
- 2009-10-19 20:22 rushing
- [r134] lambda_tree.py class-related stuff I'm going to have to replace anyway
- 2009-10-19 20:22 rushing
- [r133] lisp_reader.py support postfix array notation
- 2009-10-19 20:22 rushing
- [r132] compile.py clearing out mods in prep for the new type solvertrying out llvm/clang
- 2009-10-19 20:21 rushing
- [r131] cps.py clearing out mods in prep for the new type solver%%product-ref (will probably be replaced)
- 2009-10-19 20:20 rushing
- [r130] parse/lexer.py table-based dfa using strings
- 2009-10-19 20:19 rushing
- [r129] pxll.h clearing out mods in prep for the new type solver
- 2009-10-19 20:19 rushing
- [r128] transform.py clearing out mods in prep for the new type solver
- 2009-10-19 20:18 rushing
- [r127] solver.py checking in the pottier/remy solver
- 2009-09-30 21:35 rushing
- [r126] README *** empty log message ***
- 2009-09-30 21:34 rushing
- [r125] irken.html converted from README, updated
- 2009-07-19 23:30 rushing
- [r124] 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
- [r123] notes/log.txt *** empty log message ***
- 2009-01-05 21:28 sam
- [r122] cps.py pxll => irken
- 2009-01-05 21:27 sam
- [r121] compile.py pxll => irken
- 2009-01-05 21:25 sam
- [r120] 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
- [r119] tests/frb.scm got the generator code working, fixed the nth problem with polymorphism.renamed 'tree:' => 'node:'
- 2009-01-05 21:23 sam
- [r118] cps.py pass verbose down into compiler and 'find_allocation()'
- 2009-01-05 21:22 sam
- [r117] lib/core.scm added <pair> datatype
- 2009-01-05 21:22 sam
- [r116] lib/symbol.scm use node: rather than tree: prefix for the frb
- 2009-01-05 21:21 sam
- [r115] 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 <pair> constructor.
- 2009-01-05 21:19 sam
- [r114] typing.py removed some outdated commentsproduct.__init__(): handle procedure typesinitial_type_environment(): pass <name> 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
- [r113] compile.py pass verbose down to cps.py
- 2008-12-22 21:38 sam
- [r112] README *** empty log message ***
- 2008-12-22 21:29 sam
- [r111] . renamed the project
- 2008-12-22 21:19 sam
- [r110] test new user product datatypes
- 2008-12-22 21:19 sam
- [r109] trying to grok why aliases are borked
- 2008-12-22 21:18 sam
- [r108] new string tests
- 2008-12-22 21:18 sam
- [r107] new io tests
- 2008-12-22 21:18 sam
- [r106] updated for new typing
- 2008-12-22 21:16 sam
- [r105] updated for new typing
- 2008-12-22 21:16 sam
- [r104] updated for new typing
- 2008-12-22 21:16 sam
- [r103] updated for new typing
- 2008-12-22 21:16 sam
- [r102] updated for new typing
- 2008-12-22 21:15 sam
- [r101] updated for new typing
- 2008-12-22 21:15 sam
- [r100] hand-translated for the new typing [need to fix the lexer generator]
- 2008-12-22 21:15 sam
- [r99] 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
- [r98] 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
- [r97] 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
- [r96] dump_object(): don't forget to divide user tags by 4allocate(): 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
- [r95] updated for new typing
- 2008-12-22 21:05 sam
- [r94] updated for new typing
- 2008-12-22 21:05 sam
- [r93] updated for new typing
- 2008-12-22 21:04 sam
- [r92] updated for new typing
- 2008-12-22 21:04 sam
- [r91] updated for new typing
- 2008-12-22 21:03 sam
- [r90] h-m version of lib/pair.scm ('pair' doesn't correctly describe this any more)
- 2008-12-22 21:02 sam
- [r89] TC_USERIMM comment was wrongTC_LAST removed
- 2008-12-22 21:02 sam
- [r88] datatype: support <product> datatypesnil: 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
- [r87] class product: support user-defined product types... optional name gen_constructor(): get_datatype_constructors(): new methodsget_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
- [r86] 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
- [r85] add_constructors(): commented out class code added support for product datatypes
- 2008-12-22 20:49 sam
- [r84] pxll=>irkennew notes on The Plan
- 2008-12-22 20:29 sam
- [r83] pxll=>irken
- 2008-12-22 20:29 sam
- [r82] pxll=>irken
- 2008-12-18 01:57 sam
- [r81] tests that should fail to typecheck
- 2008-12-18 01:55 sam
- [r80] contrived example meant to have at least one strongly-connected component
- 2008-12-18 01:55 sam
- [r79] testing the SCC algorithm using the graph from CLR
- 2008-12-18 01:54 sam
- [r78] analyzer.__init__(): vars dict is now passed inanalyzer.add_constructors(): moved to lambda_tree.pytransform_0_typecase(): layout of alt_formals changed
- 2008-12-18 01:53 sam
- [r77] cleaned up some outdated comments
- 2008-12-18 01:52 sam
- [r76] 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
- [r75] expand_typecase(): the 'typecase' node was cleaned up a bit
- 2008-12-18 01:50 sam
- [r74] 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 logicallytype_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 graphstrongly(): 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
- [r73] moved alpha conversion and add_constuctors() into this file
- 2008-12-18 01:43 sam
- [r72] 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
- [r71] *** empty log message ***
- 2008-12-13 04:01 sam
- [r70] *** empty log message ***
- 2008-12-13 04:00 sam
- [r69] yet another version of function red-black trees, this time using algrebraic datatypes.
- 2008-12-13 03:59 sam
- [r68] wrap_in(): automatically convert <pxll_string> to <char *>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
- [r67] compile_typecase(): use exp.vtype, not the (possibly tvar) value typenode.print_info(): typecase: print the assigned vtype
- 2008-12-13 03:57 sam
- [r66] 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
- [r65] transform_0_typecase(): allow 'dontcare' bindings
- 2008-12-13 03:52 sam
- [r64] typecase: changed the 'type' attr to 'vtype', less confusing
- 2008-12-13 03:52 sam
- [r63] read(): allow #u for the 'undefined' type
- 2008-12-12 01:33 sam
- [r62] *** empty log message ***
- 2008-12-12 01:31 sam
- [r61] support unit typesinsn_typecase(): emit 1-2 switch clauses depending on the mix of unit and tuple types.
- 2008-12-12 01:30 sam
- [r60] support unit types<typecase> insn needs to pass the type object down
- 2008-12-12 01:30 sam
- [r59] support unit typesdump_object(): fall-through for TC_USERIMM+n
- 2008-12-12 01:29 sam
- [r58] support unit typesnew #define for TC_USERIMM, user-defined immediate types (i.e., unit types) start there.
- 2008-12-12 01:29 sam
- [r57] support unit types
- 2008-12-12 01:29 sam
- [r56] support unit types
- 2008-12-12 01:28 sam
- [r55] *** empty log message ***
- 2008-12-12 01:28 sam
- [r54] support unit types
- 2008-12-11 02:57 sam
- [r53] *** empty log message ***
- 2008-12-11 02:56 sam
- [r52] updated to new syntax
- 2008-12-11 02:56 sam
- [r51] updated to new syntax
- 2008-12-11 02:56 sam
- [r50] new
- 2008-12-11 02:56 sam
- [r49] new
- 2008-12-11 02:55 sam
- [r48] compile_typecase(): change the name of the attr again!
- 2008-12-11 02:55 sam
- [r47] typecase: new syntax - require name of type
- 2008-12-11 02:54 sam
- [r46] class product: handle polymorphic productsclass union: handle polymorphic unionsinitial_type_environment(): build polymorphic datatypes correctly removed the 'nil' base typeunion.get_datatype_constructors(): just return the namesunify(): fail correctly when two base types differtype_of(): typecase: handle the new explicit-type syntaxinstantiate_type(): handle products & unions
- 2008-12-11 02:48 sam
- [r45] compile_typecase(): typecase node attribute renamed
- 2008-12-11 02:48 sam
- [r44] typecase: new syntax - require name of type
- 2008-12-10 23:20 sam
- [r43] *** empty log message ***
- 2008-12-10 23:17 sam
- [r42] compile_typecase(): typecase node attribute renamed
- 2008-12-10 23:17 sam
- [r41] full algebraic datatypesexpand_datatype(): new syntaxexpand_typecase(): new syntax
- 2008-12-10 23:16 sam
- [r40] full algebraic datatypesclass product: minimal support for a product typelookup_subst(): don't store None as the final value of a tvar. 8^)union.gen_constructor(): handle product sub-typesunify(): 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
- [r39] transform_0_typecase(): new 'variant' of typecase
- 2008-12-10 23:04 sam
- [r38] full algebraic datatypestypecase: 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
- [r37] first test of full algebraic datatypes
- 2008-12-10 01:46 sam
- [r36] *** empty log message ***
- 2008-12-10 01:37 sam
- [r35] *** empty log message ***
- 2008-12-10 01:37 sam
- [r34] *** empty log message ***
- 2008-12-10 01:35 sam
- [r33] insn_primop(): new variant of make-tuple supporting variant-type tagsinsn_typecase(): new insn, generates a switch
- 2008-12-10 01:34 sam
- [r32] supporting union/sum datatypescompile_typecase(): new methodgen_typecase(): new method, insn typepretty_print(): special-case <typecase> along with <test> and <close>
- 2008-12-10 01:33 sam
- [r31] dump_object(): handle TC_USEROBJ+ [this needs to be done to gc as well]
- 2008-12-10 01:32 sam
- [r30] comment describing how variant types are tagged
- 2008-12-10 01:32 sam
- [r29] expand_datatype(): new methodexpand_typecase(): new method
- 2008-12-10 01:30 sam
- [r28] supporting union/sum datatypesclass union: union/sum type.type_of(): let_splat: extend the rib one var at a time application: handle rator_type of <union> typecase: unify itapply_tenv(): walk let* ribs backward
- 2008-12-10 01:25 sam
- [r27] supporting union/sum datatypesanalyze(): call add_constructors if there are any datatype defnstransform(): added a 'stage' arg, to allow differents sets of transforms for different stages of optimization.add_constructors(): add union/sum constructorstransform_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
- [r26] supporting union/sum datatypesnode.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
- [r25] type_of(): primapp/%%array-ref: return the array's item type, not the array type itself.
- 2008-12-05 01:33 sam
- [r24] build_vector(): trying this: allow expressions rather than just constants
- 2008-12-04 11:42 sam
- [r23] rewrote all <subst> code using <type_variable> 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
- [r22] read(): bug when reading the symbol '-'
- 2008-12-04 06:45 sam
- [r21] insn_primop(): %array-set
- 2008-12-04 06:44 sam
- [r20] compile_primapp(): emit %%array-set
- 2008-12-04 06:44 sam
- [r19] expand_set_bang(): emit %%array-ref
- 2008-12-04 06:43 sam
- [r18] test assignment
- 2008-12-04 06:41 sam
- [r17] array assignment
- 2008-12-04 04:54 sam
- [r16] array types
- 2008-12-04 04:48 sam
- [r15] analyze(): point out in a useless comment how this is currently borken.
- 2008-12-04 04:44 sam
- [r14] support %array-ref prim, plus range check
- 2008-12-04 04:44 sam
- [r13] 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
- [r12] range_check(): new function for checking runtime array index
- 2008-12-04 04:41 sam
- [r11] build_vector(): instead of calling the 'vector' function, use a %%vector-literal primappremoved unused gen_constructor() function
- 2008-12-04 04:40 sam
- [r10] added an array type. still need to support set! on array refs
- 2008-12-04 04:35 sam
- [r9] reader.read(): support postfix array-reference syntax. a little ugly.
- 2008-12-04 04:35 sam
- [r8] use '-m64' instead of '-arch ppc64', this seems to work on intel and ppcdefault to -m64 on os x
- 2008-12-02 03:55 sam
- [r7] don't tar up the svn dir
- 2008-12-02 03:43 sam
- [r6] 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
- [r5] node.__init__(): default the size to one, not zero
- 2008-12-02 03:40 sam
- [r4] removed some prints, protected others with 'if verbose:'removed add_typechecks() function
- 2008-12-02 03:15 sam
- [r3] *** empty log message ***
- 2008-12-02 03:00 sam
- [r2]
- 2008-12-02 02:58 sam
- [r1] pxll import