新的系統編程語言 Hare 已發布,對標 C 語言
開發者 Drew DeVault 公布了一門新的系統編程語言 Hare (野兔)。Hare 的開發時間接近兩年半,它使用靜態類型系統、手動內存管理和最小運行時,非常適合編寫操作系統、系統工具、編譯器以及其他低級高性能任務。
據 Drew DeVault 介紹,Hare 與 C 最相似,幾乎所有用 C 語言編寫的程序也可以用 Hare 編寫,但 Hare 比 C 簡單。
Hare 的 Hello World
use fmt;
export fn main() void = {
const greetings = [
"Hello, world!",
"?Hola Mundo!",
"Γει? σου Κ?σμε!",
"Привет, мир!",
"こんにちは世界!",
];
for (let i = 0z; i < len(greetings); i += 1) {
fmt::println(greetings[i])!;
};
};
Hare 計算自己的 SHA-256 哈希:
use crypto::sha256;
use encoding::hex;
use fmt;
use hash;
use io;
use os;
export fn main() void = {
const hash = sha256::sha256();
const file = os::open("main.ha")!;
defer io::close(file);
io::copy(&hash, file)!;
let sum: [sha256::SIZE]u8 = [0...];
hash::sum(&hash, sum);
hex::encode(os::stdout, sum)!;
fmt::println()!;
};
Hare 基于 qbe 編譯器后端,在占用空間小的情況下提供了良好的性能。
Hare 現狀
目前已經有許多基于 Hare 編程語言的程序,比如:
- Himitsu :密匙管理和密碼存儲工具。它將密匙存儲為鍵/值對,且允許存儲附加信息,例如用戶名、主機和協議。
- Helios :x86_64 系統的微內核。
- box :簡單的 CLI 加密工具
- btqd :bittorrent 守護進程
- hare-libui :簡單 GUI 的 libui 綁定
Hare 的 OpenGL 綁定正在進行中,目前可用于幾個小游戲,比如俄羅斯方塊:
使用 Hare 編寫的簡單光線追蹤器:
Hare 標準庫包含以下標準組件,該庫為許多用例提供支持,而無需任何依賴關系。
- 密碼學套件
- 網絡支持
- 全面的日期/時間操作
- I/O 和文件系統抽象
- Unix 原語,如 poll、fnmatch 和 glob
- POSIX 擴展正則表達式
- Hare 解析器和類型檢查器
該標準庫讓 Hare 脫離了 POSIX 和 libc 的遺留問題,Hare 程序默認不與 libc 鏈接 。
Hare 未來
目前 Hare 正在保守開發中,標準庫最大的任務是完成密碼學實現,首要目標是支持 TLS (安全傳輸層協議)1.2 和 TLS 1.3。一旦達到 1.0 版本,Hare 將完成語言規范,凍結語言設計,且只對標準庫進行向后兼容的更改。
此外,目前 Hare 僅支持三種架構:x86_64、aarch64 和 riscv64,未來將逐步添加 32 位平臺和其他架構的支持。操作系統方面,目前 Hare 只支持 Linux 和 FreeBSD,計劃在未來做更多的移植。
我們無意支持非自由平臺,但由于語言是標準化的,如果需要,第三方實現或分支可以輕松開發 Windows 或 macOS 支持。
可以在??路線圖??上查看有關 Hare 計劃的更多信息。