公告

FujoOS公布日延期,以仓库发布为准

首页 Bug 社区

站上说的,和你跑出来的,对不上。

这块看板收的东西很具体:站上写了某句话,你按它的命令跑,得到的不是它说的那个东西。不管最后是我们写错了、命令过期了,还是你的环境确实不同——先报上来,读明白之后它会带着编号进下面那张表。

为什么是邮件。 这个站没有服务器,这个 origin 上也不许跑第三方脚本——两件事一起,可用的提交渠道只剩一个。代价是实打实的:没有投票,没有评论,条目由作者读完再录入。
编号不会变。 —— 一条报告的编号是它的地址,按顺序发放,不复用、不重编。你留过的链接永远指向同一条。

一条报告要带什么

这个站对「完成」的要求是可重放的命令与输出;对「没完成」的要求一样。缺了下面任何一条,报告只能停在「需要更多信息」——不是刁难,是没有它就无法判定谁对。

带什么 为什么
哪一句 页面地址,或者原文。没有这一条,我们不知道该去改哪儿。
你跑的命令 原样贴,不要整理。整理过的命令跑出来的东西,通常正是分歧所在。
你得到的输出 原样贴。错误信息是整个报告里信息量最大的部分。
你预期的输出 引用站上那句话就够了——它就是我们双方的对照物。
版本与环境 站上写的版本串;以及 OS、浏览器或工具链的版本——但只在确实相关时才要。

两条硬门槛

  • 要指向站上的一句话 —— 给不出页面地址或原文的,不进看板。这一条挡掉的是「你们应该支持 X」。
  • 要带命令与输出 —— 只有结论、没有过程的,同样不进。这一条挡掉的是「我试了,不行」。

这不是苛刻。这两样都没有,我们无法判断是站错了还是你看错了——那它就不是一条能处理的报告。

照着这个填

text 报告模板
【哪一句】页面地址,或者原文
【命令】  原样贴,不要整理
【输出】  原样贴,错误信息别删
【预期】  站上那句话
【版本】  站上写的版本串
【环境】  OS / 浏览器 / 工具链(只在相关时填)
这些不用报: 站上有些页面本身就在讲「还没做完」——已知边界冻结面的开放项、M100 的外部审计。那些是已知的,写在明处。但某一页把本该写的缺口写漏了,那是真 bug。

看板

每一条都带一个不变的编号、它报出时的版本、以及现在的状态。状态只有六种,含义写死;关掉的条目必须写明为什么。

编号 标题 线 来源 状态 报于
FJ-0001 Loment B1 — 工具链页说 lompkg「还没重写」;0.1.4 已重写,L0 生成器 lomc 也已重写站点显示 0.1.3.4 Alpha · 实测 0.1.4-alpha工具链页已改写:lompkg 标明「已用 Loment 重写(loment/tools/lompkg.lomt)」,并补上 L0 生成器 lomc 的说明;已知边界页那条「一个工具还是 Python」换成「构建与发布脚本还是 Python」,如实列出剩下的格子。
证据
what:
https://fujojtop.github.io/FujoOSwebsite/docs/language/toolchain/ ——「这是工具链上唯一还没重写成 Loment 的一个」(讲 lompkg);
https://fujojtop.github.io/FujoOSwebsite/docs/project/limitations/ 语言段第 16 条 ——「一个工具还是 Python —— 包管理 lompkg。」

cmd:
git show v0.1.4-alpha:loment/tools/lompkg.lomt | head -1
python tools/loment_pkg_test.py | tail -1

out:
// loment/tools/lompkg.lomt — Loment 版包管理器 (无 Python, docs/159 §4b)
loment_pkg_test: 3/3 通过

expect:
工具链页与已知边界都不该再有「还是 Python」的工具:0.1.4 里 lomfmt / lomdoc / loment_lsp / lompkg
四块都已用 Loment 重写,判据是与 Python 版 stdout 逐字节相同 + 退出码相同。
另外 **L0 生成器 lomc** 也已重写(loment/tools/lomc.lomt:四个后端与 Python 版逐字节相同,
12 份生成物一个字节没动),工具链页目前完全没提它 —— 建议补一行说明它不再是 Python。

env:
Windows 11 + WSL2;clang 22.1.8;仓库 Fujoos-FujoLang-DEV @ c47c970
语言 官方 已修 2026-09-14
FJ-0002 Loment B2 — 站点版本号仍是 0.1.3.4 Alpha;仓库已 0.1.4 Alpha 并打了 tag站点显示 0.1.3.4 Alpha · 实测 0.1.4-alpha站点版本串统一升到 0.1.4 Alpha2:自举页、语言索引页、上手页、冻结面、路线图、Loment 页页脚与对话框、Bug API 契约页。
证据
what:
https://fujojtop.github.io/FujoOSwebsite/docs/project/limitations/ 语言段第 14 条 ——「Loment 尚未向开发者发布 —— 0.1.3.4 Alpha 已经完成并冻结
(M96 完成,冻结面见 docs/158)。」
https://fujojtop.github.io/FujoOSwebsite/loment/ 页脚 ——「MIT Loment 0.1.3.4 Alpha · Potato v1」;页内对话框 ——「目前是 0.1.3.4 Alpha」

cmd:
git describe --tags
python -c "import json;print(json.load(open('loment/build/release-manifest.json',encoding='utf-8'))['release'])"
git rev-list -n1 v0.1.4-alpha | cut -c1-7

out:
v0.1.4-alpha-2-gc47c970
0.1.4-alpha
f3da70e

expect:
站点写 **0.1.4 Alpha**(tag `v0.1.4-alpha`)。这一版的主题是「去 Python 收口」:用户侧工具链与
L0 生成器全部 Loment 化;语言面**无破坏性变更**(冻结面语义与 0.1.3.4 相同),L0 的 12 个
生成物一个字节没动 —— 所以「已完成并冻结」这半句可以保留,只有版本号要换。

env:
Windows 11 + WSL2;clang 22.1.8;仓库 Fujoos-FujoLang-DEV @ c47c970
语言 官方 已修 2026-09-14
FJ-0003 Loment B3 — 自举页的三阶段定点字节数 1002385 B 与实现不符(现为 1630436 B)站点显示 0.1.3.4 Alpha · 实测 0.1.4-alpha自举页的定点字节数改为 1630436 B(自举种子实测),并按这一版补上「原生后端」与「无 clang 引导」两行。
证据
what:
https://fujojtop.github.io/FujoOSwebsite/docs/language/selfhost/ 统计卡 ——「1002385 B 三阶段产物 IR 逐字节全等」

cmd:
wc -c < loment/build/selfhost_driver.ll

out:
1630436

expect:
统计卡里的数字应随实现更新(或干脆不印死数字,改成「由 tools/loment_seed.py 现算」,并说明它被
门禁钉住)。这个数在新版本来就该动:0.1.4 修了自举 checker 的「复合类型表按函数清零」,驱动
单元的 IR 跟着变(1 630 342 → 1 630 422 B,再到现在的 1 630 436 B)。「逐字节全等」这个**性质**
没变(loment_seed_test 每次都验),只有数字过期。

env:
Windows 11 + WSL2;clang 22.1.8;仓库 Fujoos-FujoLang-DEV @ c47c970
语言 官方 已修 2026-09-14
FJ-0004 Loment B4 — 自举页写「完成 86 个」;里程碑实为完成 87、部分 8站点显示 0.1.3.4 Alpha · 实测 0.1.4-alpha里程碑计数改为 87 完成 / 8 部分 / 4 未开始 / 1 未达,涉及自举页、语言索引页、上手页、路线图、Loment 页统计卡与对话框。
证据
what:
https://fujojtop.github.io/FujoOSwebsite/docs/language/selfhost/「还差什么」段 ——「100 个里程碑口径下完成 86 个」

cmd:
sed -n '6p' docs/154-loment-status.md

out:
- 完成 **87/100** · 部分 **8** · 未达 **1** · 未开始 **4**

expect:
完成 **87**、部分 **8**(未达 1、未开始 4 不变)。增量是 **M59 调试信息**收口:DWARF 在语句级
行表之外补上了变量信息,M59 从「部分」翻成「完成」。docs/154 由 tools/loment_status.py 从
docs/145 生成、门禁 C10 盯着它;站上那行是它的一个过期副本。

env:
Windows 11 + WSL2;clang 22.1.8;仓库 Fujoos-FujoLang-DEV @ c47c970
语言 官方 已修 2026-09-14
FJ-0005 Loment B5 — 已知边界「调试信息只有语句级行表,没有变量信息」已不成立站点显示 0.1.3.4 Alpha · 实测 0.1.4-alpha已知边界那条改为「调试信息已经有行表与变量名 / 声明行(M59 收口),但位置求值不全」——保留仍然成立的那半句。
证据
what:
https://fujojtop.github.io/FujoOSwebsite/docs/project/limitations/ 语言段第 17 条 ——「aarch64 能交叉编译但没有模拟器验证 —— 产物没有真正跑过。
调试信息也只有语句级行表,没有变量信息。」

cmd:
python tools/lomentc.py loment/examples/toolchain.lomt \
       --emit-llvm x.ll --emit-potato x.json --debug
grep -c '!DILocalVariable' x.ll
grep -c 'dbg_declare' x.ll

out:
14
14

expect:
「没有变量信息」这半句要去掉、换成准确边界:**行表 + 变量名与声明行**已经有了(每个形参/局部
一条 DILocalVariable 元数据 + 一条 #dbg_declare 调试记录,形参带 arg:,类型走 DIBasicType);
仍存在的是**位置求值** —— llvm-objdump --debug-vars 在 freestanding 目标上只显示
`<unknown op DW_OP_fbreg>`,而 clang 自己发射的 C 产物在同一条命令下**显示完全相同**,所以那是
工具限制、不是元数据缺陷。aarch64 那半句仍然成立。

env:
Windows 11 + WSL2;clang 22.1.8;仓库 Fujoos-FujoLang-DEV @ c47c970
语言 官方 已修 2026-09-14
FJ-0006 Loment B6 — 已知边界缺一条:自举 codegen 对 `(a + b as T) as U` 发非法 IR站点显示 0.1.3.4 Alpha · 实测 0.1.4-alpha已补进已知边界页语言段:自举 codegen 对 (a + b as T) as U 发射非法 IR,本次在源码侧绕开、codegen 没动。
证据
what:
https://fujojtop.github.io/FujoOSwebsite/docs/project/limitations/「语言」段(5 条)里**没有**这一条;https://fujojtop.github.io/FujoOSwebsite/docs/language/selfhost/ 说「IR 生成:.ll 与 Python 版逐字节一致,
目标覆盖 39/39」——39/39 是语料范围,不含下面这个构造

cmd:
printf 'module b6\nfn f(x: u64) -> u8 {\n    let y: u8 = (48 + (x %% 10) as u32) as u8;\n    return y;\n}\n' > b6.lomt
python tools/lomentc.py b6.lomt --emit-llvm ref.ll --emit-potato p.json && grep 'trunc i' ref.ll
sh loment/bootstrap.sh b6.lomt | grep 'trunc i'

out:
参考实现:  %t6 = trunc i32 %t5 to i8
自举 stage1:%t6 = trunc i64 %t5 to i8      ← %t5 其实是 i32;clang 直接拒

expect:
两条应当一致(都 trunc i32)。根因在自举 codegen 的 operand_type()(loment/selfhost/codegen.lomt:318):
运算符右侧是「带 as 的括号表达式」时,它进括号取了里层 x 的类型(u64),**没把括号后面那个
`as u32` 算进去**;参考实现的 expr_type(Bin) 取 `lt or rt`,这里正是 u32。建议要么修 operand_type,
要么写进已知边界 —— 现在的绕法是在源码里多写一次中间变量,用户不该需要知道这件事。

env:
Windows 11 + WSL2;clang 22.1.8;仓库 Fujoos-FujoLang-DEV @ c47c970
语言 官方 已修 2026-09-14
FJ-0007 Loment B7 — 已知边界缺一条:大单元里拿 `fn` 当局部名会让自举 checker 走岔站点显示 0.1.3.4 Alpha · 实测 0.1.4-alpha已补进已知边界页语言段:大单元里把局部命名为 fn 会让自举 checker 走岔,根因未定位,缺口仍开放。
证据
what:
https://fujojtop.github.io/FujoOSwebsite/docs/project/limitations/「语言」段(5 条)里**没有**这一条;https://fujojtop.github.io/FujoOSwebsite/docs/language/selfhost/ 说「类型检查:规则等价 63/63;另有 63 条
负例直接喂自举驱动,全部非零退出且无假阳性」——63 条负例范围内为真,下面这个形状不在那 63 条里

cmd:
# 把仓库里那个局部改回 fn(其余不动),走自举链
sed 's/fname/fn/g' loment/tools/lomc.lomt > lomc_fn.lomt
sh loment/bootstrap.sh lomc_fn.lomt > /dev/null; echo "exit=$?"
# 最小对照:单独一个单元,同样写法
printf 'module b7\nfn f() -> u32 {\n    let fn: u64 = 1;\n    return fn as u32;\n}\n' > b7.lomt
sh loment/bootstrap.sh b7.lomt | head -1

out:
lomc_fn.lomt:fujoc-s: 静态检查未通过 / E2 @… line …: fn …(一串 E002 连锁)  exit=1
b7.lomt    :正常发射 IR,与参考实现**逐字节一致**、零诊断

expect:
这条要写清形状再决定写不写进边界 —— **它不是「关键字当标识符被误拒」**(最小单元证明那个说法
不成立),而是**某个规模相关的表/游标**被这个 token 触发:同一个 `let fn`,放进 357 个 let /
108 个 fn 的 lomc.lomt 就炸,放进单函数单元就没事;把变量改名即通过。已知边界(或自举页的
「还差什么」)应据实记这一条,根因定位后再升级为「已修」。
(我最初把它误诊成「关键字假阳性」并写进了仓库文档与 v0.1.4-alpha 的 tag 消息,已在
docs/150 留更正框、单独提交订正 c47c970。录入时请按订正后的说法。)

env:
Windows 11 + WSL2;clang 22.1.8;仓库 Fujoos-FujoLang-DEV @ c47c970
语言 官方 已修 2026-09-14
官方 / 非官方 —— 这是这块板子上最重要的一栏。非官方 = 别人报上来的,原样收录,我们没有复现过;它是一条声明,不是我们的结论。官方 = 我们自己复现过、或明确判定过的。垃圾进不来,靠的不是事后删帖,而是这一栏始终在行上。
待确认 / 未修 —— 收到了,还没读完 / 读过了,确实复现得出来,还没改。这两个是唯一不要求写处理的——事情还没结案。非官方条目只能是待确认:别人一条没验过的声明,我们无从替它下结论。
已修 —— 改完了,并写明在哪个版本。改了哪一处也会同时改文档——这个站不留下对不上的说法。
重复 / 无效 / 不予处理 —— 三种关闭方式,都要写理由:已经有人报过、报告本身不成立、或者我们决定不做。关闭不等于不认。