F* 免费

-

F*(读作 F star)是一个面向证明的编程语言,由微软研究院、Inria 等机构联合开发,支持依赖类型、SMT 自动化验证和代码提取(OCaml、F#、C、Rust)。广泛用于安全关键系统的形式化验证——TLS 实现(miTLS)、加密协议验证(Everest 项目)。配备 Pulse 扩展(并发命令式程序验证)、KaRaMeL/Vale 工具链(C/Rust/ASM 提取)。2026 年起新增 AI Agent 辅助证明能力(proof-copilot)及 MCP 服务器。

F* 产品界面

F*:面向证明的编程语言与形式化验证平台

核心参数与统计

项目 规格
项目名称 F*(F star)
分类 面向证明的编程语言 / 形式化验证工具
开源许可 Apache 2.0
GitHub Stars 3.1K+
编程语言 OCaml(编译器实现)、F*(自举)
交付形态 编译器 CLI / Docker / Nix / 在线编辑器
目标用户 安全工程师、形式化方法研究者、密码学工程师
核心引擎 Z3 SMT 求解器
代码提取目标 OCaml、F#、C、Rust、ASM(通过 Vale)
当前版本 v2026.07.12(日期版本号,每月 1-2 个版本)
核心赞助方 微软研究院、Inria、ERC(欧洲研究委员会)

核心参数解读:F 的核心理念是"类型检查即验证"——在依赖类型系统中编写的程序,类型检查通过即意味着程序满足其形式化规范。与 Coq、Isabelle/HOL 等经典证明助手不同,F 大量依赖 Z3 SMT 求解器自动完成证明义务,大幅降低了手动证明的工作量。3.1K GitHub Stars 在形式化验证领域是可观的数字——这一领域的用户群体是高度专业化的利基市场。138 位贡献者来自全球顶尖研究机构,项目保持每月 1-2 个版本的迭代节奏,93+ 个 Release 在学术界工具中属于高频迭代。Apache 2.0 许可确保了商用和二次分发的自由度。

用户与市场认可

F* 的市场认可主要来自学术影响力和旗舰项目的工程验证,而非广泛的商业用户数量。

维度 数据
GitHub Stars 3,100+
GitHub Forks 258
贡献者 138+
Release 数量 93+
学术论文发表 PLDI、POPL、CCS、IEEE S&P 等顶会
旗舰项目 miTLS(TLS 1.3 验证)、Everest(HTTPS 全栈)、HACL*(密码学库)
生产部署 部署至 Mozilla Firefox、Linux 内核
AI 辅助证明 proof-copilot(2026+)
社区渠道 Zulip(响应 24-48h)

学术影响力:相关论文发表于 PLDI、POPL、CCS、IEEE S&P 等计算机科学顶会。《Dependent Types and Multi-Monadic Effects in F*》(POPL 2016)是该领域经典文献,引用量持续增长。

旗舰验证项目:miTLS(经过 F 形式化验证的 TLS 1.3 协议实现)验证了用 F 验证数万行级工业代码的工程可行性。Everest 项目通过 F 验证整个 HTTPS 协议栈——涵盖 TLS、加密算法(AES、ChaCha20、Curve25519)、证书解析、HTTP 头部等组件。HACL(已验证的跨平台加密库)已部署到 Mozilla Firefox、Linux 内核等生产环境,证明 F* 验证的代码可安全部署到数十亿用户的浏览器中。

行业采用:微软内部用于验证核心安全组件,部分金融科技公司使用 F* 验证加密协议实现,航空航天领域对关键系统模块进行形式化验证。虽然采用单位数量有限,但每个案例都涉及极高价值的安全基础设施。

成本优势

F* 是完全免费开源的工具,核心成本不在软件许可而在学习曲线:

成本维度 F* Coq Isabelle/HOL Dafny
许可证费用 $0(Apache 2.0) $0(LGPL) $0(BSD) $0(MIT)
自动化程度 SMT 驱动,高度自动化 手动证明为主 自动化和手动兼具 SMT 驱动,高度自动化
代码提取 OCaml/F#/C/Rust/ASM OCaml/Haskell/Scheme 有限 C#/Java/Python/JS
学习曲线 中高 中高
安全验证领域 TLS/加密/协议(成熟) 编译器/数学 OS/调度/数学 软件工程
AI 辅助证明 ✅ proof-copilot(2026+) ⚠️ 部分工具 ❌ 有限 ❌ 有限
企业支持 ❌ 无官方商业支持 ✅ 有咨询/培训 ✅ 有咨询/培训 ✅ AWS(商业版)

成本分析:F* 的 SMT 驱动自动证明在主流证明助手中自动化程度最高,同样的验证任务通常需要更少的手动证明工作。但这一优势的前提是用户掌握依赖类型系统——学习曲线是形式化验证工具的共性门槛。proof-copilot(2026)的引入有望降低新用户上手门槛,但其实际效率提升效果尚在验证阶段。

架构与核心能力

F* 的系统架构围绕"证明即编程"理念构建:

F* 源码 (依赖类型 + 效应系统)
    ↓
F* 类型检查器 / 验证条件生成器
    ↓
┌─── Z3 SMT 求解器(自动证明证明义务)───┐
↓                                            ↓
自动证明通过                          证明义务未解决
↓                                            ↓
代码提取器                              用户提供辅助证明
↓                                            ↓
OCaml / F# / C / Rust / ASM (Vale)      类型检查完成
  • 依赖类型系统(核心引擎):类型系统基于依赖于值的类型(dependent types),允许在类型中表达前置条件、后置条件和不变式。例如 val sqrt: x:float{x >= 0.0} -> y:float{y >= 0.0 && y*y == x} 声明平方根函数——输入非负,输出保证非负且平方等于输入。
  • SMT 自动化验证:利用 Z3 求解器自动验证大部分证明义务。用户编写规范,F* 编译器自动生成验证条件(VCs)并交由 Z3 求解。
  • 多目标代码提取:验证通过的 F* 程序可提取为 OCaml、F#、C 或 Rust 代码。通过 KaRaMeL 工具链提取 C/Rust(适合嵌入式和高性能场景),通过 Vale 提取可验证的汇编代码。
  • Pulse 扩展:嵌入式 DSL 提供命令式语言编程体验(while 循环、可变引用、par 并行组合),基于并发分离逻辑验证共享内存并发程序。
  • Vale 可验证 ASM:嵌入 F 的 DSL,用于编写和验证底层汇编代码,已部署到 HACL 生产环境(AES-NI 指令优化)。
  • AI 辅助证明(proof-copilot):2026 年推出,支持自动生成证明片段、辅助调试类型错误、提供验证策略建议。官方定位为"辅助而非替代"——AI 生成证明需人工审核。
  • MCP 服务器:2026 年发布,允许 AI Coding 工具通过 MCP 协议直接与 F* 交互。

模型与版本演进

版本 发布日期 关键变化
v2026.07.12 2026-07 Float32/Float64 支持、proof-copilot AI 代理整合、编辑器交互改进
v2026.06.01 2026-06 Pulse 增强、Z3 集成优化、KaRaMeL/Vale 升级
v2026.04.15 2026-04 MCP 服务器发布、Copilot CLI 集成、编辑器协同能力
v2025.10.01 2025-10 Pulse DSL 引入、代码提取性能优化、Nix 支持
v2025.01.15 2025-01 .NET 8 迁移、SMT 接口重构、增量验证提升
v2024.06.01 2024-06 KaRaMeL 子模块化、优化验证性能
v2023.12.01 2023-12 新版 OCaml 提取、大规模库支持改进
v2023.06.01 2023-06 依赖类型系统增强、错误信息改进

版本演进特征:2023-2024 年重点在编译器基础架构(.NET 8 迁移、SMT 接口重构)和代码提取优化。2025 年引入 Pulse DSL,标志着对命令式/并发验证的支持。2026 年主线是 AI 集成——MCP 服务器和 proof-copilot 的相继发布将 F* 带入"AI 辅助验证"新阶段。版本记录以 GitHub Releases 为准。

技术优势

  • 依赖类型 + SMT 自动化:结合依赖类型理论的高表达力与 Z3 SMT 求解器的高自动化。用户可在类型级描述复杂规范,SMT 求解器自动处理大部分算术、逻辑和集合约束。相比 Coq,F* 通常需要更少的用户交互。
  • 分层验证策略:支持从完全自动化(SMT 全权处理)到完全手动(用户编写完整证明项)的灵活切换。简单属性依赖 SMT,复杂属性逐步添加辅助引理。
  • 端到端验证管线:F* 源码 → 类型检查 → 代码提取 → 编译为可执行文件,全程保持形式化保证的传递性。KaRaMeL 提取的 C 代码风格接近手写 C,已部署到 Firefox 等生产系统。
  • 命令式 + 并发验证:Pulse DSL 弥合了形式化验证与实际系统编程之间的鸿沟,支持细粒度锁、消息传递和工作窃取等并发模式。
  • 已验证的密码学原语库:HACL* 等库提供 50+ 经过验证的加密算法(AES、ChaCha20、Curve25519),新项目可直接复用。

部署踩坑指南

1. .NET 运行时依赖:F* 基于 .NET 8(2025 年完成迁移)。macOS 用户需注意 .NET 的 arm64 版本兼容性——部分旧版本在 M 系列芯片上可能出现 JIT 问题。解决方案dotnet --info 确认 SDK ≥ 8.0,使用 brew install dotnet

2. Z3 求解器版本兼容:F 对 Z3 版本有精确依赖——不兼容版本会导致验证结果不一致。解决方案:按 F 仓库 z3 子模块指定版本编译,或使用官方预构建 release 包(已内置 Z3)。不建议使用 pip install z3-solver

3. 构建环境配置:从源码编译需要 OCaml(4.14+)、.NET 8 SDK、Python 3。解决方案:推荐 Docker(docker pull fstar/fstar)或 Nix(nix build github:FStarLang/FStar),两者均处理了依赖版本约束。

4. 编辑器集成配置:VS Code 插件需配置 fstar.executablePath 指向本机 fstar.exe,配置错误时会静默失败。解决方案:确认 fstar.executablePath 指向 which fstar.exe 的输出路径。

5. 大规模项目增量验证性能:数万行级项目(如 miTLS)增量验证重检时间可能较长。解决方案:使用 --cache_checked_modules 启用模块级缓存,使用 --lazy 模式延迟检查无关定义。

如何使用

使用方式 说明 适用场景
本地安装 opam install fstar 或 Docker/Nix 完整开发与验证
在线编辑器 fstar-lang.org/run.php 快速实验与学习
VS Code 插件 fstar-vscode-assistant 交互式验证开发
Emacs 插件 fstar-mode.el(MELPA) 交互式验证开发
AI 辅助 proof-copilot + MCP 服务器 AI 驱动验证辅助
# 安装(推荐 Docker)
docker pull fstar/fstar
alias fstar='docker run --rm -it -v $(pwd):/code fstar/fstar fstar'

# 验证 hello.fst
fstar hello.fst

# 提取为 OCaml
fstar hello.fst --codegen OCaml

产品定价

层级 价格 包含内容
开源核心 $0(Apache 2.0) 完整编译器/验证器、Z3 集成、全部 DSL
Docker 镜像 $0 预配置完整开发环境
在线编辑器 $0 浏览器使用,无需安装
proof-copilot $0(开源) AI 辅助证明插件
VS Code 插件 $0 交互式验证
企业支持 无官方商业支持 社区 Zulip + GitHub Issues

F* 是完全免费的开源项目,不设付费版本或功能锁定。Apache 2.0 许可允许商用和二次分发。Zulip 社区响应通常在 24-48 小时内。

应用场景

  • 安全协议验证(最成熟):安全工程师用 F* 编写网络协议的形式化规范,通过依赖类型系统验证协议的机密性和完整性。miTLS 验证发现了多个 TLS 1.3 草案阶段的安全问题。核验:验证通过后提取 C 代码,配合 TLS-Attacker 做集成测试。
  • 密码学实现验证:使用 F 编写密码学算法,验证算法正确性和常量时间实现。HACL 库已提供 50+ 经过验证的密码学原语。核验:运行标准 KAT 向量验证。
  • 系统软件关键模块验证:使用 Pulse DSL 对 OS 调度器、文件系统并发访问、数据库事务隔离进行形式化验证。核验:Pulse 验证的模块与原有模块并行运行对比。
  • AI 安全与对齐研究(新兴方向):利用 F* 对 AI 系统中的安全关键组件进行形式化验证——推理调度器公平性、数据访问控制策略、模型输出约束执行逻辑。核验:验证通过的形式化规范作为 AI 系统审计基础文档。

适用人群

人群 适配价值 前置要求
安全工程师 验证协议和密码学实现的正确性 熟悉密码学和安全协议
形式化方法研究者 验证技术研究与实践 函数式编程 + 类型论基础
系统软件开发者 关键系统模块可靠性保障 对形式化验证有基本了解
密码学工程师 编写并验证密码学实现 密码学 + 函数式编程基础
计算机科学学生 学习程序验证与类型理论 编程语言理论基础

不适配人群:需要快速交付业务代码的全栈开发者(验证开销远大于直接写代码);对函数式编程和类型理论无基础者(学习曲线不适合零基础);非安全关键领域的常规应用开发。

竞品对比

对比维度 F* Coq Isabelle/HOL Dafny Lean 4
开源/闭源 开源(Apache 2.0) 开源(LGPL) 开源(BSD) 开源(MIT) 开源(Apache 2.0)
自动化程度 ★★★★(SMT 驱动) ★★(手动为主) ★★★ ★★★★(SMT 驱动) ★★★(tactic)
代码提取 OCaml/F#/C/Rust/ASM OCaml/Haskell/Scheme 有限 C#/Java/Python/JS C/JavaScript
安全验证声誉 TLS/加密(miTLS/Everest) 编译器(CompCert) OS 核(seL4) 软件工程 数学推理
并发验证 ✅ Pulse DSL ❌ 有限 ❌ 有限
AI 辅助证明 ✅ proof-copilot ⚠️ Tactician ❌ 有限 ❌ 有限 ✅ GPT-f
学习曲线 中高 中高 中高
企业支持 ❌ 无官方支持 ✅ 咨询/培训 ✅ 咨询/培训 ✅ AWS 付费 ❌ 社区为主
GitHub Stars 3.1K 4.8K 2.5K 4.7K 7.5K

决策建议:验证工业级加密协议或密码学实现→F 最成熟(miTLS/HACL/Everest)。编译器验证→Coq(CompCert 生态)。数学定理形式化→Lean 4。简单程序正确性验证且以 .NET 为主→Dafny。

总结与展望

F 在形式化验证领域的核心竞争力在于「依赖类型 + SMT 自动化 + 多目标代码提取 + 并发验证」的技术组合,在安全协议和密码学验证场景中拥有最成熟的工程案例(miTLS/Everest/HACL 均已通过生产环境验证)。Apache 2.0 许可和活跃的学术社区确保了项目的长期可持续性。

核心优势:SMT 驱动的高自动化降低证明工作量;多目标代码提取(OCaml/C/Rust/ASM)覆盖从原型到生产部署的完整链路;Pulse DSL 是唯一支持命令式+并发验证的主流证明助手;验证代码已部署到 Firefox、Linux 内核等数十亿用户级系统。

已知局限:学习曲线(依赖类型 + 效应系统)仍是主要门槛,非函数式编程背景的新用户需要 2-4 周的上手时间;商业支持仅依赖社区渠道(Zulip),缺乏企业级 SLA;proof-copilot 仍处于早期阶段,AI 生成证明的可靠性有待验证。

风险披露:(1) 项目由学术机构主导,商业化支持有限,企业级 SLA 不可用;(2) 编译器基于 .NET 8 运行,生态系统与 OCaml/Haskell 传统存在隔阂;(3) 形式化验证的正确性取决于规范的准确性——规范本身的 bug 不在验证覆盖范围内;(4) proof-copilot 生成的证明片段需人工审核,应建立"AI 辅助 + 人工复核"的质量流程。

后续观察方向:proof-copilot 的成熟度提升路径、社区规模和贡献者增长趋势、以及是否出现由微软或第三方提供的商业支持方案。

总结与展望

F 以其"依赖类型 + SMT 自动化验证"的独特技术路线,在形式化验证领域占据着重要而独特的位置。miTLS、Everest、HACL 等旗舰项目证明了其在安全关键系统验证中的工程可行性——不仅仅是学术实验,而是已经部署到数十亿用户浏览器中的生产代码。

核心优势:(1) SMT 驱动的自动化验证大幅降低证明工作量;(2) 多目标代码提取(OCaml/C/Rust/ASM)保障验证传递性;(3) Pulse 支持命令式/并发验证,弥合函数式验证与系统编程的鸿沟;(4) proof-copilot 引入 AI 辅助,降低新手门槛;(5) 丰富的已验证密码学库(HACL*)可供复用;(6) Apache 2.0 许可,商用无合规顾虑。

当前局限:(1) 学习曲线仍需一定的函数式编程和类型论基础——形式化验证工具的共同痛点;(2) 社区规模和生态系统远小于主流语言,遇到问题可参考的 Stack Overflow 帖子有限;(3) 文档和示例的覆盖面仍需完善,特别是针对新用户的入门教程;(4) 非安全领域的应用案例相对有限——F* 在 TLS/加密领域验证充分,但在其他领域的通用性待扩展;(5) 无官方商业支持渠道,企业采用需要内部有形式化验证专家。

采购/采用风险评估:对于安全关键系统(加密实现、协议实现、安全关键模块),F 的采用风险较低——Apache 2.0 许可无供应商锁定风险,已验证的旗舰项目提供了工程可行性的参考案例。主要风险在于找到具备 F 技能的人才——形式化验证工程师的招聘市场竞争激烈。建议的策略是:从 HACL 等已验证库的集成开始(零 F 开发成本获益),培养内部团队的 F 能力后再扩展到自研验证项目。对于非安全关键领域的常规开发,F 的验证成本通常超过收益,不建议采用。

后续观察方向:(1) proof-copilot 对验证效率的实际提升效果——如果 AI 能显著降低证明编写时间,F 的采用门槛可能大幅下降;(2) Pulse 的成熟度与采用率——命令式/并发验证是 F 相比竞品的核心差异化能力;(3) 形式化验证在 AI 安全中的角色扩展——AI 安全对齐是新兴领域,F* 的方法论可能找到新的应用场景;(4) 商业支持和培训生态的建立——这是从研究工具走向工业标准的关键一步。

相关工具:GitHub CopilotCursor

版本信息

  • F* v2026.07.12 :新增 Float32/Float64 支持、proof-copilot AI 代理整合、编辑器交互改进。
  • F* v2026.06.01 :Pulse 并发验证增强、Z3 集成优化、KaRaMeL 与 Vale 工具链升级。
  • F* v2026.04.15 :MCP 服务器发布,支持 Copilot CLI 集成;新增编辑器协同能力。
  • F* v2025.10.01 :引入 Pulse DSL、改进代码提取性能、新增 Nix 构建支持。
  • F* v2025.01.15 :.NET 8 迁移完成、SMT 求解器接口重构、增量验证性能提升。

用户评价

  • 加载评价中...