Blaise: 一种现代、零遗留的 Object Pascal 实现方式

Object Pascal 领域长期以来一直由少数几个重量级选手主导。一方面是 Embarcadero Delphi,一个强大但属于专有且以 Windows 为中心的开发环境。另一方面,Free Pascal (FPC) 和 Lazarus 提供了强大的开源替代方案,尽管它们背负着数十年演进带来的沉重遗留负担。

Blaise 正式进入这一领域,它是一个现代的、自托管的 Object Pascal 编译器。Blaise 并不试图修补现有系统,而是追求“零遗留”的方法,从底层开始重建语言的优势,同时针对 QBE 后端进行优化以实现高效的代码生成。

愿景:没有负担的 Pascal

Blaise 旨在解决 Pascal 生态系统中长期存在的“烦人瑕疵”。对于许多开发者来说,Pascal 的吸引力一直在于其高可读性,以及在没有垃圾回收 (GC) 开销的情况下生成高性能编译代码的能力。然而,实现这一点的现有工具往往让人感觉陈旧。

Blaise 项目的关键目标包括:

  • 消除遗留冗余: 通过从头开始,Blaise 避免了旧编译器为了维持向后兼容性而做出的架构妥协。
  • 现代默认设置: 该项目旨在实现现代标准,例如 UTF-8 字符串和内联变量声明——这是那些厌倦了传统 Pascal 要求在函数开头声明所有变量的开发者的迫切需求。
  • 改进的内存模型: 编译器寻求优化内存模型,使其更加直观,并减少陷入传统 Object Pascal 陷阱的可能性。

技术架构:针对 QBE

Blaise 最具特色的技术选择之一是使用 QBE 后端。虽然 LLVM 是许多现代语言的行业标准,但它常因过于笨重和复杂而受到批评。QBE 则作为一个轻量级的替代方案,在提供更小占用空间和更快编译时间的同时,仍能提供高性能的机器码。

这一选择符合 Blaise 极简主义和高效的整体哲学。通过针对 QBE,Blaise 可以保持精简的引导过程和更易于管理的 codebase,使编译器更易于维护和演进。

社区观点与质疑

与任何新的语言实现一样,Blaise 在开发者社区中引发了一系列反应。一些用户对项目初始开发的速度表示怀疑,一位评论者指出快速的提交历史是一个令人担忧的点。

然而,其他人则指出了作者 Graeme Geldenhuys 的资历。作为 fpGUI 库的创建者——一个自 2010 年以来一直维护的项目——Geldenhuys 被许多人视为在 Free Pascal 生态系统中拥有深厚专业知识的投入型开发者。这种经验为这个寻求从内而外实现语言现代化的项目提供了坚实的基础。

GUI 困境

对于许多人来说,Pascal 的主要吸引力在于其在创建 GUI 应用程序方面的历史优势。一个反复讨论的话题是,像 Blaise 这样“纯粹”的编译器是否能在没有集成 IDE 或 GUI 框架的情况下满足这些用户。虽然 Blaise 目前专注于编译器和语言规范,但社区对于它最终将如何填补应用开发方面的空白仍保持好奇。

与其他生态系统的比较

有趣的是,Blaise 的出现引起了与其他现代系统语言的比较。一位观察者注意到 Mojo 1.0 beta 的巧合,暗示 Pascal 的可读性与性能(无 GC)的结合是一个现代语言正试图再次填补的利基市场。

展望未来

Blaise 代表了一种大胆的尝试,旨在证明如果能剥离遗留约束,Object Pascal 在现代时代仍然具有生命力。通过专注于干净的实现、实现、轻量级后端和现代语言特性,它提供了一个窥见当今“纯粹的 Pascal”体验可能是什么样子的窗口。

它能否获得广泛的关注,取决于它能否超越编译器本身并构建一个支持性的生态系统,但对于那些看重 Pascal 的优雅与精简工具链的高效的人来说,Blaise 是一个值得关注的项目。

Sources