Plaza 新闻汇总

F*:面向证明的编程语言

F*(发音为 F 星)是一种通用的面向证明的编程语言,支持纯函数式和带副作用的编程。它结合了依赖类型的表达能力以及基于 SMT 求解和基于战术的交互式定理证明的证明自动化。

F* 程序默认编译为 OCaml。F* 的各个片段也可以通过名为 KaRaMeL 的工具提取到 F#、C 或 Wasm,或者使用 Vale 工具链提取到汇编语言。F* 使用 F* 实现,并使用 OCaml 引导。

F* 是 GitHub 上的一个开源项目,并且由微软研究院、Inria 和社区积极开发。

**下载**

F* 在 Apache 2.0 许可证下发布。Windows、Linux 和 Mac OS X 的二进制文件定期发布在 GitHub 的发布页面上。您还可以从 OPAM、Docker、Nix 安装 F*,或者按照 INSTALL.md 中的说明从源代码构建它。

**学习 F***

在线书籍《F* 中的面向证明编程》正在编写中,并且定期在线发布更新。您可能希望在浏览器中点击下面的图片,尝试示例和练习的同时阅读它。

我们还有一个教程,涵盖了 Low*,它是 F* 的一个低级子集,可以通过 KaRaMeL 编译成 C。

**课程资料**

F* 课程经常在各种季节性学校教授。其中一些课程的讲座和课程材料也是有用的资源。

**社区**

请使用 GitHub 讨论来询问有关 F* 的问题,了解公告等。

尽管我们之前使用过 Slack 实例,但我们旨在将我们的在线社区整合到 Zulip 上的这个公开论坛上。

我们还有一个邮件列表,流量非常低。您可以在 fstar-mailing-list 订阅。

F* PoP Up 研讨会是面向所有用户和开发人员的会议。我们的目标是每月安排一次,尽管时间安排不固定——我们希望在那里见到你!

您还可以通过 [email protected] 联系 F* 的维护人员。

**用途**

F* 用于工业和学术环境中的多个项目。我们在这里列出了一些。如果您在您的项目中使用 F*,请告知 fstar-mailing-list。

**Project Everest**

Project Everest 是一个总项目,它使用 F* 开发高保证的安全通信软件。F* 的很大一部分开发都受到 Project Everest 所针对的场景的推动。Project Everest 的几个分支继续作为自己的项目,包括下面列出的一些。

**HACL*、ValeCrypt 和 EverCrypt**

HACL* 是一个高保证密码原语库,使用 F* 编写并提取到 C 中。ValeCrypt 在 Vale 中提供了经过形式化证明的密码原语实现,Vale 是一个嵌入在 F* 中的经过验证的汇编语言编程框架。EverCrypt 将它们组合成一个单一的加密提供程序。这些项目中的代码现在在多个项目中用于生产,包括 Mozilla Firefox、Linux 内核、Python、mbedTLS、Tezos 区块链、ElectionGuard 电子投票 SDK 和 Wireguard VPN。

**EverParse**

EverParse 是一个用于二进制格式的解析器生成器,它生成从形式化证明的 F* 中提取的 C 代码。EverParse 的解析器在多个项目中用于生产,包括 Windows Hyper-V,其中经过 Azure 云平台的每个网络数据包首先由 EverParse 生成的代码进行解析和验证。EverParse 也用于其他生产环境中,包括 ebpf-for-windows。

**研究**

F* 是研究的热门话题,在编程语言和形式化方法社区中,以及在安全和系统社区中从应用的角度来看。我们下面列出其中一些,这些论文的完整引用可以在此书目中找到。如果您希望将您的论文包含在此列表中,请联系 [email protected]。

**F* 及其 DSL 的设计**

**应用于安全和密码学的应用**

许多在安全和密码学中应用 F* 的论文可以在 Project Everest 书目中找到。我们在这里也提到了几个突出的例子,以及与 Project Everest 无关的其他应用。

**系统中的应用**

**解析中的应用**

**编程、程序证明和程序分析中的应用**

**AI 辅助编程**

**其他**

**关于旧版 F* 的论文**

第一篇介绍名为 F* 的系统的论文发表在 2011 年。尽管当前版本的 F* 在 2015 年进行了重新设计和实现,但为了完整起见,我们在这里包含了一些旧的论文。

原文地址
2024-12-25 21:41:20