EN 中文

Silu.

简明 Python 语法的自举编译型语言。

def greet(name: str) -> str:
    return "Hello, " + name + "!"
 
print(greet("Silu"))
 
$ ./siluc hello.si -o hello   # 0.11 秒,默认 LTO
$ ./hello
Hello, Silu!

早期项目——现已发布文档;二进制即将发布;源码将分阶段公开。

写起来是 Python,跑起来是原生码

15.6×
vs CPython——15 程序几何平均
0.004s
原生启动
0.9×
vs 手写 Rust 孪生(同报告参考值)
程序CPythonSilu 原生vs CPythonRust(参考)
arith(算术循环)80ms3.3ms24.4×2.9ms
dict(字典操作)34ms2.2ms15.6×2.8ms
fannkuch(排列计数)32ms2.6ms12.1×2.5ms
fib(递归斐波那契)36ms2.5ms14.2×2.8ms
float(浮点循环)52ms2.7ms19.3×2.8ms
jsonparse(JSON 解析)47ms7.4ms6.3×3.6ms
jsonparse_json(Json 孪生)42ms7.9ms5.3×—
knucleotide(DNA 序列)889ms11.0ms80.9×14.8ms
list(列表操作)35ms2.4ms14.8×2.4ms
mandelbrot(分形渲染)41ms2.4ms17.2×2.7ms
nbody(天体模拟)214ms5.7ms37.6×5.4ms
spectral(范数计算)288ms7.4ms38.7×4.7ms
string(字符串拼接)49ms3.0ms16.1×2.2ms
trees(二叉树)31ms3.2ms9.8×3.4ms
wordcount(词频统计)88ms23.3ms3.8×13.7ms

v1.9.0 报告(2026-10-25),Apple Silicon,3 轮中位数(含进程启动);四个平面(解释器 / CPython / 原生 / Rust)输出逐字节一致。对 Rust 孪生的几何平均为 0.9×——部分程序更快,部分更慢。后续工具链更新(默认 LTO 链接、字符串池化、缓冲复用)进一步改善了 jsonparse、spectral 与 wordcount;见评测文档。

给出证明,或者给出反例

⚡

真正的证明,不是采样

a / (b*b + 1) 被证明安全——Z3 通过代数推理得出除数恒 ≥ 1,覆盖所有可能的输入。模糊测试说不出这句话。

🎯

真实 bug 的反例

m / (n - n) 被标记为可达崩溃,并给出触发输入——因为除数恒等于零。你拿到的是具体的崩溃参数,不只是警告。

🔗

契约可组合

require(b != 0) 声明函数的定义域。函数独立证明安全;调用点另行检查是否尊重契约。删除任何调用方不会影响函数自身的证明。

当前范围:除零、列表/字符串下标越界、字典键。循环按有限界验证;求解器无法判定的义务会被明确报告为未证明——绝不静默视为安全。

$ cat safe.si
def safe_div(a: int, b: int) -> int:
    require(b != 0)
    return a / b
 
$ silu prove safe.si
safe_div: ok (1 checked abort site(s) proved safe)
verify: ok - no abort reachable
 
$ cat buggy.si
def risky(m: int, n: int) -> int:
    return m / (n - n)
 
$ silu prove buggy.si
risky: POSSIBLE ABORT - division by zero
verify: ABORT REACHABLE

自举,而且可以证明这一点

编译器用 Silu 自己写的

词法分析、语法分析、IR 生成器、LLVM 代码生成——全部用 Silu 编写,并被自身编译为原生二进制。不动点检查(自举转换器逐字节复现自己的构建输出)在测试套件中持续运行。

一条命令完成自举

silu bootstrap 从源码构建零 Python 工具链,约 25 秒。之后每次编译只需 ./siluc file.si -o prog——0.11 秒,默认 LTO。

所有权,无 GC

静态注解决定内存表示:int 留在栈上,str 是作用域退出时释放的独占缓冲,容器无装箱。赋值即所有权转移。取舍——包括当前刻意从简的动态平面——写在内存文档里。

极速编译

0.11s
siluc 单次编译(默认 LTO)
25s
一次性自举
~2ms
二进制启动
$ ./siluc hello.si -o hello
✓ 0.11 秒编译完成(LTO)
$ ./hello
Hello, Silu!