Spectre 编程语言

Hacker News Top 工具

摘要

Spectre 是一种用于安全、基于合约的低级系统编程的新编程语言,默认强制不可变性,并支持编译时/运行时合约检查。它通过 QBE IR 编译,并包含将 C 代码转换为 Spectre 的功能。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/05/16 00:35

# Spectre | Spectre 文档 来源:https://spectre-docs.pages.dev/ Spectre 是一门旨在实现安全且基于契约的底层系统编程的编程语言。 它支持类型级不变量、函数级前置条件和后置条件,并通过默认不可变性来增强安全性。 本文档旨在作为 Spectre 编程语言的用户指南。 ## 为什么?(https://spectre-docs.pages.dev/#why) 目前明显缺乏在底层强制保证正确性的基于契约的编程语言。 Spectre 背后的理念是,它默认提供正确性、合理的数据流和不可变性,从而让底层编程更安全,同时不妨碍语言及其工具链的便利性和开发体验。契约尽可能在编译时求值,但为了避免类似 Z3(SMT 求解器)等系统的复杂性,以及编译器无法证明某些条件为真所带来的不便,无法在编译时求值的检查会自动在运行时执行。不过,运行时检查在发布版本中是否保留取决于是否使用了 `guarded` 构造。 内存管理是手动的,以保留底层控制能力,通常通过使用标准库分配器(Arena、Stack)或自定义分配器实现。 该语言将高级代码编译为 QBE IR,然后再降级为平台相关的汇编。此外,还有实验性的 LLVM 和 C99 后端。特别地,`--translate-c` 功能允许将 C 代码翻译成等效的 Spectre 代码,这对将现有项目迁移到 Spectre 非常有用。 ## 快速入门 (https://spectre-docs.pages.dev/#getting-started) 简单的 Hello World 可以通过以下代码实现: ```spectre val std = use("std") pub fn main() i32 = { trust std.stdio.print("Hello, world: {d}.", {10}) return 0 } ``` 你会注意到这里使用了 `trust` 关键字。任何具有底层不安全机制的操作(如 IO,例如 `std.stdio.print` 使用的 `@print` 内建函数)都必须显式地信任,因为它本质上是不纯的。 除非你使用了这些函数的安全包装器(这些包装器使用了前置条件、不变量等),或者使用了更简单的函数。例如,简单的 `@puts` 不需要“信任”,因为除非发生严重的内存不足错误,否则它不会失败。因此,标准库将其标记为安全。 ## 前言 (https://spectre-docs.pages.dev/#foreword) 这些文档可能已过时,不保证反映最新的 Spectre API。

相似文章

语言模型代理的自我编程执行

arXiv cs.AI

本文介绍了自我编程执行(SPE),这是一种代理架构,其中语言模型生成其自身的编排程序,而非依赖固定的外部框架。文章提出了“Spell”,一种基于 Lisp 的语言,支持自我编辑和重新求值,并展示了前沿模型能够利用该方法成功执行代理任务。

AgentSPEX:一种智能体规范与执行语言

Hugging Face Daily Papers

AgentSPEX 提出了一种领域专用语言,用于构建模块化、可解释的大模型智能体工作流,具备显式控制流、状态管理与可视化编辑器,性能优于现有 Python 耦合框架。

QBE – 编译器后端

Hacker News Top

QBE 是一个紧凑的、爱好级别的编译器后端,仅用 10% 的代码即可实现工业级优化编译器 70% 的性能,支持 amd64、arm64 和 riscv64,并采用简单的基于 SSA 的中间语言。