Atomic memory cells and operations for WMM/RISC-V
- Memory and registers are split up into typed atomic cells - Value type now contains only scalar values - Instructions are compiled down to WMM "operations", allowing stores and loads of composite values to be split up into atomic parts - Scheduler now executes one operation at a time, rather than one block at a time - New scheduler steps for WMM - Commands (formerly Thread Actions) such as allocation now executed at the global scheduler level. Action IDs no longer needed. - Threads and stacks changed completely; registers now stored in stack frames - Monads pretty-print properly again! - Patricia trees replaced with sptrees Lots of code is still commented out, and tests still don't work, but the main formalization code compiles.