Announcing WoofWare.PawPrint, a deterministic .NET runtime
I just released an early version of WoofWare.PawPrint to NuGet.
PawPrint is a deterministic .NET runtime - think CHESS. It runs the BCL of .NET 10. It interprets IL, shimming out only the BCL’s JIT intrinsics and native code: there are no shortcuts.
Enough is implemented that it can do:
Console.Writeline
async void Main(string[] args) {...}
Task.Run
A whole load of reflection
Many of the low-level synchronisation primitives like Monitor
It uses a variant of Probabilistic Concurrency Testing when scheduling threads, in an attempt to maximise the exploration of “interesting” thread orderings.
... continue reading