F*: the proof-oriented language behind Firefox and Linux crypto code

F*, pronounced "F star," is a general-purpose proof-oriented programming language that supports both purely functional and effectful programming. It combines dependent types with proof automation based on SMT solving and tactic-based interactive theorem proving, letting a developer state a specification and have the compiler check the code against it. F* programs compile by default to OCaml; fragments can also be extracted to F#, to C or WebAssembly through a tool called KaRaMeL, or to assembly through the Vale toolchain. F* itself is implemented in F* and bootstrapped using OCaml. The language is open source on GitHub under the Apache 2.0 license, with binaries for Windows, Linux and macOS posted on the releases page, and it can also be installed via OPAM, Docker or Nix. It is under active development by Microsoft Research, Inria, and the community.

The most concrete evidence of F*'s reach is Project Everest, an umbrella effort to build high-assurance secure communication software in F*. Its output includes HACL*, a library of high-assurance cryptographic primitives written in F* and extracted to C; ValeCrypt, formally proven cryptographic implementations written in the Vale assembly framework embedded in F*; and EverCrypt, which combines the two into a single cryptographic provider. Code from these projects is now used in production inside Mozilla Firefox, the Linux kernel, Python, mbedTLS, the Tezos blockchain, the ElectionGuard electronic voting SDK, and the WireGuard VPN. A separate tool, EverParse, generates C parsers for binary formats from formally proven F* specifications; EverParse-generated code is used in production in Windows Hyper-V, where it parses and validates every network packet that passes through the Azure cloud platform, and also in ebpf-for-windows.

Beyond these production deployments, F* underwrites a long line of peer-reviewed research on program verification and cryptographic protocol proofs, with papers at venues including PLDI, POPL, ICFP, CCS, S&P and USENIX Security spanning 2013 through 2025, covering topics from the Dijkstra monad that underlies F*'s effect system to verified implementations of TLS 1.3, QUIC, DICE measured boot, and the Signal protocol.

Key facts

  • F* combines dependent types with SMT-based proof automation and tactic-based interactive theorem proving, compiling by default to OCaml, with extraction paths to F#, C or Wasm via KaRaMeL, and to assembly via Vale.
  • It is under active development by Microsoft Research, Inria, and the community, and is distributed under the Apache 2.0 license.
  • Project Everest's HACL*, ValeCrypt and EverCrypt, verified cryptographic code written in F*, are used in production in Mozilla Firefox, the Linux kernel, Python, mbedTLS, the Tezos blockchain, the ElectionGuard voting SDK, and WireGuard.
  • EverParse, a parser generator that extracts verified C code from F*, checks every network packet passing through the Azure cloud platform inside Windows Hyper-V, and is also used in ebpf-for-windows.
  • The project has generated a substantial body of peer-reviewed research at venues such as PLDI, POPL, ICFP, CCS, S&P and USENIX Security, from 2013 through 2025.

Why it matters

F* is not confined to papers: code proven correct in it already ships inside mainstream software that hundreds of millions of people use daily. Crypto libraries built with F* run inside Firefox and the Linux kernel, and an F*-generated parser checks every network packet crossing Microsoft's Azure cloud. That is a rare, concrete bridge between formal verification and everyday production infrastructure, rather than a research demo that stays in the lab.

Who it affects

Directly, developers writing security- or correctness-critical software such as cryptographic libraries, protocol implementations and binary-format parsers, plus formal-methods and programming-languages researchers who build on F*'s effect system and proof techniques. Indirectly, users of Firefox, the Linux kernel, Python's crypto stack, mbedTLS, Tezos, WireGuard and Windows Hyper-V, whose software already contains F*-derived components without their knowledge.

How to use it

F* is open source under the Apache 2.0 license. Binaries for Windows, Linux and macOS are posted on GitHub's releases page, and it also installs via OPAM, Docker or Nix, or can be built from source. Programs compile to OCaml by default; the Low* subset compiles to C via KaRaMeL for production deployment, and the Vale toolchain extracts to assembly. An online book, Proof-oriented Programming in F*, offers browser-runnable examples and exercises, and F* course material has been taught at multiple seasonal schools.

How solid is it

The claims come from the project's own homepage rather than an independent review, but the production adoption list names specific, checkable targets: Firefox, the Linux kernel, Windows Hyper-V and Azure, and WireGuard, backed by a citation trail of peer-reviewed papers at PLDI, POPL, ICFP, CCS, S&P and USENIX Security running from 2013 to 2025. The page carries no date, version number, performance figures or adoption counts, so there is no way to tell what, if anything, changed recently, or why this surfaced on Hacker News now.

Risks and caveats

This is a project homepage, not a news announcement, so it offers no comparison to other proof assistants such as Coq, Lean or Dafny, and no account of recent changes. Formal verification also has an inherent limit: it proves code correct against a stated specification, not against reality, so a wrong or incomplete specification, or the parts of a larger system that sit outside the verified boundary, remain a source of failure.

“F* (pronounced F star) is a general-purpose proof-oriented programming language, supporting both purely functional and effectful programming.”

— F* project homepage, fstar-lang.org