| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Baremetal is now the default build target and therefore has its sources
at the top-level. Baremetal programs build using the phase-2 Mu toolchain
that requires a Linux kernel. This phase-2 codebase which used to be at
the top-level is now under the linux/ directory. Finally, the phase-2 toolchain,
while self-hosting, has a way to bootstrap from a C implementation, which
is now stored in linux/bootstrap. The bootstrap C implementation uses some
literate programming tools that are now in linux/bootstrap/tools.
So the whole thing has gotten inverted. Each directory should build one
artifact and include the main sources (along with standard library). Tools
used for building it are relegated to sub-directories, even though those
tools are often useful in their own right, and have had lots of interesting
programs written using them.
A couple of things have gotten dropped in this process:
- I had old ways to run on just a Linux kernel, or with a Soso kernel.
No more.
- I had some old tooling for running a single test at the cursor. I haven't
used that lately. Maybe I'll bring it back one day.
The reorg isn't done yet. Still to do:
- redo documentation everywhere. All the README files, all other markdown,
particularly vocabulary.md.
- clean up how-to-run comments at the start of programs everywhere
- rethink what to do with the html/ directory. Do we even want to keep
supporting it?
In spite of these shortcomings, all the scripts at the top-level, linux/
and linux/bootstrap are working. The names of the scripts also feel reasonable.
This is a good milestone to take stock at.
|
|
|
|
| |
Convert comments about magic constants into metadata.
|
|
|
|
| |
Still can't edit functions, but we're getting there.
|
|
|
|
|
|
|
|
|
| |
In particular, I'm starting to have opinions about how to scalably position
the cursor at the end of each frame.
One advantage of text mode without a pointer device (mouse/trackpad): only
one cursor to track. UI can't be modified anywhere. That simplifies any
reactive UI framework.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Both manual tests described in commit 7222 now work.
To make them work I had to figure out how to copy a file. It
requires a dependency on a new syscall: lseek.
|
| |
|
|
|
|
| |
https://github.com/akkartik/mu/issues/45#issuecomment-719990879, task 2.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Strings can contain spaces.
|
|
|
|
|
|
| |
This was very difficult to debug.
We still need to process space in the middle of a word.
|
| |
|
|
|
|
|
| |
Lesson learned: functions store args in _reverse_ order. Since evaluation
is very frequent, it's worth optimizing for it.
|
| |
|
|
|
|
|
| |
Cursor now in the right place after rename. But stack still doesn't show
the value of a name.
|
|
|
|
|
| |
Names don't stick yet, but we have a scaffolding for printing a dialog
and accepting input.
|
|
|
|
|
|
|
|
|
| |
snapshot: migrating call-path to store word handles rather than word indexes.
ctrl-a and ctrl-e are segfaulting. There are likely other problems.
The major new change here is that allocating a call-path-element no longer
initializes it.
|
|
|
|
| |
A new example that better demonstrates the value of named arguments.
|
| |
|
|
|
|
|
|
|
| |
I just needed to remove an obsolete guardrail in render-line.
Still seeing some bugs with left-arrow when playing around with the full
expansion of `1 2+`.
|
|
|
|
|
| |
Bring back definitions for 1+ and 2+. Expanding nested calls still doesn't
work.
|
|
|
|
|
|
|
| |
Starting to work. I'm still seeing problems in lines with multiple expanded
calls, but perhaps that's a rendering issue.
The code is absolutely ghastly.
|
|
|
|
|
| |
Snapshot. We've gotten arrow keys navigating, but segfault when getting
to the second word in an expanded function call body.
|
|
|
|
| |
Rather surprisingly, this transformation worked the first time!
|
|
|
|
| |
Fix and cleanup.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Snapshot that requires a check in the Mu compiler.
Currently I don't spill a register if it could possibly be over-written
by a function output within. However, find-in-call-path is a good example
of where this constraint is too lenient and results in unsafe code. The
variable `curr` gets clobbered during loop update by the variable `match?`.
What's the answer? Perhaps we should ban all conditional updates to function
outputs? That'd be dashed inconvenient.
|
|
|
|
|
| |
Function expand/contract still works, but the implementation is totally
different under the hood.
|
| |
|
| |
|
|
|
|
|
| |
Slowly hoist cursor-word from environment to sandbox. This isn't its final
destination.
|
| |
|
| |
|
|
|
|
| |
Track just whether to step inside or not.
|
|
|
|
| |
Back to commit 6872.
|
|
|
|
|
| |
Snapshot. Caching subsidiary stacks is a dead end; they're just the final
iteration. We need to render all iterations.
|
|
|
|
| |
Now saving the subsidiary stack.
|
|
|
|
|
|
| |
Emit a stack of not ints but more complex objects containing the int payload.
Function calls again segfaulting.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|