Functional programming language inspired by ML and aimed at program verification
F* The official F* logo
Paradigm Multi-paradigm :functional ,imperative Family ML :Caml :OCaml Designed by Nikhil Swamy, Juan Chen, Cédric Fournet, Pierre-Yves Strub, Karthikeyan Bhargavan, Jean Yang Developers Microsoft Research ,Inria [ 1] First appeared 2011; 14 years ago (2011 ) Stable release v2025.03.25
[ 2] / 26 March 2025
; 7 months ago (2025-03-26 ) Typing discipline dependent ,inferred ,static ,strong Implementation language F* OS Cross-platform :Linux ,macOS ,Windows License Apache 2.0 Filename extensions .fst Website fstar-lang .org Influenced by Dafny ,F# ,Lean ,OCaml ,Rocq ,Standard ML
F* (pronouncedF star ) is ahigh-level ,multi-paradigm ,functional andobject-oriented programming language inspired by the languagesML ,Caml , andOCaml , and intended forprogram verification . It is a joint project ofMicrosoft Research , and theFrench Institute for Research in Computer Science and Automation (Inria).[ 1] Itstype system includesdependent types ,monadic effects , andrefinement types . This allows expressing precise specifications for programs, including functional correctness and security properties. The F* type-checker aims to prove that programs meet their specifications using a combination ofsatisfiability modulo theories (SMT) solving andmanual proofs . For execution, programs written in F* can be translated toOCaml ,F# ,C ,WebAssembly (via KaRaMeL tool), orassembly language (via Vale toolchain). Prior F* versions could also be translated toJavaScript .
It was introduced in 2011.[ 3] [ 4] and is under active development onGitHub .[ 2]
Until version 2022.03.24, F* was written entirely in a common subset of F* andF# and supported bootstrapping in bothOCaml and F#. This was dropped starting in version 2022.04.02.[ 5] [ 6]
F* supports common arithmeticoperators such as+,-,*, and/. Also, F* supports relational operators like<,<=,==,!=,>, and>=.[ 7]
Common primitivedata types in F* arebool,int,float,char, andunit.[ 7]
^a b "Microsoft Research Inria Joint Centre" .MSR-INRIA .^a b "FStarLang/FStar" .GitHub . Retrieved18 May 2025 .^ Swamy, Nikhil; Chen, Juan; Fournet, Cédric; Strub, Pierre-Yves; Bhargavan, Karthikeyan; Yang, Jean (September 2011).Secure distributed programming with value-dependent types . ICFP '11: Proceedings of the 16th ACM SIGPLAN International Conference on Functional Programming. Vol. 46. Tokyo, Japan: Association for Computing Machinery. pp. 266– 278.doi :10.1145/2034574.2034811 . Retrieved17 April 2023 . ^ "The F* Project" .Microsoft . Retrieved20 April 2023 .^ "fstar.exe is no longer buildable in F# as a .NET executable #2512" .Github . Retrieved17 April 2023 .^ "Consider dropping requirement that F* code has to be valid F# #1737" .Github . Retrieved17 April 2023 .^a b Swamy, Nikhil; Martínez, Guido; Rastogi, Aseem (Jan 14, 2024).Proof-Oriented Programming in F* (PDF) . Ahman, Danel; Hriţcu, Cătălin; Maillard, Kenji; Martínez, Guido; Plotkin, Gordon; Protzenko, Jonathan; Rastogi, Aseem; Swamy, Nikhil (2017)."Dijkstra Monads for Free" .44nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages . Swamy, Nikhil; Hriţcu, Cătălin; Keller, Chantal; Rastogi, Aseem; Delignat-Lavaud, Antoine; Forest, Simon; Bhargavan, Karthikeyan; Fournet, Cédric; Strub, Pierre-Yves; Kohlweiss, Markulf; Zinzindohoue, Jean-Karim; Zanella-Béguelin, Santiago (2016)."Dependent Types and Multi-Monadic Effects in F*" .43nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages . Swamy, Nikhil; Martínez, Guido; Rastogi, Aseem (2024).Proof-Oriented Programming in F* .
Overview Software
Applications Video games Programming languages Frameworks, development tools Operating systems Other
Licenses Forges Related
Microsoft development tools
Development environments
Languages APIs and frameworks
Database
Source control Testing and debugging Delivery
Main projects
MSR Labs applied research