Jul 1, 2020
I made a fun little demo today using Mu. Fun for me, anyway :)
https://archive.org/details/akkartik-2min-2020-07-01
Mini rant on prototypes. While a prototype like this would possibly be less work to build on say Python, I think building it atop Mu provides some significant advantages. Research prototypes are not entirely throw-away; the goal with them is to accumulate learning even while the codebase churns. Because it relies on so few dependencies, Mu is more robust to bitrot. This makes it easy for someone else to reproduce an experiment. Even relatively far in the future. I really hope we can converge on a shared platform something like this for research prototypes. It does still need graphics and sound, though..
https://github.com/akkartik/mu
permalink
* *
Jun 21, 2020
Update on the Mu computer's memory-safe language
Mu now checks for most variable accesses if the variable is still live, and it's register hasn't been clobbered by some other variable. The extra-burdensome parts of programming in Mu are hopefully now not very burdensome.
Next up: testable syscalls for screen and keyboard. But I might take a break first. My RSI has been acting up.
https://github.com/akkartik/mu
permalink
* *
Jun 18, 2020
Update on the Mu computer's memory-safe language
Mu now checks all function calls.
Pass in the wrong type = error.
Save a result to the wrong type = error.
Save a result to the wrong register = error.
There are automated tests for error messages.
I estimate this change protects against 60% of the most common mistakes. Checking the most recent variable in a register should provide another 20%. And I hopefully have TODOs for the remainder to gradually whack away.
https://github.com/akkartik/mu
permalink
* *
Jun 16, 2020
I spent the last few days implementing a 'byte' type in Mu.
For the most part, Mu is exclusively 32-bit. No long/short nonsense here. However, I do like strings. Eventually even UTF-8 strings. So, minimal byte support. Mostly they behave like 32-bit values. You can't store them on the stack. (Because x86 reasons.)
As a test, I built a little calculator app: http://akkartik.github.io/mu/html/linux/apps/arith.mu.html. This app also shows off multiple return values.
Read more: https://github.com/akkartik/mu
permalink
* *
Jun 7, 2020
Why do programming languages require us to specify what modules we use? I think that stuff is easy to deduce. Even in machine code.
https://archive.org/details/akkartik-2min-2020-06-07
permalink
* *
Jun 6, 2020
My text-mode paginator for text files implemented all the way up from machine code now supports a tiny subset of Markdown syntax.
The code is terribly ugly, and there are zero tests. But it did help flush out three bugs in Mu. Next steps:
- Build out the compiler checks I missed the most.
- Implement a fake screen and keyboard so I can write tests for this app.
- Throw the app away and redo it right.
(Background. Repo.)
permalink
* *
May 30, 2020
It's amazing how much you can do layout-wise with just plain text. Pictured in this toot:
Alice in Wonderland by Lewis Carroll
Poems by e e cummings (https://en.wikipedia.org/wiki/E._E._Cummings)
permalink
* *
May 30, 2020
A new day, a new app
A text-mode paginator for text files. Think `more`, but no ncurses, no termbox, no libc, just Linux syscalls.
2-minute demo video:
https://archive.org/details/akkartik-2min-2020-05-29
App sources
Repo
permalink
* *
May 28, 2020
I'm starting to build some simple apps in Mu, my memory-safe language that translates 1:1 to machine code.
Today I built a program to print a file to screen:
http://akkartik.github.io/mu/html/linux/apps/print-file.mu.html
Experience report
Also:
All in all, this language isn't ready for others yet. I'm constantly inspecting the code generated by the translator.
permalink
* *
May 23, 2020
Tired: a chicken is just an egg's way of making another egg.
Wired: the Game of Life is just a glider's way of getting around.
Inspired: the rules of Conway's Game of Life are just the square root of a glider's way to achieve a 90°-rotation-then-flip.
permalink
* *