Properly Testing Concurrent Data Structures

I am going out on a limb here, as I used Rust for the examples, but I think this might be an interesting read for Zig systems programmers non-the-less. And there are at least four different fun but simple Zig libraries waiting to be written in that post:

  • a library that turns an []const u8 into a PRNG,
  • a library that implements property-based-testing loop on top of that,
  • a library that plugs coverage guided fuzzing into that interface,
  • the topic of the post, a library for pausing concurrent operations and implementing deterministic thread scheduling,
  • a port of exhaustigen to Zig.
7 Likes

Nice write-up!

Btw, managed to comprehend exhaustigen by porting it to Zig.
Last bullet point – check!

6 Likes