about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
* layer 3 of edit/ now workingKartik K. Agaram2015-12-154-10/+47
| | | | | Now I complain before running if a call somewhere doesn't line up with its ingredients, or if no specialization can be made to match it.
* chessboard.mu now workingKartik K. Agaram2015-12-151-3/+3
|
* layers 1 and 2 of edit/ now workingKartik K. Agaram2015-12-152-5/+5
|
* experiment: treat pure ingredients as immutableKartik K. Agaram2015-12-153-48/+257
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This isn't complete yet: a) If you copy a variable the copy is not checked for mutations. b) /contained-in might be a hack. It's needed because sometimes I want to pass in two pointers to a data structure, say for deleting something from a list. Both are conceptually the same structure, so it's unnecessary for both to be products as well. There's also technical reasons you *can't* return both, because if you pass in the same variable to both ingredients (say you want to remove the first element of a list), the products now must write to the same variable as well (thanks to our earlier /same-as-ingredient constraint), and what value gets written last is not something we want to be thinking about. c) Even if we stick with /contained-in, it's ambiguous. I'm using it sometimes to say "a belongs to b", sometimes to say "a _will_ belong to b after the recipe returns. Perhaps that distinction doesn't matter. We'll see. d) Should we be encouraged to say ingredients are contained in products? At the moment 'push' works only because of mu's incomplete analysis. Once we fix a) above, it's unclear what the right header should be. e) edit/ isn't close to working yet. (No more commit numbers since I'm now starting a branch, and can't rely on a stable ordering as I rebase. For the same reason I'm not including the changes to .traces/, to minimize merge conflicts.)
* 2627Kartik K. Agaram2015-12-151-3/+3
|
* 2626Kartik K. Agaram2015-12-151-0/+2
|
* 2625Kartik K. Agaram2015-12-151-4/+1
|
* 2624 - fix all layersKartik K. Agaram2015-12-141-1/+1
|
* 2623 - check 'reply' instructions ahead of timeKartik K. Agaram2015-12-131-38/+58
|
* 2622Kartik K. Agaram2015-12-136-42/+42
|
* 2621Kartik K. Agaram2015-12-081-2/+11
|
* 2620Kartik K. Agaram2015-12-071-1/+4
|
* 2619Kartik K. Agaram2015-12-071-1/+1
|
* 2618Kartik K. Agaram2015-12-071-2/+2
|
* 2617Kartik K. Agaram2015-12-021-1/+0
|
* 2616Kartik K. Agaram2015-12-021-0/+11
| | | | | Can't find a test case where it's reading comments it shouldn't be, so far..
* 2615Kartik K. Agaram2015-12-022-17/+18
| | | | | | We don't actually need skip_whitespace_AND_comments_BUT_NOT_newline anywhere except next_word(). Perhaps what I should really do is split the definition of next_word() into two variants..
* 2614 - still fixing bugs with missing '['Kartik K. Agaram2015-12-027-41/+49
| | | | | | When skipping past some text (usually whitespace, but also commas and comments) I need to always be aware of whether it's ok to switch to the next line or not.
* 2613 - stop dying on missing bracketKartik K. Agaram2015-12-021-2/+8
| | | | Thanks Caleb Couch.
* 2612Kartik K. Agaram2015-11-291-9/+9
|
* 2611Kartik K. Agaram2015-11-2961-1101/+1662
|
* 2610Kartik K. Agaram2015-11-291-5/+5
|
* 2609 - run $browse-trace on old runsKartik K. Agaram2015-11-293-0/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is long overdue. Let's see if it gets me using traces more during debugging. Though perhaps I'm being too persnickety. These are all valid ways to debug programs: a) print directly to screen b) log, and then dump the log on some condition c) temporarily print selected log statements directly to screen d) log, and then browse the log using the zoom interface For a) to work we need to normally keep prints empty. For b) to work the log needs to be of some manageable size, where it's tractable to find interesting features. d) is the ultimate weapon, but might be slow because it's interactive c) seems like the ugly case. Should I be trying to avoid it altogether? Let's try, and see if d) is useable when we want to do c). For simple cases it's still totally acceptable to just print. If the prints get too complex to parse, then we move to the zoom interface. Hopefully it'll be easier because we have to spend less time getting the prints just so. (Independent of all this, often the best way to make a log manageable so any of the approaches works: distill the bad behavior down to a test. But that leads to chicken-and-egg situations where you need to first understand before you can distill.)
* 2608 - improve errors when static dispatch failsKartik K. Agaram2015-11-293-2/+53
|
* 2607 - resolve some edge cases in static dispatchKartik K. Agaram2015-11-295-16/+101
|
* 2606 - handle cycles inside stashKartik K. Agaram2015-11-294-9/+52
| | | | | | | | | The idea is that to-text-line should truncate blindly past some threshold, even if to-text isn't smart enough to avoid infinite loops. Maybe I should define a 'truncating buffer' which stops once it fills up. That would be an easy way to eliminate all infinite loops in to-text-line.
* 2505 - test_all_layers now passesKartik K. Agaram2015-11-291-15/+2
| | | | | | Drop the display-list test because it's subsumed by the stash-on-list test right below, which doesn't require the notion of a screen from later layers.
* 2504 - support to-text in 'stash'Kartik K. Agaram2015-11-284-8/+72
|
* 2503Kartik K. Agaram2015-11-281-1/+0
|
* 2502Kartik K. Agaram2015-11-283-7/+9
|
* 2501Kartik K. Agaram2015-11-284-8/+7
|
* 2500Kartik K. Agaram2015-11-281-2/+0
|
* 2499 - done reorganizing transformsKartik K. Agaram2015-11-283-7/+9
|
* 2498Kartik K. Agaram2015-11-282-4/+8
| | | | | | Just one tangle of dependencies left in the transforms. Untangling it will require one more region: for transforms modifying types (inside instructions).
* 2497Kartik K. Agaram2015-11-282-4/+4
|
* 2496Kartik K. Agaram2015-11-282-5/+6
|
* 2495Kartik K. Agaram2015-11-282-3/+5
|
* 2494Kartik K. Agaram2015-11-289-24/+39
| | | | | Some more structure to transforms, and flattening of dependencies between them.
* 2493 - eliminate a couple of dependenciesKartik K. Agaram2015-11-283-5/+5
| | | | | | | In general you only want to specify one transform in terms of (before/after) another if the other direction wouldn't work. Otherwise try to make it work by just pushing transforms at the start/end of the list.
* 2492 - summarize current transformsKartik K. Agaram2015-11-281-0/+23
|
* 2491Kartik K. Agaram2015-11-281-2/+12
|
* 2490Kartik K. Agaram2015-11-281-1/+1
|
* 2489 - another ambiguous specializationKartik K. Agaram2015-11-281-5/+49
|
* 2488 - fix memory leaks from 2484Kartik K. Agaram2015-11-282-2/+0
|
* 2487Kartik K. Agaram2015-11-272-32/+17
| | | | | | | | | | | | | | | Ok, now I'm a little happier about our type checking. Type checking lies in three layers: layer 21: checking types, usually at run-time in the VM or just before layer 57: checking type names layer 59: checking type names It's taken me the process of writing this commit to convince myself that all three layers check mappings for literal values in a consistent manner. Layer 21 uses sizes, and layers 57/59 have whitelists, but either way the goal is that number != character != boolean unless mediated through a literal.
* 2486Kartik K. Agaram2015-11-272-15/+14
| | | | | More cleanup. Haven't bothered to figure out why the trace for specialize_with_literal_4 is repeatedly perturbed.
* 2485Kartik K. Agaram2015-11-271-2/+0
|
* 2484Kartik K. Agaram2015-11-274-38/+23
| | | | | Eliminate one of several hacky type-check helpers; they've been proliferating lately.
* 2483 - to-text can now handle listsKartik K. Agaram2015-11-277-19/+148
| | | | | 'append' also implicitly calls 'to-text' unless there's a better variant.
* 2482 - better choice between valid variantsKartik K. Agaram2015-11-273-5/+38
| | | | Literal '0' ingredients should map to numbers before addresses.