用 MoonBit 合成一个 C 编译器(附仓库地址) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Hooooooey

用 MoonBit 合成一个 C 编译器(附仓库地址)

  •  
  •   Hooooooey 2 月 6 日 1303 次点击
    这是一个创建于 77 天前的主题,其中的信息可能已经有所发展或是发生改变。

    先上仓库地址: https://github.com/moonbit-community/fastcc

    我们设定了一个极具挑战的目标:从零开始构建一个 C 编译器 。

    最初的目的是探索一下 AI 的能力边界,尝试让 AI 在几乎 0 干预的情况下,自己完成一个大型软件项目。

    传统观念认为从零开始构建一个完全符合规范的 C 编译器是一项高难度任务,涉及词法分析、语法解析、语义检查、优化和代码生成等多个复杂环节,需要深厚的编译原理知识和对硬件架构的理解,通常需数月甚至数年才能完成。

    整个过程像一部科幻小说。我戴上耳机,开启语音模式,对 AI 下达指令:“从零构建一个 C 编译器,贴近 tcc ,支持 arm64 架构。”

    之所以选择 tcc 作为示例是因为它是世界上最快的 C 编译器,,编译速度本身对 MoonBit 的开发体验尤为重要。且 Native 后端同时支持 LLVM 和 C ,C 后端如果有自己的编译器的话,可以实现完全自举。而且 tcc 不安全,缺乏维护,有优化替代空间。为了快速验证,我们只让 AI 支持 arm64 架构。

    在第七天的时候,它就已经实现了自举,这里需要解释下自举,先使用 moon 工具链构建 Fastcc.mbt(项目名称),生成 Fastcc.exe,再用 Fastcc.exe 去编译 Fastcc.mbt 自身代码经过 moon 工具链生成的 C 代码,生成 Fastcc1.exe,最后用 Fastcc1.exe 去执行 Fastcc.mbt 本身的测试,验证正确性。也能够编译 tcc 的源码,我们使用 v.c( vlang 编译器的单个 c 文件 snapshot )用以测试编译性能,当时和 tcc 的 gap 是 60x (也就是说 Fastcc.mbt 比 tcc 慢 60x )。

    一直到第十天,我几乎很少使用键盘。Agent 自主分解任务:先设计 AST (抽象语法树),生成基础模块;再用多 Pass 方案优化性能,而非照搬 tcc 的单 Pass 结构尽管提示词要求“贴近 tcc”,但 AI 选择了更可靠的路径。

    每天工作的间隙,我会抽空看看 AI 的进度,偶尔需要做一些纠偏和指示:AI 自主使用 lldb 调试定位 Bug ,在指示下调用 Xcode 命令行工具做性能分析,自己写脚本识别热点代码并针对性优化。第七天,惊喜发生编译器成功自举:先用 MoonBit 工具链生成 Fastcc.exe ,再用它编译自身代码,验证通过测试。

    整个过程中,AI 像一个不知疲倦的优秀程序员团队,在 MoonBit 的生态里流畅运作。最终,10 天,3.5 万行代码由 Agent 生成,可读性极高。-能够实现 tcc 、quickjs 、sqlite 并通过对应项目的测试,编译速度是 clang -O0 的 4 倍

    值得一提的是这并非偶然,而是 MoonBit 软件工厂工具链及语言设计产生的确定性结果。

    其他「 MoonBit AI 软件工厂」公开展示的示例:

    2 条回复    2026-02-06 18:24:24 +08:00
    Gilfoyle26
        1
    Gilfoyle26  
       2 月 6 日
    怎么让 ai 一直工作?
    Hooooooey
        2
    Hooooooey  
    OP
      2 月 6 日
    @Gilfoyle26 主要是把工程流程搭好,目标和反馈都很清楚。

    只要每一步都能验证(能跑、能测),AI 自然就能一直往下走,人只在卡住的时候介入一下。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2829 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 47ms UTC 14:52 PVG 22:52 LAX 07:52 JFK 10:52
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86