作者记录了自己第四次参加 PLDI 会议的旅程。文章以日记形式详细描述了在博尔德期间与众多研究者、开发者的交流,包括关于 e-graphs、Knuth-Bendix 算法、寄存器分配、Datalog 等多种技术话题的深入讨论。作者还参与了多项活动,如 BYOEG 教程和与 Yannis Smaragdakis 合作用 Datalog 实现线性扫描寄存器分配,以及跟随 Slava Pestov 学习 Knuth-Bendix 补全算法的实现。文章不仅展现了技术会议的学术交流氛围,也记录了因编程语言(Ruby)切片语义导致的调试趣事。
#compiler
30 条相关内容
crustc 是一个将 Rust 编译器 rustc 的整个代码库翻译为 C 语言的开源项目。该项目旨在通过将 Rust 编译器自身编译为 C 代码,探索编译器自举和跨语言移植的可能性。其核心目标是让 Rust 编译器能够在没有 Rust 工具链的环境中运行,从而降低 Rust 的部署门槛并拓展其生态兼容性。
LLVM编译器基础设施
3.0LLVM(低级虚拟机)是一个模块化、可重用的编译器基础设施项目,旨在支持各种编程语言的编译、优化和代码生成。它提供了一套中间表示(IR)和工具链,使开发者能够构建高效、灵活的编译器前端和后端。LLVM的模块化设计使其广泛应用于学术界和工业界,成为现代编译器开发的重要基础。
Zig 语言开发日志宣布,所有包管理功能已从编译器迁移至构建系统。这一架构变更旨在简化编译器核心,并将包管理职责交由构建系统统一处理,从而提升模块化程度与维护效率。
本文是 Tiny-C 编程语言的参考手册摘录,介绍了这种极简 C 语言变体的语法、数据类型和控制结构。Tiny-C 专为资源受限系统设计,移除了标准 C 中的复杂特性(如指针和动态内存分配),同时保留了核心功能。该手册为开发者和学习者提供了简洁的指令集参考,适用于嵌入式或教学场景。
Zig 语言在 2026 年 6 月 30 日的开发日志中宣布,所有包管理功能已从编译器移入构建系统。此举旨在精简编译器核心,将包解析、依赖管理和版本控制等任务交由构建系统统一处理,从而提升模块化程度和开发灵活性。
这是一个 TypeScript 编译器图(TS Compiler Graph)MCP 工具,可大幅减少在 Claude Code 和 Codex 中处理 TypeScript 项目时的 token 消耗。通过将编译器内部图结构作为 MCP 资源暴露,它能使代码理解和操作更加高效,token 使用量降低至原来的十分之一。
Zig 语言开发日志宣布,所有包管理功能已从编译器核心迁移至构建系统。这一架构调整将包解析、依赖管理等功能从编译器中分离,使构建系统具备更独立的包管理能力,同时简化编译器自身的职责边界,提升整体项目的模块化和可维护性。
本文探讨了程序员在遇到代码错误时,常常倾向于将责任归咎于编译器而非自身代码的心理现象。作者通过具体案例分析了编译器优化、未定义行为以及开发者对底层机制理解不足等问题,揭示了这种思维误区背后的技术原因。文章旨在帮助开发者更理性地排查错误,提升对编译器行为的认知。
本研究对LLVM优化管道进行了多维度的逐遍实证分析,系统评估了各优化遍在代码大小、执行时间和编译时间等多个指标上的独立与交互影响。通过大规模实验,揭示了优化遍之间复杂的相互依赖关系及其对最终代码性能的实际贡献,为编译器优化管道的调优提供了数据驱动的见解。
Zig 语言在 2026 年开发日志中宣布,所有包管理功能已从编译器迁移至构建系统。这一架构调整旨在简化编译器核心、提升构建系统的灵活性和可维护性,使包管理更加模块化且易于扩展。开发者现在可以通过构建系统完全控制依赖管理,而无需依赖编译器内置的包处理逻辑。
Ironsmith 是一个针对《万智牌》卡牌文本的完整语法系统、解析器和编译器。它能够解析卡牌上的规则文本,并生成结构化的语法树,为卡牌游戏引擎、牌组构建工具或规则分析等应用提供基础支持。该项目致力于精确处理万智牌复杂多变的卡牌文本格式。
Red编程语言宣布新增静态链接支持,允许开发者将Red程序及其所有依赖库静态链接到单个可执行文件中,从而简化部署流程并提升跨平台兼容性。这一特性避免了运行时动态链接库的依赖问题,使应用程序能够更独立地在不同操作系统上运行。
AiCompiler 是一种编程语言,其核心理念是将大语言模型(LLM)视为中央处理器(CPU)。这意味着代码的执行不再依赖于传统的硬件指令集,而是由 LLM 直接理解和运行程序逻辑,为 AI 原生编程提供了全新的范式。
Unobin 是一种面向基础设施即代码(IaC)的语言和编译器。IaC 源码被编写并编译成一个名为 factory 的二进制文件,其中包含运行时及所有依赖。运行时只需传递一个名为 stack file 的配置文件(仅包含配置,不含任意代码)来定义后端状态和输入。Factory 还可以在浏览器中显示 UI 展示进度。
Sasso是一个纯Rust实现的SCSS到CSS编译器(dart-sass的替代方案)。零依赖、兼容WebAssembly,同时提供库(lib)和命令行工具(CLI)两种使用方式。
本文探讨了将 TypeScript 代码编译为原生 C++ 的技术方案与实现原理。这类编译器能将 TypeScript 的类型安全和现代语法特性,转化为高性能的 C++ 代码,从而在保留开发效率的同时获得接近原生的执行速度。文章分析了现有工具(如 TypeScript-to-C++ 编译器)的架构设计、类型映射策略以及运行时优化方法。
本文介绍了 TypeScript 7 在性能方面的重大改进,包括更快的编译速度、更高效的类型检查以及优化的构建流程。通过这些改进,开发者能够显著提升迭代效率,减少等待时间,从而更快速地开发和交付代码。
编译器教育亟待一场革命
3.0当前编译器教育主要传授的是20世纪70年代的技术,如词法分析、语法分析和中间代码生成,却未能让学生掌握现代编译器工程所需的实际技能。文章呼吁编译器教育应该进行一场革命,将重点从传统的教科书方法转向更现代、更实用的方法,例如使用现代工具和框架、采用增量编译和JIT编译等先进技术,并强调实际代码生成和优化的重要性。通过这种方式,学生才能为实际开发中的编译器工作做好充分准备。
Perry 是一款将 TypeScript 代码直接编译为原生图形界面(GUI)和命令行(CLI)应用的编译工具。它摆脱了对 Electron 或其他运行时的依赖,生成的应用程序可直接在操作系统上运行,从而实现更小的体积、更快的启动速度和更低的内存占用。
Slisp 是一个针对 Linux/amd64 架构的轻量级 Lisp 编译器,旨在以简洁的方式将 Lisp 代码编译为可执行文件。该项目提供基础 Lisp 语法支持,适合学习编译器原理或快速构建小型脚本。
GCC 14.4 发布
3.0GCC 14.4 版本已正式发布。该版本包含错误修复、性能改进以及针对多种架构和语言的新特性,进一步提升了编译器的稳定性和兼容性。
SPIR-V 更新
3.0Zig 语言开发日志发布了关于 SPIR-V 后端的最新进展。此次更新涉及对图形和计算着色器的支持改进,以及相关的工具链优化,旨在提升 Zig 在 GPU 编程方面的能力。
本文从形式理论的角度审视MLIR框架中的AI模型编译过程,探讨了如何利用形式化方法提升编译的可靠性和效率。通过对MLIR中间表示的分析,作者揭示了形式理论在优化编译流程、确保模型转换正确性方面的关键作用。该研究为理解和改进AI编译器的设计提供了理论基础。
本文探讨了 Rust 中一种特殊的数据竞争问题——它不会导致编译错误,而是利用类型系统在编译时而非运行时暴露潜在的数据竞争。作者通过深入分析 Rust 的所有权模型和借用检查器,展示了如何通过类型级技术确保并发安全,使某些数据竞争在编译阶段就被杜绝。这种“不编译”的数据竞争实际上体现了 Rust 内存安全设计的精妙之处。
本文介绍了 Zig 编程语言在 SPIR-V 后端开发上的最新进展。SPIR-V 是一种用于 GPU 着色器和计算内核的中间语言,支持 Vulkan 和 OpenCL 等图形与计算 API。Zig 团队正致力于实现对 SPIR-V 的原生编译支持,从而让开发者能够使用 Zig 语言编写高性能的 GPU 代码。
Xi 是一款功能全面的编程语言,能够直接编译为原生二进制和 WASM。其特性包括自托管编译器、C99 后端、内置依赖注入/控制反转、类型化的业务规则功能(如决策表),并已使用它构建了实际应用 eXstream。
Kraid 是专为 Panfrost 开源 GPU 驱动打造的一款全新编译器,旨在提升 Mali GPU 上的图形性能与编译效率。借助更现代的中间表示和优化流水线,Kraid 有望显著改善 Panfrost 驱动的整体表现与稳定性,为开源图形生态注入新活力。
本文介绍了 Zig 语言在 2026 年 6 月 25 日的开发进展,重点包括 BitCast 操作符的语义更新以及 LLVM 后端的多项改进。这些变化旨在提升代码生成的效率与类型转换的安全性,为开发者提供更可靠的底层控制能力。
Zig 语言团队宣布了对 BitCast 语义的更新,以增强类型安全性和代码可预测性。同时,LLVM 后端得到了显著改进,包括更快的编译速度和更优的代码生成,进一步提升了 Zig 作为系统编程语言的性能与可靠性。