新的系统编程语言 Hare 发布,比 C 语言更简单

3,072 阅读3分钟

背景

开发者 Drew DeVault 公布了一门新的系统编程语言 Hare (野兔)。Hare是一种设计简单、稳定和健壮的系统编程语言。其使用静态类型系统、手动内存管理和最小的运行时。非常适合于编写操作系统、系统工具、编译器、网络软件和其他低级别、高性能的任务,其开发时间历经两年半。

据 Drew DeVault 介绍,Hare 与 C 最相似,几乎所有用 C 语言编写的程序也可以用 Hare 编写,但 Hare 比 C 简单

demo

举个例子:使用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()!;
};

介绍

5月4日19:00将在阿姆斯特丹的Techinc主持一场关于Hare的演讲,直播地址如下: spacepub.space/w/6hWXUmeAB…

Hare与C语言最相似,几乎所有用C语言编写的程序都可以用Hare语言编写。但是,Hare比C简单。
其设计原则是:

  • 相信程序员。
  • 提供程序员在不信任自己时可能使用的工具。
  • 比起内隐行为,更喜欢外显行为。
  • 一个好的程序必须既正确又简单。

Hare的引导

引导Hare过程要简单得多。Hare基于qbe编译器后端,它在占用空间小的情况下提供了良好的性能。

标准组件

Hare 标准库包含以下标准组件,该库为许多用例提供支持,而无需任何依赖关系。

  • 密码学套件
  • 网络支持
  • 全面的日期/时间操作
  • I/O 和文件系统抽象
  • Unix 原语,如 poll、fnmatch 和 glob
  • POSIX 扩展正则表达式
  • Hare 解析器和类型检查器

标准库是系统编程的一个新起点,它摆脱了POSIX和libc的遗留问题。默认情况下,Hare程序不连接libc。

标准库文档

标准库拥有全面的参考文档:docs.harelang.org/

项目案例

目前已经有许多基于 Hare 编程语言的程序,比如

  • Himitsu :密匙管理和密码存储工具。它将密匙存储为键/值对,且允许存储附加信息,例如用户名、主机和协议。视频地址:mirror.drewdevault.com/himitsu.web…
  • Helios :x86_64 系统的微内核,将来会支持其他架构。目前它可以引导到长模式,有几个串行驱动程序,并设置分页。image.png
  • box :简单的 CLI 加密工具

OpenGl的支持

Hare 的 OpenGL 绑定正在进行中,目前可用于几个小游戏,比如

  • 俄罗斯方块: 视频地址:l.sr.ht/PMwA.webm

  • 一个简单的光线追踪器:

image.png

更多有趣的项目

  • box :简单的 CLI 加密工具
  • btqd :bittorrent 守护进程
  • hare-libui :简单 GUI 的 libui 绑定

Hare 未来

目前 Hare 正在保守开发中,标准库最大的任务是完成密码学实现,首要目标是支持 TLS (安全传输层协议)1.2 和 TLS 1.3。一旦达到 1.0 版本,Hare 将完成语言规范,冻结语言设计,且只对标准库进行向后兼容的更改。

此外,目前 Hare 仅支持三种架构:x86_64、aarch64 和 riscv64,未来将逐步添加 32 位平台和其他架构的支持。操作系统方面,目前 Hare 只支持 Linux 和 FreeBSD,计划在未来做更多的移植。

如果需要,第三方实现或分支可以轻松开发 Windows 或 macOS 支持。

更多信息请查看:harelang.org/blog/2022-0…