This Month in Hax: August 2026
In August, we successfully merged 46 pull requests!
We extended our CLI functionality significantly: hax can now be installed via
cargo binstall cargo-hax, and it can automatically download and
manage its aeenas and charon dependencies. Moreover, users
can declare proof scenarios in a hax.toml file to specify exactly which options they want to use
for a particular project, and then run those scenarios via a new cargo hax extract command.
We extended our models of Rust core further and improved its testing infrastructure to make sure that it is an accurate model of Rust core. These models benefit both the Lean and the F* backend.
For the new Lean backend, we added support for hax_lib::requires, hax_lib::ensures, and other attributes and for the hax_lib::prop and hax_lib::int specification helpers.
This was our final sprint towards a release candidate for hax v0.4.0. The release candidate was published yesterday. Now, we are testing it, fixing bugs, and finalizing its documentation.
Thanks to the many external contributors we had this month!
Full list of PRs
- #2168: feat!: drop support for macOS on Intel
- #2167: feat: bump to aeneas nightly-2026.08.24-f8a0eb8
- #2159: Core models audit fixes
- #2157: Core models regressions fixes
- #2155: feat(cli): add proof scenarios and
cargo hax extract - #2154: feat(cli): add
cargo hax tools pin - #2153: [hax-lib] Re-architecture so that rustdoc picks the doc comments
- #2151: feat: Improve error message in
hax_mvcgenfor missing specs - #2150: Core models lean extraction with
cargo hax into lean - #2149: chore(engine): update ocamlformat to 0.29.0
- #2148: feat(cli): add
cargo hax tools removeandcargo hax tools clean - #2147: docs: improve hax-lean readme for Reservoir
- #2146: feat: mvcgen specs for all rust primitives
- #2144: chore: bump aeneas to nightly-2026.08.18-ae2f343
- #2143: ci: create version tags when syncing hax lean lib
- #2142: feat(cli): scaffold a complete Lean package by default
- #2140: Remove JS build of the engine
- #2138: Remove release workflow
- #2137: Update OCaml to 5.4.1
- #2136: Release automation
- #2134: Release prebuilt
cargo-haxbinaries and supportcargo-binstall - #2133: Make the tool end-to-end check requirable and pass on macOS
- #2131: Fix Nix dev shells and check examples through
justin CI - #2130: hax_lib::prop & hax_lib::int support for Lean
- #2129: fix(proof-libs/fstar): compare against minint in mul_overflow
- #2128: fix(proof-libs/fstar): specify the overflowing add/sub primitives
- #2125: Support installing
cargo-haxon its own - #2124: [F* core-models] Fix module cyclicity between
convertandnum - #2119: Core models testing improvements
- #2118: Fix Playwright timeouts
- #2117: fix(hax-lib): Support hax-lib decorations behind
cfg_attrin#[hax_lib::attributes]. - #2116: ci: publish manual from latest release instead of main
- #2115: fix: remove hax-lean version
- #2114: Warn on playwright failures
- #2113: chore: bump to aeneas nightly-2026.08.03-e0961db
- #2112: docs: remove stale CI.md and fix outdated crate and path references
- #2111: This month in hax blog post 2026 07
- #2110: chore: rename cli/subcommands to cli/cargo-hax
- #2107: proof-libs/fstar: specify abs_i8/16/32/64/128/isize instead of leaving them uninterpreted
- #2106: Fix missing license files in published crates
- #2105: [F*] Fix regressions in proof-libs
- #2100: Fix hax-lib annotations on inherent impls
- #2088: feat(core-models): add
overflowing_powandchecked_powto integer models - #2085: Tool version management
- #2080: feat(lean): support signed integer for-loops in for_loop_with_invariant
- #2071: Exclude/Opaque for Lean, internally using charon's attributes