Blorp 语言
摘要
Blorp 是一种新的低摩擦、高性能编程语言,可编译为 C 语言,具有显式效果、类型化失败、结构化并发和纯度追踪等特点。
<p><a href="https://lobste.rs/s/u3a9d0/blorp_language">评论</a></p>
查看缓存全文
缓存时间: 2026/05/31 20:23
# Blorp - 概览
来源:https://blorp-lang.org/
一个低摩擦、高性能的语言,让你能够信任所写的代码。
Blorp 示例 (https://blorp-lang.org/docs)
``
GOALS = [
("confidence", ["pure functions", "explicit effects"]),
("speed", ["native code", "structured concurrency"]),
("approachability", ["small syntax", "direct control flow"]),
("durability", ["typed failure", "safe bounds"]),
]
pure func format_goal(goal: (String, List[String])) -> String:
(name, features) = goal
"${name}: ${features.join(", ")}"
func main(args: List[String]):
pitch = GOALS
.map(format_goal)
.join("\n")
print(pitch)
``
## 功能特性
Blorp 保持语言表层直观,同时让副作用、失败和并发更容易推理。
- **可读语法**:缩进、关键字运算符和方法风格调用让代码易于浏览。
- **静态安全**:强类型、检查导入、显式错误可能性和穷尽匹配使错误更难隐藏。
- **纯度追踪**:`pure func` 将确定性逻辑与可执行 I/O 的代码分离。
- **值语义**:赋值如同独立的值,而 ARC/COW 保持共享的高效性。
- **类型化的缺失与失败**:`Option`、`Result`、`match` 和 `?=` 将不确定性融入类型流中。
- **结构化并发**:作用域任务、join、超时和通道保持并发工作有界。
- **编译期边界**:固定尺寸让编译器能证明数组、向量和矩阵的安全索引。
- **原生性能**:Blorp 编译为 C,同时保持性能细节可见。
- **工具友好设计**:稳定的格式化和显式副作用使得人类和 AI 编写的代码更易审查。
## 性能
Blorp 编译为 C,因此地道的 Blorp 代码性能目标是接近手写 C 的水平。以下是 Blorp 基准测试套件近期的快照,运行于 M4 MacBook Air。虽不权威,但大体展示了 Blorp 的定位。
基准测试 | Blorp | C | Go | Python
--- | --- | --- | --- | ---
numeric_loop | 0.1242s | 0.1215s (1.0x) | 0.1726s (1.4x) | 5.1754s (41.7x)
fib | 0.1979s | 0.1970s (1.0x) | 0.2600s (1.3x) | 7.6289s (38.5x)
string | 0.1169s | 0.1071s (0.9x) | 0.1681s (1.4x) | 0.1323s (1.1x)
array_sum | 0.0011s | 0.0005s (0.5x) | 0.0045s (4.1x) | 0.0957s (87.0x)
array_ops | 0.0069s | 0.0056s (0.8x) | 0.0179s (2.6x) | 0.4976s (72.1x)
dict_ops | 0.1370s | - | 0.1340s (1.0x) | 0.3506s (2.6x)
list_ops | 0.1236s | - | 0.2074s (1.7x) | 0.4296s (3.5x)
set_ops | 0.2573s | - | 0.5509s (2.1x) | 0.2332s (0.9x)
threaded_cpu_map | 0.0150s | 0.0110s (0.7x) | 0.0191s (1.3x) | 0.9889s (65.9x)
channel_pipeline | 0.0262s | 0.0345s (1.3x) | 0.0092s (0.4x) | 0.1952s (7.5x)
sleep_fanout | 0.0084s | 0.0118s (1.4x) | 0.0061s (0.7x) | 0.0376s (4.5x)
options | 0.0148s | - | - | -
simd | 0.1302s | 0.1071s (0.8x) | - | -
nbody | 0.0539s | 0.0495s (0.9x) | 0.0489s (0.9x) | 3.0480s (56.5x)
binary_trees | 0.1217s | 0.1125s (0.9x) | 0.1158s (1.0x) | 0.6813s (5.6x)
fannkuch | 0.3254s | 0.1819s (0.6x) | 0.1493s (0.5x) | 2.6348s (8.1x)
spectral_norm | 0.0160s | 0.0106s (0.7x) | 0.0140s (0.9x) | 0.9081s (56.8x)
mandelbrot | 0.0020s | 0.0021s (1.0x) | 0.0195s (9.8x) | 0.0590s (29.5x)
knucleotide | 0.0231s | - | 0.0153s (0.7x) | 0.0601s (2.6x)
reverse_complement | 0.0003s | - | 0.0001s (0.3x) | 0.0022s (7.3x)
运行细节:进程内 BENCH 标记,52 个二进制文件预先编译,4 个基准测试线程,Apple clang 21.0.0,Go 1.26.3,Python 3.14.4,Python 并发 3.14.4。对比单元格显示时间及基准测试套件相对于 Blorp 报告的因子。破折号表示该运行器未在该基准测试中报告。参见性能工具 (https://blorp-lang.org/docs/performance-tools)
## 技术细节
Blorp 旨在让表层感觉直接,同时保持编译器的安全性和运行时选择明确。
- **静态类型**:编译器在代码进入 C 后端之前检查导入、调用、`match` 穷尽性和可能失败的值。
- **Hindley-Milner 风格推导**:局部名称通常无需注解;类型从字面量、调用、分支和泛型使用中自然流动。
- **值语义**:赋值和更新如同独立的值,而 `ARC` 和 `COW` 让常见共享保持廉价。
- **Perceus 所有权**:编译器通过 Perceus 风格的 dup/drop 和重用分析来降低所有权,然后运行时引用计数保持源码语义。
- **原生输出**:类型化程序通过 `Core IR` 降至生成的 C,然后 C 编译器产生原生二进制。
相似文章
BLISS
BLISS是一种系统编程语言,于1970年左右在卡内基梅隆大学开发,以其无类型设计和优化编译器而闻名。
Blop
Blop 是一个测试你的应用并自动修复损坏测试的工具。
Blaise – 一款面向 QBE 的现代、自举、无历史包袱的 Object Pascal 编译器
Blaise 是一款现代且自举的 Object Pascal 编译器,旨在通过提供单一语言模式、统一的内存模型以及基于 QBE 的原生代码生成,来消除遗留系统的负担。
Blaise v0.10.0:本地后端、线程与增量编译
Blaise v0.10.0 通过 QBE 增加了本地后端支持、线程功能和增量编译,推动这款现代 Object Pascal 编译器向自托管和更广泛的平台支持迈进。
Boriel BASIC
Boriel BASIC 是一款现代开源的 BASIC 编译器 SDK,主要为 ZX Spectrum 设计,提供增强功能、整数类型以及内联汇编支持,适用于复古游戏开发。