about summary refs log tree commit diff stats
path: root/shell/evaluate.mu
Commit message (Collapse)AuthorAgeFilesLines
* .Kartik K. Agaram2021-08-021-0/+4
|
* shell: literal imagesKartik K. Agaram2021-07-281-0/+28
|
* game of life in lispKartik K. Agaram2021-07-261-11/+33
| | | | | | | | Super slow; each frame is cleared as a sort of progress indicator while it computes the next frame. In the process I realize I need to adjust every single trace in the shell sources to be more fault-tolerant to a filled-up trace stream.
* shell: array typeKartik K. Agaram2021-07-251-0/+45
|
* .Kartik K. Agaram2021-07-251-9/+9
|
* reading from streamsKartik K. Agaram2021-07-031-8/+33
| | | | | | The Mu shell has no string literals, only streams. No random access, only sequential access. But I've been playing fast and loose with its read pointer until now. Hopefully things are cleaned up now.
* one more bugKartik K. Agaram2021-06-231-4/+4
|
* new macro: withKartik K. Agaram2021-06-201-0/+48
|
* document responsiveness trade-offKartik K. Agaram2021-06-151-1/+1
|
* do more work per fake-screen refreshKartik K. Agaram2021-06-151-1/+1
| | | | | | Refreshing the fake screen is still a heavyweight operation. Double-buffering makes it less obvious but doesn't actually reduce the amount of work. We need to ensure that we do enough work between refreshes to make them economic.
* more precisely track count of calls to evalKartik K. Agaram2021-06-151-19/+10
| | | | | Before I only separately counted calls at each stack depth. I don't remember if that seemed good enough or was just an oversight.
* flickerlessly render fake screens in environmentKartik K. Agaram2021-06-151-1/+1
| | | | | | | | Font rendering now happens off the real screen, which provides the effect of double-buffering. Apps can now also use convert-graphemes-to-pixels for more traditional double-buffering.
* .Kartik K. Agaram2021-06-121-38/+38
| | | | | Roll back to commit 70919b45f0. Recent commits add lots of extra function args for dubious benefit.
* eliminate some implicit writes to real screenKartik K. Agaram2021-06-121-38/+38
|
* .Kartik K. Agaram2021-06-121-42/+45
| | | | | | Rename cells containing screens to screen vars because of the ambiguity that each grapheme in fake screens is represented by a type screen-cell. While we're at it, we also analogously rename keyboard vars.
* shell: larger fake screenKartik K. Agaram2021-06-121-1/+1
|
* .Kartik K. Agaram2021-06-091-37/+44
| | | | Add argument to a few functions.
* .Kartik K. Agaram2021-06-091-1/+1
|
* .Kartik K. Agaram2021-06-081-7/+3
| | | | | | | I wrote a comment about how some code was not covered by tests, and then promptly forgot what it was for. This is why we need tests. Now the hack is gone.
* clean up a large memory leakKartik K. Agaram2021-06-051-15/+6
| | | | | | | | | | | It turns out (bowboard screen 128) on a real screen massively slowed down and ran out of memory since commit e2ab1b30b1 on May 19. The culprit was these changes, which created memory allocations for a new trace on every recursive call. I originally had some vague desire to isolate these calls from the user-visible trace. That's expensive enough that I'll wait until it becomes a concern before trying to isolate again.
* rename the definition primitive to 'def'Kartik K. Agaram2021-06-041-7/+7
|
* .Kartik K. Agaram2021-06-031-2/+15
| | | | Drop some low-entropy trace lines.
* interrupt repl on keypressKartik K. Agaram2021-05-311-1/+7
|
* .Kartik K. Agaram2021-05-311-8/+8
|
* .Kartik K. Agaram2021-05-311-0/+2
|
* clean up trace depth in a few placesKartik K. Agaram2021-05-311-0/+3
| | | | | It turns out the problem was that `and` wasn't cleaning up after itself when it short-circuited evaluation. Similar problems in a couple more places.
* bugfix: unbound variables were not raising errorKartik K. Agaram2021-05-301-1/+1
| | | | | Since we switched error trace semantics from a designated label to a designated depth (commit 9831a8cef9 on May 19).
* unconditionally trace errorsKartik K. Agaram2021-05-301-60/+0
| | | | | | Now that we never have a null trace, tracing errors is always safe. And now that we're running with low trace max-depth we're more likely to run into problems with missing errors in the trace.
* .Kartik K. Agaram2021-05-191-3/+0
|
* disallow null tracesKartik K. Agaram2021-05-191-69/+171
| | | | | | We now use traces everywhere for error-checking. Null traces introduce the possibility of changing a functions error response, and therefore its semantics.
* shell: traces track a maximum depth to recordKartik K. Agaram2021-05-191-2/+2
|
* shell: clean up trace for macroexpandKartik K. Agaram2021-05-181-0/+4
|
* shell: add a lot of error-checkingKartik K. Agaram2021-05-181-0/+145
|
* a full-circle rainbowKartik K. Agaram2021-05-081-1/+1
|
* all apps working again after null get checkKartik K. Agaram2021-05-071-2/+33
|
* .Kartik K. Agaram2021-05-071-35/+35
|
* an often-overflowing stream when running brcircleKartik K. Agaram2021-05-071-1/+1
| | | | We really need to systematically check our trace streams.
* clean up chessboardKartik K. Agaram2021-05-071-1/+3
| | | | | We still benefit from some helpers here because of the unrolling and multiple calls to helpers.
* starting to implement first macrosKartik K. Agaram2021-05-071-0/+9
| | | | | | | | | | | | | | | Another commit, another bugfix. Some snippets from my currently exploding todo list: - always investigate lookup errors immediately. Beyond the root cause, they should never happen at the moment, while we aren't reclaiming memory. we should always return a more precise error message. Usually involving null pointer checks. - on abort, print out stack trace - emit mapping of labels to addresses during survey - store a mapping of symbols somewhere in the code image - stop allocating 1KB per token; expand space for tokens as needed
* literal macrosKartik K. Agaram2021-05-061-0/+28
| | | | | | | | | | | Current plan: - some way to define macros. For now: (def f (litmac litfn () (a b) `(+ ,a , b))) - macroexpand will expand calls by passing them through the cdr (f 3 4) macroexpand: ((litfn () (a b) `(+ ,a ,b)) 3 4) => (+ 3 4) eval: (+ 3 4) => 7
* .Kartik K. Agaram2021-05-061-2/+15
|
* .Kartik K. Agaram2021-05-061-4/+21
|
* .Kartik K. Agaram2021-05-041-0/+40
|
* .Kartik K. Agaram2021-05-041-3/+8
|
* .Kartik K. Agaram2021-05-041-1/+1
|
* shell: unquote spliceKartik K. Agaram2021-05-041-0/+120
|
* shell: unquoteKartik K. Agaram2021-05-041-2/+78
|
* shell: start evaluating backquoteKartik K. Agaram2021-05-031-0/+146
|
* .Kartik K. Agaram2021-05-031-63/+63
|
* .Kartik K. Agaram2021-05-031-0/+21
|