Blaise: 一種現代化、零遺留問題的 Object Pascal 方法
Object Pascal 的領域長期以來一直由少數幾個重量級工具主導。一方面是 Embarcadero Delphi,一個功能強大但屬於專有軟體且以 Windows 為中心的環境。另一方面,Free Pascal (FPC) 和 Lazarus 提供了一個強大的開源替代方案,儘管它們承載了數十年演進過程中的大量遺留負擔。
Blaise 正式進入這個領域,這是一個現代化、自我託管(self-hosting)的 Object Pascal 編譯器。Blaise 並非試圖修補現有系統,而是追求「零遺留」的方法,從底層重新構建語言的優勢,同時以 QBE 作為後端以實現高效的程式碼生成。
The Vision: Pascal Without the Baggage
Blaise 的設計旨在解決 Pascal 生態系統中長期存在的「惱人瑕疵」。對於許多開發者來說,Pascal 的吸引力一直在於其高可讀性,以及在沒有垃圾回收(GC)開銷的情況下生成高效能編譯程式碼的能力。然而,可用於實現這一點的工具往往讓人感覺過時。
Blaise 專案的關鍵目標包括:
- 消除遺留雜物: 通過從頭開始,Blaise 避免了舊編譯器為了維持向後相容性而做出的架構妥協。
- 現代化預設值: 該專案旨在實施現代標準,例如 UTF-8 字串和內聯變數宣告(inline variable declarations)——這是許多厭倦了傳統 Pascal 要求在函數開頭宣告所有變數的開發者所高度要求的特性。
- 改進記憶體模型: 編譯器尋求精煉記憶體模型,使其更加直觀,且不易掉入傳統 Object Pascal 的陷阱。
Technical Architecture: Targeting QBE
Blaise 最具特色的技術選擇之一是使用 QBE 後端。雖然 LLVM 是許多現代語言的業界標準,但它常因過於笨重且複雜而受到批評。QBE 作為一種輕量級的替代方案,在提供較小佔用空間和更快的編譯時間的同時,仍能提供高效能的機器碼。
這一選擇符合 Blaise 極簡主義和效率的整體哲學。通過瞄準 QBE,Blaise 可以維持精簡的引導程序(bootstrap process)和更易於管理的程式碼庫,使編譯器更容易維護和演進。
Community Perspectives and Skepticism
與任何新語言實作一樣,Blaise 在開發者社群中引起了各種反應。一些用戶對專案初始開發的速度表示懷疑,有一位評論者指出快速的提交記錄(commit history)是一個令人擔憂的點。
然而,其他人則指向了作者 Graeme Geldenhuys 的資歷。作為 fpGUI 函式庫的創作者——一個自 2010 年以來就持續維護的專案——Geldenhuys 被許多人視為在 Free Pascal 生態系統中擁有深厚專業知識的投入開發者。這種經驗為一個尋求從內部向外實現語言現代化的專案提供了強大的基礎。
The GUI Dilemma
對於許多人來說,Pascal 的主要吸引力在於其在創建 GUI 應用程式方面的歷史優勢。一個反覆出現的討論點是,像 Blaise 這樣一個「純粹」的編譯器在沒有整合的 IDE 或 GUI 框架的情況下,是否能滿足這些用戶。雖然 Blaise 專注於編譯器和語言規範,但社群對它最終將如何填補應用程式開發之間的差距仍感到好奇。
Comparison with Other Ecosystems
有趣的是,Blaise 的出現引起了與其他現代系統語言的比較。一位觀察者指出 Mojo 1.0 beta 的巧合,暗示 Pascal 的可讀性與效能(無 GC)的結合是一個現代語言正再次嘗試填補的利基市場。
Looking Ahead
Blaise 代表了一種大膽的嘗試,旨在證明如果能剝離其遺留限制,Object Pascal 仍然在現代時代具有相關性。通過專注於簡潔的實作、輕量級的後端和現代語言特性,它提供了一個窺視現代「純粹 Pascal」體驗的可能。
它是否能獲得廣泛的關注,取決於其超越編譯器並建立支持生態系統的能力,但對於那些重視 Pascal 的優雅與精簡工具鏈的效率的人來說,Blaise 是一個值得關注的專案。