github FStarLang/FStar v2026.10.25
F* v2026.10.25

4 hours ago

What's Changed

  • Cherry: FStarC.BaseTypes, FStarC.Pprint and FStarC.StringBuffer in F* by @gebner in #4704
  • Cherry: implement FStarC.Timing by @gebner in #4707
  • Cherry: implement FStarC.SmallInt by @gebner in #4708
  • Custard: keep one C scope across global initializers by @gebner in #4712
  • Cherry: implement FStarC.Array by @gebner in #4709
  • Custard: emit karamel Private for private / KrmlPrivate declarations by @gebner in #4713
  • Cherry: fix the last any leaks in the compiler's term_eq by @gebner in #4714
  • Cherry: fix any leak from sortless projector pattern variables by @gebner in #4717
  • Custard: write .krml files as JSON instead of OCaml Marshal by @gebner in #4697
  • Cherry: implement FStarC.List by @gebner in #4718
  • Custard: clone closure-prologue callees per prologue instead of marking them by @gebner in #4722
  • Cherry: implement FStarC.String in F* by @gebner in #4720
  • Cherry: compile PIMap, PSMap, Range and Unionfind from source by @gebner in #4721
  • Cherry: reject equality on dyn instead of emitting uncompilable C by @gebner in #4723
  • Custard: custard_c_closure_guard and custard_c_ifdef for architecture-specific code by @gebner in #4727
  • Cherry: implement FStarC.Util by @gebner in #4724
  • Cherry: implement Format, Filepath, Getopt, Platform.Base, Plugins.Base by @gebner in #4725
  • Cherry: implement FStar.String in F* by @gebner in #4726
  • Cherry: implement FStarC.Json in F* by @gebner in #4728
  • Cherry: implement FStarC.Time by @gebner in #4716
  • Cherry: debug mode with runtime checks; drop failwith_tot by @gebner in #4730
  • FStarC.HashTable: interface plus OCaml and Cherry implementations by @gebner in #4731
  • Custard: reduce inlined local functions inside a local let rec by @gebner in #4732
  • Custard: keep the inline-field marker out of eta-expanded constructor binders by @gebner in #4734
  • Expose more compiler internals to --with_fstarc extensions by @gebner in #4736
  • Custard/Cherry: curried closures through a runtime monad dictionary by @gebner in #4735
  • Custard Cherry: check a definition's arguments against its signature by @gebner in #4742
  • Custard: share generated embeddings across units; add plugin_embedding by @gebner in #4738
  • Custard: reuse functor instances from linked units by @gebner in #4737
  • Compiler: avoid equality at dyn-containing types by @gebner in #4749
  • Cherry: do not copy a local function into every branch that calls it by @gebner in #4750
  • Cherry: FStarC.Tactics.Native is no longer a realized module by @gebner in #4748
  • Custard: coerce_prog gives untyped nodes their expected type by @gebner in #4745
  • Cherry: port FStarC.Int.Extra by @gebner in #4746
  • Update karamel submodule to 98ffca53 by @dzomo in #4751
  • Custard C printer: no trial emission where a branch cannot be empty by @gebner in #4741
  • Cherry: guarded exception handlers by @gebner in #4733
  • Cherry: do not copy unchanged parameters on self tail calls by @gebner in #4744
  • Cherry: static big-integer literals, small/big fast paths by @gebner in #4756
  • Cherry: reuse a matched cell where it dies inside the branch by @gebner in #4757
  • Custard: run module initializers in OCaml order, including opened-only modules by @gebner in #4747
  • Cherry: guaranteed tail calls (CHERRY_MUSTTAIL) by @gebner in #4752
  • Cherry: [@@cherry_boxed] attribute by @gebner in #4753
  • Custard: lambda-lift non-recursive local functions by @gebner in #4754
  • Custard: discard unused droppable results before local liveness analysis by @tahina-pro in #4761
  • Cherry: share closure environments with the same layout by @gebner in #4765
  • Cherry: a match that owns a dying unboxed value moves its fields out by @gebner in #4767
  • Cherry: --custard_split writes one C file per F* module by @gebner in #4766
  • Custard direct-to-C: Fix expression grouping and conditional-arm safety by @tahina-pro in #4759
  • Cherry: a partial application raises nothing by @gebner in #4769
  • Pulse: verified protocol libraries (TCP, buffered streams, protocol state machines) and examples by @nikswamy in #4656
  • Cherry: record updates change a unique record in place by @gebner in #4768
  • Custard: propagate non-owning foreign bindings through CUIs by @tahina-pro in #4772
  • Profiling: handle Github message format (fixes #4773) by @gebner in #4774
  • Custard: eta-expand wrappers of linked functions (#4771) by @gebner in #4776
  • Custard: void names read only by the other arm of a custard_c_ifdef test by @gebner in #4775
  • Cherry: [@@custard_inline] for small higher-order combinators by @gebner in #4770
  • Custard: honor rename_let on direct-C globals by @tahina-pro in #4778
  • Custard: preserve type abbreviations with a source attribute by @tahina-pro in #4781
  • Custard: type a specialization's kept binders by the declared type (fixes #4783) by @gebner in #4785
  • Pulse: initialized local arrays accept pts_to_uninit at end of scope by @gebner in #4784
  • Cherry: no datatype layouts at type variables by @gebner in #4788
  • Pulse: hoist nested stateful arguments once (fixes #4791) by @nikswamy in #4792
  • Bump version to 2026.10.25 by @dzomo in #4795

Full Changelog: v2026.10.18...v2026.10.25

Don't miss a new FStar release

NewReleases is sending notifications on new releases.