Loment
中文

发布

发布历程

从最早的 Loment 到此刻发布的那一版。每一条都说明那一版是为了什么 —— 以及 它的记录在哪里,因为最早的那些版本是从另一个仓库发布的,而这个仓库并不带着它们的标签。

下载 入门

这是本站唯一一页写出具体版本号的页面。别处下载链接一律写 releases/latest,因为写在页面上的版本号是一个会过期的说法。而这里 版本本身就是主题,所以它们被写出来,每一个都指向当时真正发布的东西。 其中没有任何一条是对尚未发布的版本所作的承诺。

在这个仓库之前

最早六个版本出自这个项目之前的那个仓库。它们的标签不在这个仓库里,日期也不在,所以 下面给出的是这条线的形状,而不是一份带日期的记录 —— 而且这里没有一处链接,因为没有 什么可链。

0.1.1 —— 第一个 Loment

Rust 语法的严格子集。那是最初的约束,而不是一种风格:这门语言由 Rust 已经定下来的东西来定义,所以几乎没有什么可争的,需要的只是把编译器建起来。 它如今不再声称是子集 — 重叠面还在,只是当语法面长过它之后,那个说法被撤掉了。

0.1.2 Alpha —— 第一次自举

这门语言开始用自身来写。它买到的不是优雅:一个用它自己所编译的语言写成的编译器, 是找出这门语言表达不了什么的唯一办法。

0.1.2 pre1 —— 修补

第一次自举暴露出来的那些问题。预发布正是这类东西该发生的地方。

0.1.2 pre2 —— 至今仍立着的地基

此后每一次发布都建在它之上的自举地基:一个从提交进仓库的种子重建自身的编译器, 以及一条"重建出来的种子等于它出发时的那个"的判据。

0.1.3 Alpha —— 多语法这个想法到来

第一个可以把另一种语言的源码当作 Loment 来读的版本。语义永远是这门语言的,借来的 只是拼写。它是这个项目的立论,而不是后来加上去的一个功能,所以它列在这里,而不列 在"还有什么不同"下面。

0.1.3.4 Alpha —— 闭环

四个阶段 —— 词法分析器、解析器、检查器和代码生成器 —— 全部用 Loment 写成,产物 到达一个三阶段的定点。这是从上一个仓库发布的最后一个版本,也是此后每一个版本拿来 对照的那一版:它是语言与编译器不再需要一个宿主来定义自己的那个发布。

来自这个仓库

在这个仓库里发布过、并且排在此刻这一版之前的四版。每一版都只占一行,而不是一节, 理由是一份记录应该给出的:细节在它链去的那张发布页上,而一份不断完整生长下去的历史 就不再是历史,而是档案的第二份副本。

0.1.4 Pre —— 第一个装得上的 Loment

2026-09-22。它被当作预发布挂出来只有一个原因:让"这个仓库是有版本 的"不再是一句声称,而变成一件你看得见的事实。有一处制作上的细节留到了今天 —— 标签 指向的 commit 比归档包所构建自的那个更早,所以 GitHub 自动生成的源码归档包,是那次 构建之前的树。

0.1.4 —— 可用

2026-09-23。主题是可用,而不是往里塞更多东西:语法面完全 没有变,力气都花在把解释器最后一点从必经之路上拿掉。它的 Windows 安装器在那些把 Windows 配置成不搜索当前目录的机器上什么也不做;要这一版请从 zip 安装。

0.1.4.5 —— 回收,以及一个成为保证的运行时

2026-10-13。四级回收阶梯,带一个自适应的一半和一个分代的一半; no_runtime 从声明变成了保证;两个目标上都有网络;第五个维度 vm 到来,而它的发行闸是关着的。同一天的一个补丁只改了 Windows 安装器。

0.1.4.6 —— 闸门落下

2026-10-17。四件建好了、却一直被挡在发行版之外的东西同时变得可达: 编译器旁边的解释器档、libc 与 LibL、以及 vm 这一维。其余是 0.1.4.7 之前最大的一次缺陷清扫。

0.1.4.7 —— 库成为孪生

2026-10-18。一次缺陷发布,而头条不是一个功能:包里随附的每一个库,现在 在两个实现里编出逐字节相同的 IR —— 155 个模块,没有一个被跳过,没有 已知缺口,而且有一条判据在名单变长时会红。为了走到这里翻出来的是一批静默的状态 bug, 而不是它们从外面看起来的那种「分歧」。

新增

  1. 随附的库是孪生。库目录下的每个模块都被两个编译器各当作根编一遍, IR 逐字节比。门面 std 按名字、并且按一条判据排除在外 —— 它没有函数, 它的 127 个模块是逐个比的。
  2. 自举编译器里的常量表。find_const 不再为每个标识符扫一遍 整个单元 —— 那正是门面要编译几十分钟的原因。

修复

  1. 孪生判据翻出来的状态 bug。四臂 match 覆盖了 gc_auto_alpha 标志,于是非 alpha 的单元被按 alpha 编;链式转换只做了 第一步;64 位十进制字面量没有回绕;类型推断里内建调用没有返回类型;移位的操作数 继承了外层的 64 位期望;虚拟类型哨兵被当成了 token 下标。
  2. 清扫出的三十五条缺陷,每条都先有一条红的判据。标准库、 internet 的十个解析器、紧凑 VM 形式的解码器、语言服务的四处、 JSON/CSV/路径/格式化、VM 运行时的三处档边界,以及一趟把「整份程序」当成「这个单元 自己的闭包」递下去的依赖检查。
  3. 容量不够了。检查器的符号表现在是 5200 条;std 门面的 闭包有 4956 个顶层名字。

这一版没有

已经建好、却还被挡在外面的东西,这一版一件也没有放行 — 它不开闸。解释器 仍然不在包里:choose vm 仍只是一句声明,真把产物交给引擎是 0.1.5 的事。

当前状态在哪里

这一页是历史。这个项目今天能做什么,在站上其余页面和仓库里;它接下来打算做 什么,在路线图上 —— 它是按一份计划来写的,并且自己这么说。

最新发布 要安装的版本。永远用这个链接,绝不把一个版本号抄到页面上。 路线图 0.1.4.7 之后是什么,按一份计划来说,而不是按一个功能来说。 入门 装上它,跑你的第一个程序。 回到首页 Loment 是什么,以及它构建的两类程序。