新闻详情

新闻详情

首页 / 资讯中心 / 详情

PostgreSQL 237项测试全过、DOOM也能跑:claudes-c-compiler 真实C工程编译成果清单

发布时间:2026/10/1 18:39:13来源:尧图网络
PostgreSQL 237项测试全过、DOOM也能跑:claudes-c-compiler 真实C工程编译成果清单
PostgreSQL 237项测试全过、DOOM也能跑claudes-c-compiler 真实C工程编译成果清单【免费下载链接】claudes-c-compilerClaude Opus 4.6 wrote a dependency-free C compiler in Rust, with backends targeting x86 (64- and 32-bit), ARM, and RISC-V, capable of compiling a booting Linux kernel.项目地址: https://gitcode.com/gh_mirrors/cl/claudes-c-compilerclaudes-c-compiler简称CCC是一个用 Rust 从零写成的无依赖 C 编译器——它自带汇编器和链接器支持 x86-64、32 位 x86、ARM 与 RISC-V 四种架构能直接编译出可运行的 Linux 内核。它的成色不是靠口号而是靠成果PostgreSQL 237 项回归测试全过、DOOM 游戏跑起来、FFmpeg 7331 项汇编测试全过。下面这份清单带你逐项拆解它到底能扛住哪些真实 C 工程。为什么真实工程测试全过比跑个 Hello World 更值得看很多工具都能编译一段hello world但真正的考验在于它能不能通过大型项目自带的那套测试套件一个编译器只要在某处悄悄算错一个边界值跑printf看不出来跑数据库的回归测试就会立刻现原形。CCC 的底气正在于此。官方状态说明里明确写道The compiler can build real-world C codebases across all four architectures, including the Linux kernel.也就是说它不仅能编译还能让项目自己的测试全部通过。对新手来说这相当于编译器自己把作业写完了并且通过了期末考。完整状态描述见 README.md 的 Status 章节架构总览见 DESIGN_DOC.md。PostgreSQL 237 项回归测试全过数据库级考验数据库是检验 C 编译器的硬骨头类型转换多、结构体嵌套深、指针运算密集还涉及递归和大量内存管理。CCC 的成果记录里有一条很硬核的结论postgres: PASS (x86 backend: all 237 regression tests pass)237 项回归测试全过意味着它编译出来的 PostgreSQL 在功能行为上与原版逐条对齐。这不只是能链接而是每一条 SQL 语义都对得上。值得一提的是CCC 还为 PostgreSQL 做过专门优化。PostgreSQL 的存储过程 plpgsql 有严格的栈深度限制而早期编译出的栈帧比 GCC 大不少会在递归用例上触发stack depth limit exceeded。团队于是实现了三层栈槽分配算法来压缩栈帧相关设计与思路记录在 ideas/reduce_stack_frame_size_for_postgres.txt通用算法说明见 src/backend/stack_layout/README.md。DOOM 都能跑从数据库到复古游戏的跨度如果说 PostgreSQL 考验的是严谨那DOOM考验的就是性能与规模。这款经典游戏的渲染循环如R_DrawColumn里有大量内层循环反复读取、却从不写入的全局变量编译器稍不留神就会把热点循环搞慢。CCC 在这里做了两件漂亮的事循环不变量外提LICM识别出循环里只读不写的全局变量把它们提到循环外避免每帧重复取址。这段逻辑直接写在 src/passes/licm.rs 的注释里点名了 DOOM 的R_DrawColumn。定点数窄化DOOM 大量使用固定点小数的frac16位移CCC 的 narrow 优化把这类加宽—移位—再窄化的冗余指令消掉减少了约 6KB 的文本体积和约 390 条movslq指令。记录见 ideas/high_codegen_runtime_perf.txt。一个能同时跑数据库和跑游戏的编译器说明它的前端语义、代码生成、优化和链接都达到了相当完整的水平。一份能直接替换 GCC的独立工具链CCC 最特别的地方是它不依赖任何外部工具链汇编器、链接器全部自己实现。你不需要额外安装as、ld编译完直接产出 ELF 可执行文件。它还刻意做成了GCC 的即插即用替代品识别常见 GCC 编译选项-O0到-O3、-Os、-Oz、-g、-D、-I、-Werror、-fPIC -shared等对不认识的架构特定选项会静默忽略让make CC... ccc这类构建脚本能直接跑通ccc -dumpmachine/-dumpversion会报告成 GCC 14.2.0 以兼容老构建系统。四个二进制对应四套目标架构cccx86-64、ccc-x86、ccc-armAArch64、ccc-riscvRISC-V 64、ccc-i68632 位 x86。它们来自同一份源码只是运行时按二进制名选择目标这一点在 README.md 的 Usage 表格里有完整说明各架构后端的独立设计见 src/backend/README.md。150 项目成果清单从 FFmpeg 到 QEMU 到 Linux 内核除了上面点名的 PostgreSQL 和 DOOM官方还列出一长串编译并跑通测试的项目。挑几个有代表性的FFmpeg编译全部核心库并生成ffmpeg/ffprobe可执行文件x86-64 与 AArch64 上7331 项 FATE checkasm 汇编测试全过QEMU编译 1806 个源文件并链接成功甚至能在 x86 上启动 Linux 内核、输出串口信息CPython、LuaJIT、musl、TCC主流解释器与 C 运行时均通过GNU coreutils、Busybox、mbedTLS、Redis、libffi系统工具、安全库、缓存数据库全部拿下。完整的通过测试套件名单PostgreSQL、SQLite、QuickJS、zlib、Lua、libsodium、libpng、jq、libjpeg-turbo、libuv、TCC、DOOM 等写在 README.md而一份按x86 / i686 / arm / riscv 四架构逐格标注 PASS/FAIL的超详细清单涵盖 zstd、tcpdump、8cc、QuickJS、FFmpeg、CPython 等上百个项目并附每条修复说明则保存在 ideas/new_projects_myasm.txt精简版状态见 ideas/new_projects.txt。小提示清单里部分项目在 32 位或特定架构上仍标TODO/FAIL这说明它仍在快速成熟——对新手而言这反而是理解一个编译器在完善的真实样本。它是如何把 C 源码变成可执行文件的CCC 的管线是一条从文本到机器码的完整流水线四个阶段各占其位前端src/frontend/预处理器 → 词法分析 → 语法分析 → 语义检查产出带类型的 AST中间表示src/ir/降到目标无关的 SSA IR并做mem2reg寄存器提升优化src/passes/15 个 SSA 优化 pass内联、常量折叠、死代码消除、循环外提等后端src/backend/代码生成 → 逐行窥孔优化 →自带汇编器编码成 ELF 目标文件→自带链接器完成符号解析与重定位产出最终可执行文件。这套全自研的设计正是它能脱离外部工具链、跨四种架构工作的根本原因。新手上手3 条命令编译你的第一个 C 程序CCC 目前主要在 Linux 上运行构建只需 Rust 工具链。最小上手路径如下git clone https://gitcode.com/gh_mirrors/cl/claudes-c-compiler cd claudes-c-compiler cargo build --release # 编译并运行一个简单 C 程序x86-64 ./target/release/ccc -o hello hello.c ./hello构建细节与产物说明见 BUILDING_LINUX.txt依赖定义见 Cargo.toml。想观察编译各阶段耗时还可以设置环境变量CCC_TIME_PHASES打印分阶段计时。已知边界现在它还做不到什么保持诚实是读懂任何成果清单的关键。CCC 官方列出的当前限制包括各-O级别目前走同一套优化管线尚未分层long double在 ARM/RISC-V 上走 binary128 软浮点x86 用 80 位 x87_Complex复数运算、GNU__attribute__、NEON 内联仍有部分边缘用例待完善_Atomic目前按底层类型处理未全程跟踪原子性。这些还能更好的地方恰恰构成了它的路线图——完整的问题与改进提案都开放在 ideas/ 目录里新手可以直接读到作者们如何定位和优化。关键文件导航看懂这份 C 编译器的源码想了解去哪里看项目总览与成果状态README.md、DESIGN_DOC.md完整项目测试清单ideas/new_projects_myasm.txtPostgreSQL 栈帧优化ideas/reduce_stack_frame_size_for_postgres.txtDOOM 渲染 / 定点数优化ideas/high_codegen_runtime_perf.txt、src/passes/licm.rs编译性能剖析ideas/high_compile_speed_improvements.txt后端 / 汇编器 / 链接器设计src/backend/README.md从 PostgreSQL 的 237 项回归测试到 DOOM 的渲染循环再到 FFmpeg 的 7331 项汇编测试——claudes-c-compiler 用一份真实工程成果清单证明了一个从零写成的无依赖 C 编译器不仅能跑玩具代码也能扛住生产级的 C 工程。对想理解编译器、或想找一个GCC 替代方案来折腾的人来说它是一份难得的活教材。【免费下载链接】claudes-c-compilerClaude Opus 4.6 wrote a dependency-free C compiler in Rust, with backends targeting x86 (64- and 32-bit), ARM, and RISC-V, capable of compiling a booting Linux kernel.项目地址: https://gitcode.com/gh_mirrors/cl/claudes-c-compiler创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

LLM Agent实战:用回形针思想实验剖析奖励函数与AI安全对齐 2026/10/1 20:17:53

LLM Agent实战:用回形针思想实验剖析奖励函数与AI安全对齐

最近我把“paperclip”(回形针)这个词丢进了一个技术实验里,结果收获远比想象中大。你可能在物理课上听过那句经典提问——为什么不能用一枚回形针的价钱把人造卫星送上太空,也可能在AI安全讨论里看到过“回形针最大化工”这个思想…

阅读更多 →
万集科技与中国人寿宣讲会:技术岗与业务岗的求职攻略 2026/10/1 20:17:47

万集科技与中国人寿宣讲会:技术岗与业务岗的求职攻略

1. 宣讲会前,先把这两家企业的底牌摸清楚10月24日这场宣讲会,来的两家单位放在一起看挺有意思。万集科技是典型的硬科技赛道选手,做智能交通、激光雷达、ETC设备起家;中国人寿北京分公司则是金融保险领域的头部机构。一个偏技术研…

阅读更多 →
OpenClaw多agent数字分身接入飞书:TaoToken统一Key配置与验证 2026/10/1 20:17:47

OpenClaw多agent数字分身接入飞书:TaoToken统一Key配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
九坤量化开源IQuest-Coder-V1:代码大模型“流式”训练实战拆解与TaoToken接入 2026/10/1 20:17:46

九坤量化开源IQuest-Coder-V1:代码大模型“流式”训练实战拆解与TaoToken接入

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
6个神级Skill,让Agent原地开挂:字幕变动画、图片变3D、长内容变知识库|TaoToken统一Key实战 2026/10/1 20:17:46

6个神级Skill,让Agent原地开挂:字幕变动画、图片变3D、长内容变知识库|TaoToken统一Key实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
从float到inf:技术科普如何用推演链传递思考能力 2026/10/1 20:17:46

从float到inf:技术科普如何用推演链传递思考能力

半夜两点四十分,我本来已经关掉电脑准备睡觉。屏幕突然亮了一下,是推荐流里弹出一条视频:“为什么float(1e308)在Python里会变成inf?这个细节我查了一下午”。 说实话,这种标题我平时根本不会点——太像技术营销号的标…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉