Commit Graph

46 Commits

Author SHA1 Message Date
Kartik Agaram
23d3a02226 4266 - space for alloc-id in heap allocations
This has taken me almost 6 weeks :(
2018-06-24 09:18:20 -07:00
Kartik Agaram
01ce563dfe 4262 - literal 'null' 2018-06-17 15:57:37 -07:00
Kartik Agaram
dd66068298 4261 - start using literals for 'true' and 'false'
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.
2018-06-17 00:29:22 -07:00
Kartik Agaram
b89b822439 4260 - make address coercions explicit
'deaddress' is a terrible name. Hopefully I'll come up with something
better.
2018-06-16 23:19:59 -07:00
Kartik Agaram
ce9b2b0515 4258 - undo 4257 2018-06-15 22:16:09 -07:00
Kartik Agaram
0edd9b9fc6 4257 - abortive attempt at safe fat pointers
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.
2018-06-15 22:12:03 -07:00
Kartik K. Agaram
4a48bedcd1 4134 - 'input' = 'ingredient' 2017-12-03 23:25:40 -08:00
Kartik K. Agaram
c0d61295ed 4008
Allow list `push` operation to save result in a new list rather than
mutate the existing list.
2017-09-25 21:20:49 -07:00
Kartik K. Agaram
284e557649 3894 - comment/uncomment lines in edit app 2017-05-29 02:13:43 -07:00
Kartik K. Agaram
af4bf7ed22 3893 2017-05-29 01:40:20 -07:00
Kartik K. Agaram
898f03cc3b 3881 - allow students to turn sandboxes into recipes
Thanks Juan Crispin Hernandez for the suggestion.
2017-05-27 00:52:28 -07:00
Kartik K. Agaram
aac76bca12 3880 2017-05-27 00:17:50 -07:00
Kartik K. Agaram
b7fc9d3b5c 3879 2017-05-26 23:50:50 -07:00
Kartik K. Agaram
860628c70a 3808 - 'length' for duplex lists 2017-03-31 08:11:45 -07:00
Kartik K. Agaram
6f65d5918f 3429 - standardize Mu scenarios
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.
2016-09-28 19:48:56 -07:00
Kartik K. Agaram
760f683f27 3389 2016-09-17 12:55:10 -07:00
Kartik K. Agaram
51b0936fc7 3386 2016-09-17 10:30:24 -07:00
Kartik K. Agaram
7a84094adb 3385 2016-09-17 10:28:25 -07:00
Kartik K. Agaram
08f4628e8b 3379
Can't use type abbreviations inside 'memory-should-contain'.
2016-09-17 00:31:55 -07:00
Kartik K. Agaram
b462361dbe 3154 - reorg before making 'random' more testable 2016-07-27 21:58:47 -07:00
Kartik K. Agaram
c603cd6cef 2430 - make room for more transforms 2015-11-13 10:08:57 -08:00
Kartik K. Agaram
2d1e7d55cb 2363 - duplex-list is now generic.
It wasn't a phase-ordering issue after all..
2015-11-05 00:12:18 -08:00
Kartik K. Agaram
d135851ef9 2247 - type-check products of non-primitive recipes
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.
2015-10-05 18:40:51 -07:00
Kartik K. Agaram
fb5470bc5a 2241 - back to type-checking get-address
Now duplex-list is fully non-generic and only works with characters. But
we'll fix that in a bit..
2015-10-05 16:44:11 -07:00
Kartik K. Agaram
af7a5722df 2234 - check type of get's product
Already I'm finding type errors in the programming environment.
2015-10-02 00:28:08 -07:00
Kartik K. Agaram
93752d9d03 2122 - undo/redo should now be working 2015-09-01 13:38:01 -07:00
Kartik K. Agaram
cb75d36650 2121 - undo now supports the 'delete' key
Still to go: ctrl-k and ctrl-u.
2015-09-01 12:38:32 -07:00
Kartik K. Agaram
53aad02db2 2118 - start on undo deletions 2015-08-31 22:25:24 -07:00
Kartik K. Agaram
6c1376f830 2095
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.
2015-08-28 23:25:21 -07:00
Kartik K. Agaram
5efd2b6b56 2085 - undo/redo now working for simple typing
Not yet useable, because we never ever stop coalescing operations. That
will happen when we introduce a second type of operation.
2015-08-27 00:33:15 -07:00
Kartik K. Agaram
a4f5644776 2084 2015-08-27 00:26:57 -07:00
Kartik K. Agaram
6aae6f4637 2082 2015-08-26 21:42:26 -07:00
Kartik K. Agaram
18e626dfe8 1909 - clean up all null pointers of that ilk 2015-07-31 17:08:30 -07:00
Kartik K. Agaram
502d2ea540 1883 - type-deducing in more .mu files 2015-07-29 14:37:57 -07:00
Kartik K. Agaram
286ca5a4e8 1869 - rename the /deref property to /lookup
Should be a little bit more mnemonic.
2015-07-28 15:03:46 -07:00
Kartik K. Agaram
bc64369276 1868 - start using naked literals everywhere
First step to reducing typing burden. Next step: inferring types.
2015-07-28 14:33:22 -07:00
Kartik K. Agaram
77d5b5d658 1780 - now we always reclaim local scopes
But still no difference in either memory footprint or in running time.
This will teach me -- for the umpteenth time -- to optimize before
measuring.
2015-07-13 22:50:49 -07:00
Kartik K. Agaram
dfd2ed38f2 1773 - update all mu recipes to new-default-space
Turns out to not affect memory utilization or run-time. At all.
But still looks nicer and requires less fudging on our part.
2015-07-13 20:33:39 -07:00
Kartik K. Agaram
4d3d1c101e 1603 2015-06-19 21:17:00 -07:00
Kartik K. Agaram
6d0633ea53 1602
I forgot to check for nulls before writing prev pointers in doubly
linked lists. Tests were accidentally passing.
2015-06-19 18:25:31 -07:00
Kartik K. Agaram
0ab01e6f00 1594 - removing from start/end of duplex list
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.
2015-06-18 11:37:21 -07:00
Kartik K. Agaram
9e86933229 1593 2015-06-18 11:16:43 -07:00
Kartik K. Agaram
28c52ee125 1592 2015-06-18 10:53:01 -07:00
Kartik K. Agaram
960e680db0 1591 2015-06-18 10:50:54 -07:00
Kartik K. Agaram
00ee2decfe 1590 - inserting into doubly linked list 2015-06-18 10:41:14 -07:00
Kartik K. Agaram
1eb8617cce 1589 - doubly linked list 2015-06-18 10:40:49 -07:00