Lasm 通过允许开发者使用 Lean 4(一种函数式编程语言和定理证明器)编写应用程序并将其编译为 WebAssembly (Wasm),在形式化验证与现代 Web 部署之间架起了一座桥梁。与主要通过单元测试验证逻辑的标准 Web 开发不同,Lasm 允许使用形式化证明来确保代码按照特定规则正确运行。这种方法允许开发者在代码部署之前,就证明诸如授权逻辑、数据验证和分页一致性等属性。
该图像代表了 Lasm 工具链针对 Lean 4 和 WebAssembly 的核心功能。
该工具链支持广泛的部署目标,包括 Node.js、AWS Lambda、Vercel 和 Cloudflare Workers。它通过为每个环境提供特定的构建目标来处理不同运行时的复杂性。例如,虽然 Node.js 构建可以利用 Lean 的完整运行时功能(如线程和套接字),但边缘计算和浏览器构建则经过优化,在没有这些特定功能的情况下以单线程运行。Lasm 还提供了一系列库,例如用于 HTTP 请求的 Lasm.Fetch 和用于浏览器交互的 Lasm.UI,旨在促进全栈应用程序的构建,同时保持验证底层逻辑的能力。
Lasm 的一个核心特性是它能够在客户端和服务器之间共享已验证的逻辑。通过在共享的 Lean 文件中定义一次规则,开发者可以证明浏览器应用程序永远不会发送无效请求,且服务器只会处理满足相同规则的请求。这消除了前端和后端在验证逻辑上产生分歧的一类常见错误。然而,该系统有明确的边界:虽然应用程序的逻辑经过了形式化验证,但底层的 JavaScript 运行时、SQL 数据库执行和 JSON 序列化层仍处于形式化证明的范围之外。这意味着系统保证的是应用程序内部逻辑的正确性,而非整个基础设施栈的绝对可靠性。