新的系統(tǒng)編程語言 Hare 已發(fā)布,對標(biāo) C 語言
開發(fā)者 Drew DeVault 公布了一門新的系統(tǒng)編程語言 Hare (野兔)。Hare 的開發(fā)時間接近兩年半,它使用靜態(tài)類型系統(tǒng)、手動內(nèi)存管理和最小運行時,非常適合編寫操作系統(tǒng)、系統(tǒng)工具、編譯器以及其他低級高性能任務(wù)。
據(jù) 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 現(xiàn)狀
目前已經(jīng)有許多基于 Hare 編程語言的程序,比如:
- Himitsu :密匙管理和密碼存儲工具。它將密匙存儲為鍵/值對,且允許存儲附加信息,例如用戶名、主機和協(xié)議。
- Helios :x86_64 系統(tǒng)的微內(nèi)核。
- box :簡單的 CLI 加密工具
- btqd :bittorrent 守護進程
- hare-libui :簡單 GUI 的 libui 綁定
Hare 的 OpenGL 綁定正在進行中,目前可用于幾個小游戲,比如俄羅斯方塊:
使用 Hare 編寫的簡單光線追蹤器:
Hare 標(biāo)準庫包含以下標(biāo)準組件,該庫為許多用例提供支持,而無需任何依賴關(guān)系。
- 密碼學(xué)套件
- 網(wǎng)絡(luò)支持
- 全面的日期/時間操作
- I/O 和文件系統(tǒng)抽象
- Unix 原語,如 poll、fnmatch 和 glob
- POSIX 擴展正則表達式
- Hare 解析器和類型檢查器
該標(biāo)準庫讓 Hare 脫離了 POSIX 和 libc 的遺留問題,Hare 程序默認不與 libc 鏈接 。
Hare 未來
目前 Hare 正在保守開發(fā)中,標(biāo)準庫最大的任務(wù)是完成密碼學(xué)實現(xiàn),首要目標(biāo)是支持 TLS (安全傳輸層協(xié)議)1.2 和 TLS 1.3。一旦達到 1.0 版本,Hare 將完成語言規(guī)范,凍結(jié)語言設(shè)計,且只對標(biāo)準庫進行向后兼容的更改。
此外,目前 Hare 僅支持三種架構(gòu):x86_64、aarch64 和 riscv64,未來將逐步添加 32 位平臺和其他架構(gòu)的支持。操作系統(tǒng)方面,目前 Hare 只支持 Linux 和 FreeBSD,計劃在未來做更多的移植。
我們無意支持非自由平臺,但由于語言是標(biāo)準化的,如果需要,第三方實現(xiàn)或分支可以輕松開發(fā) Windows 或 macOS 支持。
可以在??路線圖??上查看有關(guān) Hare 計劃的更多信息。