README.md

KreMLin

KreMLin is a tool that extracts an F* program to readable C code. If the F*
program verifies against a low-level memory model that talks about the stack and
the heap; if it is first-order; if it obeys certain restrictions (e.g.
non-recursive data types) then KreMLin will turn it into C.

The best way to learn about KreMLin is its work-in-progress
tutorial. Pull requests and
feedback are welcome!

DESIGN.md has a technical overview of the different
transformation passes performed by KreMLin, and is slightly out of date.

This work has been formalized on paper. We state that the compilation of
such F* programs to C preserves semantics. We start from Low*, a subset of
F*, and relate its semantics to CompCert's Clight.

the ICFP 2017 Paper provides an overview of KreMLin as well
as a paper formalization of our compilation toolchain

We have written 20,000 lines of low-level F* code, implementing the TLS
1.3 record layer. As such, KreMLin is a
key component of Project Everest.