Fil-C on Nix

Filnix wiki

mbrock/filnix/nanofil

nanofil

nanofil is a C compiler written in Prolog that emits Fil-C's memory-safe ABI, and an executable account of what that safety consists of: every check is a term in its IR, an interpreter gives the IR a meaning, and a Rocq model proves that a validated module's checks are enough. Every page about it is listed here.

Start

  • A guide to nanofil: one C function through every stage, the ideas to hold, a map of the modules and where to start a change.

  • Compile C in the browser: nanofil on SWI-Prolog in WebAssembly, drawing the syntax, IR and assembly it makes.

Explainers

  • How Fil-C works: capabilities, the collector, safepoints and the libc sandwich, the memory-safe C nanofil targets.

  • How Iris works: from Hoare logic to Iris, how it is built in Rocq, and nanofil's machine as an Iris language.

  • Concepts: each term the Prolog, the Rocq and these documents share, explained once.

The formal campaign

The compiler

Check evidence

Measurement

Milestones

The milestones that are still partly reference; search M4 for a C feature.

Archive

Records of finished or retired work, kept as written. What still holds has moved into the code and the documents above.