With apologies to Robert Pirsig:

Is it a language, or an operating system, or a virtual machine?

Mu.

Read these first: problem statement, readme and installation instructions (mu requires minimal dependencies).

Mu's code looks quite alien, requiring editors to be specially configured to colorize it in a sane manner. So this page provides links to the source files showing how it currently looks in my custom setup.

Whetting your appetite: some example programs.

Part I: basic infrastructure

000organization.cc: the basic skeleton program. Compiles and runs but doesn't do much. Later layers hook into this skeleton to add functionality. Mu's guarantee: you can load features up until any layer, and it will compile and pass all tests until that point. More details →
001help.cc: just a simple test layer to show how to hook into the skeleton. Also summarizes how to invoke mu, behaviors that later layers will be providing.
002test.cc: mu's minimalist test harness, relying on a couple of one-liners in the makefile to autogenerate lists of tests to run.
003trace.cc: support for logging facts about our program, and for checking the facts logged in tests. (tests for the test harness)

Part II: the mu virtual machine, designed to compile easily to machine language.

010vm.cc: core data structures: recipes (fun


browser.cc.html'>077trace_browser.cc: a zoomable UI for inspecting traces generated by mu programs. Allows both scanning a high-level view and drilling down into selective details.

Epilogue: maps summarizing various address spaces, and the conventions that regulate their use in previous layers.


The zen of mu:

Mu's vision of utopia: