AlmidePRE-1.0

Almide · 迄今为止的故事

250 天,从 10,000 行到 700,000 行。

README 说我要做什么,实际发布了什么,途中又舍弃了什么。全部取自仓库自身的历史。

ALMIDE编程语言 / 开源
250天,从首次提交的 2026 年 3 月 7 日到 11 月 11 日
17,044次提交,分布在这 250 天中的 234 天
277次发布,首次发布在开始两天后
69×Rust 代码的增长,从 10,128 行到 698,358 行

各个里程碑时,仓库中的 Rust 代码行数

↔ 左右滑动或横向滚动,查看完整图表。

0 100k 200k 300k 400k 500k 600k 700k 3 月 4 月 5 月 6 月 7 月 8 月 9 月 10 月 11 月 v0.1.0 · 10,128 v0.10.0 · 74,363 v0.20.0 · 115,143 v0.30.0 · 239,200 v0.40.0 · 222,211 v0.60.0 · 315,364 v0.69.1 · 662,638 现在 · 698,358

统计仓库中的所有 .rs 文件,包含注释和空行。7 月下旬曾下降一次,因为标准库被改写为 Almide。

序章 — 3 月 7 日至 9 日

一门让 AI 用最少 token 写代码的语言。

首次提交在 3 月 7 日。两天、143 次提交之后,v0.1.0 发布了。当时 README 写道:

Almide 是一门让 AI 直接、高效地编写代码的语言。设计目标是让大语言模型用最少的 token、最少的思考表达意图。

当时只有 10,000 行 Rust:词法分析器、解析器、类型检查器、格式化工具,以及 Rust 和 TypeScript 两种输出。没有证明,没有检查器。目标是让代码容易写。

第一章 — 3 月 9 日至 14 日

一天发布四个版本。

v0.2.0、v0.2.1、v0.2.2 和 v0.3.0 都在 v0.1.0 发布的同一天发布。第二天加入了泛型和元组。3 月 11 日的 v0.5.0 引入借用推断,第一次显露出这门语言如今的方向。

那一周形成了两个习惯。v0.5.7 的标题是 MiniGit 在 40 次试验中全部通过:我开始统计模型写出的程序究竟能不能通过。而 v0.5.13 开始跨模型对语法进行 A/B 测试。

第二章 — 3 月 17 日至 30 日

先加进来,再舍弃。

连续两周,几乎每个版本都在删除东西。++ 被 + 取代。uuid 和 crypto 离开了标准库。JavaScript 输出并入 TypeScript。do 块被移除。newtype 被别名取代。隐式转换也被删除。

然后到了 v0.9.5:wasm 目标实现完整标准库功能对等,TypeScript 目标被移除。输出从 Rust 和 TypeScript 变成三种,又回到两种,最终留下原生代码和 WebAssembly。双目标并不是原定计划,而是三周尝试后留下的结果。

到 3 月 30 日的 v0.10.0,代码已达 74,000 行。三周增长七倍,已经超出一个人能从头到尾读完的规模。

第三章 — 4 月至 5 月 21 日

把它做成工具。

节奏慢了下来。4 月平均每天 30 次提交,不到 3 月的一半。4 月 22 日至 5 月 1 日完全没有提交,是整个 250 天里唯一持续三天及以上的空档。

这期间发布的内容面向实际使用者:编译器拆分为九个 crate,不再需要 Rust 的安装器,根据记录的模型失败案例持续调整诊断信息的循环,以及 v0.14.6,LLM 优先版本,带来可直接复制粘贴的修复和 almide fix。随后又有了 REPL 和编辑器服务。

也走过一些岔路。LLVM 后端被移出主线。GPU shader 目标发布了。所有值类型都加入了写时复制,mut 成了关键字。

第四章 — 5 月 22 日至 6 月 10 日

奠定核心的四天。

5 月 23 日:wasm 性能达到与 Rust wasm 相当的水平。5 月 24 日:336 字节的 Hello world。5 月 25 日:引入 Perceus,无需注解、无需 GC 的内存管理。5 月 26 日:用 Lean 4 证明每次分配都会被释放。

速度、体积、内存、证明,连续四天。第一份证明出现在第 80 天。

接着是 6 月 8 日和 9 日。v0.26 在这两天发布了 22 个补丁版本,每修复一个跨模块 bug 就发布一次。

第五章 — 7 月 5 日至 20 日

绝不输出错误的字节。

25 天没有发布次版本。然后是 v0.28.0:v1 trust-spine 发布,可选择启用经过验证的 wasm 代码生成,绝不输出错误的字节。目标从生成正确的输出,转向拒绝生成无法检查的输出。

十天后,它成为默认路径。再过一天,v0.30.0 的标题写着:修复 0.29.0 悄悄产生的错误值。它成了默认路径,却在悄悄出错,而发布标题直接承认了这一点。

第六章 — 7 月 24 日至 8 月 1 日

开始怀疑测量本身。

九天里发布十七个次版本。标题说明了一切:

一个测错了程序的质量门禁 · 绿灯不能再说谎:重新启用十六个实际上没有检查任何内容的门禁 · 一个什么都没安装的 CI 步骤报告成功 · 撤回三项测量结果 · 收回 4.4 倍的性能提升

检查显示绿灯,却没有检查任何东西。性能提升源于测量错误。这些问题被逐一发现,并公开撤回相关结论。这也是唯一一段代码量缩小的时期。

第七章 — 8 月 2 日至 30 日

重新设计语言表面。

内部稳定后,作者直接接触的部分被重新设计。错误传播从隐式变为显式:自动 ? 在同一天被弃用并移除。整个 try_ 函数家族被删除。v0.60.0 的标题只有三个英文单词:结构部分正式发布。

第八章 — 9 月至 11 月 7 日

翻了一倍。

从 v0.60.0 到 v0.69.1,Rust 代码从 315,000 行增长到 663,000 行。证明从 10,000 行增长到 24,000 行。Rust 测试从 30,000 行增长到 125,000 行。每日提交从 58 次增长到 184 次。

README 的第一句话也变了:

Almide 是一门面向 AI 编写和修改代码的静态类型语言。它并不声称模型总能写对,而是要在模型写错时,让编译器在编写阶段指出问题,并给出修复方式。

尾声 — 11 月 10 日和 11 日

把它展示给大家。

第 250 天,我第一次公开发帖介绍它。帖子被自动删除,收到的评论也很尖锐。给你其中一个函数,你知道它是做什么的吗?

于是我做了统计。18,843 个函数中,有 12 个没有任何调用方。一个 493 行的文件,在已不被任何地方引入后,仍被修改了三次。95 个文件是按大小而非职责拆分的。随后,我加了一项检查,让这些数字只能下降。

README 曾如何描述它

3 月
一门让 AI 用最少 token 写代码的语言
3 月至 10 月
一门为 AI 生成代码优化的语言
11 月
一门能指出 AI 错误的语言

它起初想让代码更容易写,后来转向在代码出错时将其拦住。途中被舍弃、撤回或停用的东西,几乎都发生在这个转变过程中。

投入的时间

每天多少小时。

提交时间能回答一部分。平均而言,在有提交的日子里,一天中有 13.6 个不同小时至少出现过一次提交。到了 10 月和 11 月,这个数字超过了 18。

那不是我的工作时长。有 38 天的提交分布在一天中的 20 个或更多小时,凌晨 3 点到 5 点之间共有 784 次提交。没有人能这样工作。是智能体在我睡觉时继续运行。这些数字反映的是工作持续运行了多久,而我没有记录自己在桌前坐了多久。

各月平均每日提交次数

↔ 左右滑动或横向滚动,查看完整图表。

69 3 月 13.0h 30 4 月 8.6h 24 5 月 8.5h 51 6 月 15.4h 55 7 月 12.9h 58 8 月 14.1h 88 9 月 13.7h 148 10 月 18.5h 184 11 月 18.8h

每个月下方:一天中至少有一次提交的小时数的平均值。

困难之处

代价最大的部分。

  • 舍弃能用的代码。TypeScript 目标、JavaScript 目标、LLVM 后端和第一个 wasm 生成器,都曾正常工作,也都被移除了。
  • 两天发布 22 个补丁版本。每一个都修复了某个使用者可能遇到的 bug。
  • 把会悄悄出错的实现设为默认。然后在第二天的发布标题里写明这一点。
  • 发现绿灯毫无意义。十六项不做检查就通过的检查,以及一个什么都没安装就报告成功的 CI 步骤。
  • 收回 4.4 倍的性能提升。因为错的是测量,不是代码。
  • 两个月翻倍。超过了我能读完的规模,而这正是如今整个设计试图解决的问题。
  • 听取编译器开发者的批评。并发现他们有些地方说得对。

返回首页