about summary refs log tree commit diff stats
path: root/mu.arc
Commit message (Collapse)AuthorAgeFilesLines
* 705 - clean up traces before we try to parse themKartik K. Agaram2015-02-031-22/+25
| | | | | | | | | | For now we want to parse two labels: 'run', identifying call stack, op and args 'mem', distinguishing reads and writes This should give us fodder for a few weeks, to build both a folding UI for individual statements and descending the call stack, and also a query engine that can figure out sources and sinks in the trace graph.
* 695 - another attempt to handle strings in historyKartik K. Agaram2015-02-011-0/+3
| | | | | | But now that we've added the keyboard parameter to process-keys, modifying it in a recursive call also clobbers it in the caller. All because of my weird, non-standard use of shared scope.
* 693 - color-repl now uses keyboard/screen parametersKartik K. Agaram2015-02-011-6/+23
|
* 690 - convention: '$' commands for debugging onlyKartik K. Agaram2015-02-011-99/+100
| | | | | | Swap printing generalized objects using arc's infrastructure to be the $-prefixed debug helper, while the erstwhile $print-key-to-host becomes the primitive print-character to host.
* 688 - <up> for history kinda sorta worksKartik K. Agaram2015-01-311-2/+18
| | | | | | | | | | | | | | process-key is extracted to work on a given character, but its helpers for parsing strings and comments still read keys directly from keyboard. Still, this took long enough to get working that it's worth saving. Milestones: a) figuring out how to debug without dumping trace crap on the screen in cursor mode. b) realizing you can't assign directly to result in the up case. Have to let the recursive call do it. c) replacing continuations in 'process-key'.
* 687 - some helpers for debuggingKartik K. Agaram2015-01-311-1/+13
|
* 682Kartik K. Agaram2015-01-291-2/+35
| | | | | | | | | | You can't just extract the array from inside a buffer. Its length isn't right. Only reason we didn't catch this sooner is I think that arc's simulated memory is initialized to all nils, which has some serendipitous properties. I should initialize memory to random values one of these days and see what shakes out.
* 677 - more improvements for names in shared spacesKartik K. Agaram2015-01-291-7/+21
|
* 676 - allow routines to share *names* for localsKartik K. Agaram2015-01-291-1/+13
|
* 675Kartik K. Agaram2015-01-291-4/+2
|
* 670 - get rid of integer-bufferKartik K. Agaram2015-01-291-14/+2
| | | | | | | | | | | | We'll make 'buffer' properly generic at some point. Basically need to support multi-word types. x:list:integer <- copy y:list:integer # ok x:list <- copy y:list:integer # ok x:list:integer <- copy y:list # error We'll need a separate runtime operator like maybe-coerce for the third case.
* 666 - first-class continuations!Kartik K. Agaram2015-01-281-7/+21
|
* 665 - hide the ugly memory dump by defaultKartik K. Agaram2015-01-281-2/+2
|
* 664 - new, wart-like promptKartik K. Agaram2015-01-281-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | This is the right time for this change I've been meaning to make, because it lets me drop my hack in 'abort-to'. 'abort-to' is likely still a bad idea because: a) Just because this example doesn't need to clear a few things on abort doesn't mean such use cases don't exist. In other words, there's no way to tell if your stack frame recently returned from an abort. That question isn't even well-posed at the moment; what does 'recently' even mean? b) I may need to run deferred statements on each stack frame, and it's not clear how to rewrite 'defer' to be robust to aborts. Exceptions entering through the back door? Looks like all this is expected when implementing exception-like behavior using continuations: http://matt.might.net/articles/implementing-exceptions c) Of course we don't have composable exceptions. I still don't grok the value of that. We don't need yield since we have channels. What else might we need continuations for? Let's try to come up with a clean way to implement the amb operator or something. http://www.randomhacks.net/2005/10/11/amb-operator
* 662 - abort current command cleanly on ctrl-gKartik K. Agaram2015-01-281-0/+9
| | | | | | | Poor man's continuation. Not first class or delimited yet. And we see the problem: hard to specify precisely what to do after unwinding the stack. We start reaching for a try/catch statement. But let's see if there's a better way.
* 660Kartik K. Agaram2015-01-281-1/+6
| | | | Yet another 'grow-buffer' bug.
* 659Kartik K. Agaram2015-01-281-0/+5
| | | | 'grow-buffer' was never working until now. Too much spiking lately.
* 651 - new data structure in repl: list of backslash escapesKartik K. Agaram2015-01-281-1/+30
| | | | '#\\' only contains one escape character: the first backslash
* 643 - bug in use-before-set logicKartik K. Agaram2015-01-271-9/+10
| | | | | | | | Ran into this in color-repl.mu: I wasn't checking struct variables in 'get' operations. Still no way to test for use-before-set logic. But we'll fix it when we leave arc behind.
* 638 - quick spike: syntax highlighting in replKartik K. Agaram2015-01-271-4/+48
| | | | | | | | | | | | | | | Backspace kinda works. Parens are colored in three rotating colors which helps with balancing. Comments and strings are colored. But it's hard to handle backspace in all situations. Like if you backspace over a quote you have to either quit the string-slurping routine you're in, or return to string slurping mode. Similarly for comments; *there* you don't even have a end delimiter to let you know you're back in a comment. You have to keep track of what came before. I experimented with a library but it interacts poorly with the charterm library I'm already using. Ended up with a gross inefficient approach instead.
* 635Kartik K. Agaram2015-01-261-2/+15
|
* 634Kartik K. Agaram2015-01-261-6/+18
|
* 633Kartik K. Agaram2015-01-261-1/+1
|
* 631 - temporary: hook into underlying arc 'eval'Kartik K. Agaram2015-01-261-0/+12
|
* 630 - routines can now allocate unlimited memoryKartik K. Agaram2015-01-261-13/+9
|
* 629Kartik K. Agaram2015-01-261-14/+12
|
* 627Kartik K. Agaram2015-01-261-4/+4
|
* 626 - start eliminating the memory-per-routine limitKartik K. Agaram2015-01-261-5/+8
|
* 625 - guard against errors with input-output argsKartik K. Agaram2015-01-251-16/+15
| | | | | | | | | | | (Another attempt at 623.) I dunno, this may all be a wild goose chase. I haven't been disciplined in tagging in-out arguments in 'read-move' and its helpers. Maybe I should just drop those 'nochange' oargs in 'read' and 'write'. Maybe I should reserve output args only for return values that callers might actually care about, and use more conventional metadata like 'const' or 'unique' or 'inout' on other args.
* 623 - 'nochange' to guard against race conditionsKartik K. Agaram2015-01-251-9/+17
| | | | | | | | | I dunno, this may all be a wild goose chase. I haven't been disciplined in tagging in-out arguments in 'read-move' and its helpers. Maybe I should just drop those 'nochange' oargs in 'read' and 'write'. Maybe I should reserve output args only for return values that callers might actually care about, and use more conventional metadata like 'const' or 'unique' or 'inout' on other args.
* 621 - fix race condition in buffered-stdin.muKartik K. Agaram2015-01-251-16/+21
|
* 620 - fix broken examples and tests againKartik K. Agaram2015-01-251-5/+34
| | | | | | | | | I just did this in 611; what's the point of all this if tests can't stay passing? I don't understand why buffered-stdin.mu needs to preempt itself. stdin and buffered-stdin somehow end up sharing a single circular buffer, that's probably causing a race condition.
* 619 - chessboard now working rightKartik K. Agaram2015-01-251-3/+10
| | | | | | 2 bugs found: a) Have to slurp the newlines. b) Have to clear the line-buffer at the start of each line.
* 616 - buffered-stdin handles backspaceKartik K. Agaram2015-01-251-0/+7
| | | | Chessboard now *almost* handles backspace perfectly.
* 615 - eliminate scheduler non-determinismKartik K. Agaram2015-01-241-2/+5
|
* 614Kartik K. Agaram2015-01-241-0/+1
|
* 613 - support for interrupting with ctrl-cKartik K. Agaram2015-01-241-0/+3
|
* 612 - support for the backspace keyKartik K. Agaram2015-01-241-0/+7
|
* 610 - all examples working againKartik K. Agaram2015-01-241-3/+3
|
* 609Kartik K. Agaram2015-01-241-7/+7
| | | | Shove the complexity of reading newlines as low as possible.
* 608Kartik K. Agaram2015-01-241-3/+2
|
* 607Kartik K. Agaram2015-01-241-3/+9
| | | | | | Shove the complexity of printing newlines as low as possible. Definite instability in that one trace.
* 605 - example program for line-oriented inputKartik K. Agaram2015-01-241-2/+15
| | | | | | | | | | We need the hack of printing characters typed to screen right after we see them. But only when it's the real screen. And there's no way to write a test for that because it explicitly shouldn't happen for fake terminals :( Never mind, we'll be able to test it when we provide some mechanism for suppressing print. The equivalent of 'stty -echo'.
* 604 - new function to buffer stdinKartik K. Agaram2015-01-241-5/+57
| | | | | Still surprisingly hard to debug. We might be barking up the wrong tree. Or we might just need to lump it. System software is hard.
* 603Kartik K. Agaram2015-01-241-9/+12
|
* 602Kartik K. Agaram2015-01-241-6/+9
|
* 601 - fix callers of 'read-key'Kartik K. Agaram2015-01-241-1/+2
|
* 600 - fake keyboardKartik K. Agaram2015-01-221-6/+30
| | | | | Use asynchronous channels like 'stdin' for most tests. Use the synchronous fakes for testing low-level stdin helpers.
* 598 - clear up a minor mysteryKartik K. Agaram2015-01-211-4/+5
|
* 597Kartik K. Agaram2015-01-211-8/+0
|