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
f='#n954'>954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090