開発者のDrewDeVaultは、新しいシステムプログラミング言語であるHareを発表しました。2年半近く開発されているHareは、静的型システム、手動メモリ管理、および最小限のランタイムを使用しているため、オペレーティングシステム、システムツール、コンパイラ、およびその他の低レベルの高レベルの書き込みに最適です。パフォーマンスタスク。
Drew DeVaultによると、 HareはCに最もよく似ており、Cで記述されたほとんどすべてのプログラムはHareでも記述できますが、HareはCよりも単純です。
うさぎのハローワールド
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プログラミング言語に基づくプログラムはすでにたくさんあります。
- 氷光 :鍵管理とパスワード保存ツール。キーをキー/値のペアとして保存し、ユーザー名、ホスト、プロトコルなどの追加情報を保存できるようにします。
- Helios :x86_64システム用のマイクロカーネル。
- ボックス :シンプルなCLI暗号化ツール
- btqd :bittorrentデーモン
- hare-libui : シンプルなGUI用の libui バインディング
HareのOpenGLバインディングは現在作業中であり、現在Tetrisなどのいくつかの小さなゲームで利用できます。
うさぎで書かれたシンプルなレイトレーサー:
Hare標準ライブラリには、依存関係のない多くのユースケースをサポートする次の標準コンポーネントが含まれています。
- 暗号スイート
- ネットワークサポート
- 包括的な日付/時刻操作
- I/Oとファイルシステムの抽象化
- poll、fnmatch、globなどのUnixプリミティブ
- POSIX拡張正規表現
- ヘアパーサーとタイプチェッカー
標準ライブラリは、HareをPOSIXおよびlibcのレガシーから解放し、Hareプログラムはデフォルトでlibcにリンクされていません。
うさぎの未来
Hareは現在保守的な開発を行っています。標準ライブラリの最大のタスクは、暗号化の実装を完了することです。主な目標は、TLS(Transport Layer Security)1.2およびTLS1.3をサポートすることです。バージョン1.0になると、Hareは言語仕様を完成させ、言語設計をフリーズし、標準ライブラリに下位互換性のある変更のみを行います。
さらに、Hareは現在x86_64、aarch64、riscv64の3つのアーキテクチャのみをサポートしており、32ビットプラットフォームやその他のアーキテクチャのサポートは将来徐々に追加される予定です。オペレーティングシステムに関しては、Hareは現在 LinuxとFreeBSDのみをサポートしており、将来的にはさらに多くの移植を行う予定です。
フリーでないプラットフォームをサポートするつもりはありませんが、言語が標準化されているため、サードパーティの実装またはフォークは、必要に応じてWindowsまたはmacOSのサポートを簡単に開発できます。
Hareの計画の詳細については、ロードマップを参照してください。