Mar 8, 2020
New milestone: I just wrote 150 LoC of glorified machine code (utterly unsafe; lots of magic numbers) and had it work the first time.
https://github.com/akkartik/mu/commit/c8784d1c0f0
Though to be fair I'd been planning it for 16 hours, with lots of preliminary commits that nibbled away at the edges of the problem. Still, time spent thinking before rather than debugging after.
Perhaps this is bad news. Perhaps my brain is getting so colonized by machine code that I'm losing my bearings on what is easy for others.
permalink
* *
Mar 6, 2020
Lots of words in
this commit message about liveness analysis, and it probably still makes no sense to anybody.
Hopefully it'll make sense to me at least in a month or two.
permalink
* *
Feb 28, 2020
OMG, check out this "spiritual fork" of Mu that's designing not just the entire software stack to fit in a single person's head, BUT ALSO THE PROCESSOR.
https://github.com/grokthis/ucisc/blob/master/docs/01_Introduction.md
Still super early days. There's a nascent VM.
Needless to say, I'll be contributing.
permalink
* *
Feb 28, 2020
Update on the Mu computer's memory-safe language
Still no type-checking or memory-safety, but we have partial support for arrays and product types. Still several sharp edges:
- can't index an array with a literal
- can't index an array with non-power-of-2-sized elements
- can allocate but not use arrays/records on the stack
My todo list is growing. But work per item is shrinking. Hopefully there's an asymptote.
(More details. Repo.)
permalink
* *
Feb 21, 2020
Update on the Mu computer's memory-safe language
Mu just got its first couple of non-integer types: addresses and arrays. As a result, the factorial app can finally run its tests based on command-line args.
http://akkartik.github.io/mu/html/apps/factorial.mu.html
Addresses are accessed using a '*' operator. Arrays are accessed using an index
instruction that takes an address (addr array T
) and returns an address (addr T
).
Literal indexes aren't supported yet.
Open question: indexing arrays of non-power-of-2 element sizes.
permalink
* *
Feb 15, 2020
I'll be in Porto, Portugal on Mar 24 to present a paper on Mu at the
Convivial Computing Salon.
permalink
* *
Feb 10, 2020
A brief timeline of the Mu computing stack
Jul 6, 2014: commit 0, tree-based interpreter for a statement-oriented language
Jul 19, 2017: commit 3930, start of SubX machine code
Sep 20, 2018: started building SubX in SubX
Jul 24, 2019: SubX in SubX done, commit 5461
Oct 2, 2019: started designing the Mu memory-safe language
Oct 29: started http://akkartik.github.io/mu/html/apps/mu.subx.html
permalink
* *
Feb 3, 2020
The Agaram Paradox: to get to better interfaces, expose your implementations.
permalink
* *
Jan 31, 2020
I just wrote up a cheatsheet of all the instructions supported by Mu (best on a wide screen/window):
https://raw.githubusercontent.com/akkartik/mu/master/mu_instructions
It's not clean. Mu isn't a clean, well-designed language. Because it's designed to map 1:1 with x86, and x86 is not a clean, well-designed instruction set.
But this sort of 1-page summary of a compiler is something I've always wished I had. Something that doesn't tell you what to type out and then pretend you understand compilers.
permalink
* *