about summary refs log tree commit diff stats
path: root/065duplex_list.mu
Commit message (Collapse)AuthorAgeFilesLines
* 4266 - space for alloc-id in heap allocationsKartik Agaram2018-06-241-1/+52
| | | | This has taken me almost 6 weeks :(
* 4262 - literal 'null'Kartik Agaram2018-06-171-28/+34
|
* 4261 - start using literals for 'true' and 'false'Kartik Agaram2018-06-171-3/+3
| | | | | | | | | They uncovered one bug: in edit/003-shortcuts.mu <scroll-down> was returning 0 for an address in one place where I thought it was returning 0 for a boolean. Now we've eliminated this bad interaction between tangling and punning literals.
* 4260 - make address coercions explicitKartik Agaram2018-06-161-2/+2
| | | | | 'deaddress' is a terrible name. Hopefully I'll come up with something better.
* 4258 - undo 4257Kartik Agaram2018-06-151-52/+1
|
* 4257 - abortive attempt at safe fat pointersKartik Agaram2018-06-151-1/+52
| | | | | | | | | | | | | | | | I've been working on this slowly over several weeks, but it's too hard to support 0 as the null value for addresses. I constantly have to add exceptions for scalar value corresponding to an address type (now occupying 2 locations). The final straw is the test for 'reload': x:num <- reload text 'reload' returns an address. But there's no way to know that for arbitrary instructions. New plan: let's put this off for a bit and first create support for literals. Then use 'null' instead of '0' for addresses everywhere. Then it'll be easy to just change what 'null' means.
* 4134 - 'input' = 'ingredient'Kartik K. Agaram2017-12-031-20/+20
|
* 4008Kartik K. Agaram2017-09-251-7/+3
| | | | | Allow list `push` operation to save result in a new list rather than mutate the existing list.
* 3894 - comment/uncomment lines in edit appKartik K. Agaram2017-05-291-0/+45
|
* 3893Kartik K. Agaram2017-05-291-81/+113
|
* 3881 - allow students to turn sandboxes into recipesKartik K. Agaram2017-05-271-0/+76
| | | | Thanks Juan Crispin Hernandez for the suggestion.
* 3880Kartik K. Agaram2017-05-271-0/+22
|
* 3879Kartik K. Agaram2017-05-261-10/+4
|
* 3808 - 'length' for duplex listsKartik K. Agaram2017-03-311-0/+12
|
* 3429 - standardize Mu scenariosKartik K. Agaram2016-09-281-38/+26
| | | | | | | | | | | | | A long-standing problem has been that I couldn't spread code across 'run' blocks because they were separate scopes, so I've ended up making them effectively comments. Running code inside a 'run' block is identical in every way to simply running the code directly. The 'run' block is merely a visual aid to separate setup from the component under test. In the process I've also standardized all Mu scenarios to always run in a local scope, and only use (raw) numeric addresses for values they want to check later.
* 3389Kartik K. Agaram2016-09-171-68/+68
|
* 3386Kartik K. Agaram2016-09-171-11/+11
|
* 3385Kartik K. Agaram2016-09-171-3/+3
|
* 3379Kartik K. Agaram2016-09-171-89/+89
| | | | Can't use type abbreviations inside 'memory-should-contain'.
* 3154 - reorg before making 'random' more testableKartik K. Agaram2016-07-271-0/+559
|
* 2430 - make room for more transformsKartik K. Agaram2015-11-131-555/+0
|
* 2363 - duplex-list is now generic.Kartik K. Agaram2015-11-051-252/+246
| | | | It wasn't a phase-ordering issue after all..
* 2247 - type-check products of non-primitive recipesKartik K. Agaram2015-10-051-36/+36
| | | | | | | | We still can't check ingredient types, and even this is still a run-time check. We'll need to start tracking recipe signatures at some point. I've had to introduce a hack called /skiptypecheck. Time to get generics working.
* 2241 - back to type-checking get-addressKartik K. Agaram2015-10-051-6/+6
| | | | | Now duplex-list is fully non-generic and only works with characters. But we'll fix that in a bit..
* 2234 - check type of get's productKartik K. Agaram2015-10-021-10/+10
| | | | Already I'm finding type errors in the programming environment.
* 2122 - undo/redo should now be workingKartik K. Agaram2015-09-011-0/+25
|
* 2121 - undo now supports the 'delete' keyKartik K. Agaram2015-09-011-0/+79
| | | | Still to go: ctrl-k and ctrl-u.
* 2118 - start on undo deletionsKartik K. Agaram2015-08-311-0/+13
|
* 2095Kartik K. Agaram2015-08-281-1/+0
| | | | | | | | | | | | Finally terminate the experiment of keeping debug prints around. I'm also going to give up on maintaining counts. What we really need is two kinds of tracing: a) For tests, just the domain-specific facts, organized by labels. b) For debugging, just transient dumps to stdout. b) only works if stdout is clean by default. Hmm, I think this means 'stash' should be the transient kind of trace.
* 2085 - undo/redo now working for simple typingKartik K. Agaram2015-08-271-2/+5
| | | | | Not yet useable, because we never ever stop coalescing operations. That will happen when we introduce a second type of operation.
* 2084Kartik K. Agaram2015-08-271-1/+58
|
* 2082Kartik K. Agaram2015-08-261-0/+16
|
* 1909 - clean up all null pointers of that ilkKartik K. Agaram2015-07-311-36/+36
|
* 1883 - type-deducing in more .mu filesKartik K. Agaram2015-07-291-47/+47
|
* 1869 - rename the /deref property to /lookupKartik K. Agaram2015-07-281-32/+32
| | | | Should be a little bit more mnemonic.
* 1868 - start using naked literals everywhereKartik K. Agaram2015-07-281-42/+42
| | | | First step to reducing typing burden. Next step: inferring types.
* 1780 - now we always reclaim local scopesKartik K. Agaram2015-07-131-6/+6
| | | | | | But still no difference in either memory footprint or in running time. This will teach me -- for the umpteenth time -- to optimize before measuring.
* 1773 - update all mu recipes to new-default-spaceKartik K. Agaram2015-07-131-6/+6
| | | | | Turns out to not affect memory utilization or run-time. At all. But still looks nicer and requires less fudging on our part.
* 1603Kartik K. Agaram2015-06-191-6/+15
|
* 1602Kartik K. Agaram2015-06-191-21/+31
| | | | | I forgot to check for nulls before writing prev pointers in doubly linked lists. Tests were accidentally passing.
* 1594 - removing from start/end of duplex listKartik K. Agaram2015-06-181-4/+67
| | | | | | | | | | This uncovers an issue with this interface to duplex lists: the caller needs to check the result and invalidate any other pointers if it's null (i.e. the list is now empty) We *could* try to encapsulate the list in a header to help the caller manage header pointers. But heck, let's see if writing tests helps call-sites stay on the straight and narrow.
* 1593Kartik K. Agaram2015-06-181-0/+75
|
* 1592Kartik K. Agaram2015-06-181-0/+36
|
* 1591Kartik K. Agaram2015-06-181-3/+43
|
* 1590 - inserting into doubly linked listKartik K. Agaram2015-06-181-0/+62
|
* 1589 - doubly linked listKartik K. Agaram2015-06-181-0/+74