天天看點

挑戰50歲程式設計語言霸主C:新語言Hare,“異端”中的保守派

編譯|核子可樂、燕珊

Hare 原意為野兔,它的開發者希望這種程式設計語言能夠如野兔般擁有頑強的生命力。

本周,軟體開發者 Drew DeVault 公布了一種名為 Hare 的全新系統程式設計語言,并用“簡單、穩定和健壯”作為核心形容詞。那它有什麼特别的嗎?這回可能還真有。

世界上先後湧現 300 多種程式設計語言,而 Hare 偏偏把矛頭指向了最強大的那個——C 語言。沒錯,Hare 的目标就是取代過去 50 年來最重要的程式設計語言。

挑戰50歲程式設計語言霸主C:新語言Hare,“異端”中的保守派

Hare 的價值主張

DeVault 和大約 30 名項目貢獻者已經在 Hare 身上投入了兩年半時間。如今成果終于出爐,Hare 面向開發者正式開放。

DeVault 在一篇博文中介紹道,“Hare 跟 C 其實特别想像,幾乎一切用 C 編寫的程式都能用 Hare 寫出來。但重要的是,Hare 比 C 更簡單。

Hare 的設計原則是:

信任程式員。

如果程式員不敢信任自己,則提供輔助工具。

傾向認為顯式行為比隐式行為好。

認為好的程式必須既正确、又簡單。

DeVault 解釋稱,“Hare 使用靜态類型系統、手動記憶體管理和最小運作時,是以特别适合編寫作業系統、系統工具、編譯器、網絡軟體以及其他低級高性能任務。”

在接受 The Register 的采訪中,DeVault 也坦言 Hare 的很多設計靈感都源自 C 語言。

DeVault 強調,跟大部分其他語言設計者不同,他們對 C 其實非常認同。Hare 隻是想對 C 中的基本設計理念做出一些保守的改進,也可以說是在經曆了多年的實踐應用後、重新探索 C 語言能不能做得更好。

充足的“電池”儲備

DeVault 還透露,Hare 的标準庫還融合了谷歌 Go 語言的思想,特别是内置豐富多樣的标準庫——即各種“電池”(程式設計術語)——盡量避免再額外導入外部依賴項。

在他看來,“Hare 在設計上強調提供豐富的‘電池’以支援各類用例,幫助程式員擺脫複雜的外部依賴項,将開發項目保持在良好的可管理範圍之内。我認為 Go 語言在這方面就做得很好;實際上,Hare 也有相當一部分子產品(特别是加密子產品)多少受到了 Go 語言的啟發。”

Hare 的“電池”儲備包括:

加密套件;

網絡支援;

日期 / 時間操作;

I/O 與檔案系統抽象;

Unix 原語,例如 poll、fnmatch 和 glob;

POSIX 擴充正規表達式;

解析器與類型檢查器。

标準庫是系統程式設計發展中的一個新起點,也标志着開發者正式擺脫了 POSIX 和 libc 的遺留問題。Hare 預設不接入 libc C 語言标準庫,而是基于 qbe 編譯器後端。是以,Hare 中的“Hello, world!”程式如下所示:

Hare 其實相當保守?

據稱 Hare 也可以說是 Zig 的精簡版。Zig 是一種包含手動記憶體管理功能的低級系統語言,隻是同樣作為 C 語言的替代方案,Zig 在人氣上遠遠不如另一位競争對手 Rust。

再換個角度,DeVault 還想把 Hare 塑造成一種有效的“避坑版”C 語言。

“我覺得很多想跟 C 競争的新語言都走錯了方向。Hare 其實是一種相當保守的語言,核心思路就是把過去 30 年間 C 語言的程式設計經驗提煉成一種小巧、簡單而又強大的新語言,在後面的 30 年裡繼續服務好開發者。我不太關心什麼大膽創新,隻求對既有功能做出精心設計。”

目前 Hare 語言仍在開發當中,現階段目标就是打造出可以穩定執行、包含标準庫增強功能(如 TLS 和原始 IP 套接字支援)的 1.0 版本。

DeVault 指出,“我覺得在項目早期,大部分工作主要集中在語言本身。但現在已經初見成果,指令行工具、cron 等守護程式和 init 系統管理程序等均已就緒。”

DeVault 還表示,他正在使用 Hare 編寫密鑰管理器(Himitsu)和一套核心(Helios)——這些都是 Hare 語言最擅長的應用方向。

Himitsu 能将密鑰存儲為鍵 / 值對,使用者可以為各個鍵 / 值對添加附加資訊,例如使用者名、主機和協定等。Himitsu 還能相容各種“代理”,例如存儲 SSH 私鑰并充當 SSH 代理。

Helios 是一款面向 x86_64 架構的微核心,如果一切順利,它未來還将支援其他架構(團隊已經完成了 RISC-V 版本的開發)。目前它的功能還比較基礎,比如啟動為 Long Mode 模式、提供幾個串行驅動程式、設定分頁等。“雖然還有很多工作要做,但這确實是個不錯的項目,能夠展示出 Hare 在低級任務中的強大能力。”

挑戰50歲程式設計語言霸主C:新語言Hare,“異端”中的保守派

“我認為在獲得 TLS 的支援之後,還會有更廣泛的用例可供大家探索。”DeVault 說道。

Hare 目前仍然依賴 BDFL(Benevolent Dictator For Life,終身仁慈獨裁者)開源治理模式。DeVault 指出,“Hare 語言高度強調穩定與不變特性,是以需要的治理資源應該不會太多”,目前的項目籌款主要用于支付密碼系統實作所需的第三方審計費用。

Hare 的未來計劃

對于 Hare 的開發思路,DeVault 提到,“我們一直是比較保守的。我們希望 Hare 能在開發者的項目中穩定起效,又不會占用太多的語言學習時間。在即将推出的 1.0 版本中,我們将完成規範、确定語言設計,而且隻對标準庫做出向下相容方面的變更。”

此外,DeVault 還有其他計劃。目前,Hare 隻支援三種指令集架構:x86_64、aarch64 以及 risc-v64。“我們希望能進一步擴充,增加 32 位平台和更多其他架構。目前能夠支援的作業系統也隻有 Linux 和 FreeBSD,後續會推進更多移植。暫時沒有登陸非自由系統平台的計劃,但考慮到 Hare 本身屬于标準化語言,是以也可以在必要時通過第三方實作或者 fork 開發出 Windows 或 MacOS 版本。”

在标準庫方面,DeVault 等人目前最主要的任務就是完成加密實作,目标是支援 TLS 1.2 和 1.3。

“我們為此付出了很多,為它的順利誕生而驕傲,也希望能有更多朋友使用它、喜愛它。”DeVault 總結道。

感興趣的讀者可以在下方連結了解 Hare:

安裝流程:https://harelang.org/installation/

使用教程:https://harelang.org/tutorials/introduction/

參考連結:

https://www.theregister.com/2022/04/26/hare_c_software/

https://harelang.org/blog/2022-04-25-announcing-hare/

繼續閱讀