Skip to content

FStarLang/FStar

Repository files navigation

F*: A Proof-oriented Programming Language

F* website

More information on F* can be found at www.fstar-lang.org

Installation

See INSTALL.md

Online book

An online book Proof-oriented Programming In F* is in the works and regular updates are posted online. The book is available as a PDF, or you can read it while trying out examples and exercises in your browser interface from this tutorial page.

Wiki

The F* wiki contains additional technical documentation on F*, and is especially useful for topics that are not yet covered by the book.

Editing F* code

You can edit F* code using various text editor. Emacs has the best support currently, providing syntax highlighting, code completion and navigation, and interactive development, using fstar-mode.el. However, other editors also have limited support. More details on editor support are available on the F* wiki.

Extracting and executing F* code

By default F* only verifies the input code, it does not compile or execute it. To execute F* code one needs to translate it for instance to OCaml or F#, using F*'s code extraction facility---this is invoked using the command line argument --codegen OCaml or --codegen FSharp. More details on executing F* code via OCaml on the F* wiki.

Also, code written in a C-like shallowly embedded DSL can be extracted to C or WASM by the KaRaMeL tool, and code written in an ASM-like deeply embedded DSL can be extracted to ASM by the Vale tool.

Chatting about F* on Slack and Zulip

The F* developers and many users interact on this Slack forum---you should be able to join automatically by clicking here, but if that doesn't work, please contact the mailing list mentioned below.

Users can also chat about F* or ask questions at this Zulip forum.

Mailing list

We also have a mailing list which we use mainly for announcements.

Reporting issues

Please report issues using the F* issue tracker on GitHub. Before filing please search to make sure the issue doesn't already exist. We don't maintain old releases, so if possible please use the online F* editor or directly the GitHub sources to check that your problem still exists on the master branch.

Contributing

See CONTRIBUTING.md

License

F* is released under the Apache 2.0 license; for more details see LICENSE