写点什么

挑战 50 年霸主 C 语言:新语言 Hare,“异端”中的保守派

  • 2022 年 4 月 28 日
  • 本文字数:2235 字

    阅读完需:约 7 分钟

挑战50年霸主C语言:新语言Hare,“异端”中的保守派

Hare 原意为野兔,它的开发者希望这种编程语言能够如野兔般拥有顽强的生命力。


本周,软件开发者 Drew DeVault 公布了一种名为 Hare 的全新系统编程语言,并用“简单、稳定和健壮”作为核心形容词。那它有什么特别的吗?这回可能还真有。


世界上先后涌现 300 多种编程语言,而 Hare 偏偏把矛头指向了最强大的那个——C 语言。没错,Hare 的目标就是取代过去 50 年来最重要的编程语言。


Hare 的价值主张

DeVault 和大约 30 名项目贡献者已经在 Hare 身上投入了两年半时间。如今成果终于出炉,Hare 面向开发者正式开放。


DeVault 在一篇博文中介绍道,“Hare 跟 C 其实特别想像,几乎一切用 C 编写的程序都能用 Hare 写出来。但重要的是,Hare 比 C 更简单。


Hare 的设计原则是:


  1. 信任程序员。

  2. 如果程序员不敢信任自己,则提供辅助工具。

  3. 倾向认为显式行为比隐式行为好。

  4. 认为好的程序必须既正确、又简单。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!”程序如下所示:


use fmt;export fn main() void = {        fmt::println("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 在低级任务中的强大能力。”



“我认为在获得 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/

2022 年 4 月 28 日 16:451
用户头像
罗燕珊 InfoQ中文站编辑

发布了 239 篇内容, 共 96.8 次阅读, 收获喜欢 466 次。

关注

评论

发布
暂无评论
发现更多内容

必读!如何有效的进行沟通

观测观测

Linux之wc命令

入门小站

Linux

2022年保障企业内网安全就用行云管家!免费试用!

行云管家

云计算 云平台 内网 云管平台

第三方测评:GaussDB(for Redis)稳定性与扩容表现

华为云开发者社区

redis 华为云 GaussDB(for Redis) NoSQL数据库 云原生NoSQL数据库

恒源云(GPUSHARE)_AdderSR: Towards Energy Efficient Image Super-Resolution学习笔记

恒源云

人工智能 深度学习 计算机视觉

【TcaplusDB知识库】[List表]扫描数据接口说明

数据人er

【TcaplusDB知识库】[List表]替换列表指定位置数据接口说明

数据人er

携程DBA负责人俞榕刚:OceanBase在携程的落地和实践

OceanBase 数据库

数据库 分布式 OceanBase 开源 携程 客户实践

用 docker 快速搭建 kafka(qbit)

qbit

kafka zookeeper docker image

☕【Java深层系列】「并发编程系列」让我们一起探索一下CompletionService的技术原理和使用指南

浩宇天尚

Java 线程池 CompletionService 异步执行 1月日更

“以终为始”的正确使用方式

石云升

思维模型 1月月更

“在线设计”网络资源管理的源头活水

鲸品堂

通信运营商 在线设计平台

高并发环境下,6个构建缓存服务需要注意的问题

华为云开发者社区

缓存 高并发 开发 并发 缓存服务

手把手教你丨小熊派移植华为 LiteOS-M

华为云开发者社区

华为 鸿蒙 LiteOS 小熊派 移植

【TcaplusDB知识库】[List表]删除列表指定位置数据接口说明

数据人er

Flutter启动流程分析之插件化升级探索

得物技术

flutter Weex Google 框架 原生

鉴释加入龙蜥社区,助力开源生态建设

OpenAnolis小助手

Linux 开源

异步调用如何使用是最好的方式?

CRMEB

在线YAML转TOML工具

入门小站

工具

恒源云(GPUSHARE)_attention decoder效果不佳时如何应对

恒源云

深度学习 计算机视觉

一款基于Java语言开发的,开源商业应用的模块化开发框架和智能管理平台-Axelor

CITEC赛伯尔

Java 系统开发 BPM 开发框架 智能管理

前端工程师 2022 年必备的 7 个工具

开源之巅

JavaScript node.js

企业上云后,不容忽视的管理工具-云管平台

行云管家

云计算 企业上云 云管平台 云管理

流批一体技术框架探索及在袋鼠云数栈中的实践

数栈DTinsight

【TcaplusDB知识库】[List表]插入数据到列表指定位置接口说明

数据人er

【TcaplusDB知识库】[List表]批量删除列表指定位置数据接口说明

数据人er

【TcaplusDB知识库】[List表]读取列表指定位置数据接口说明

数据人er

【TcaplusDB知识库】[List表]删除列表所有数据接口说明

数据人er

挑战50年霸主C语言:新语言Hare,“异端”中的保守派_开源_Thomas Claburn_InfoQ精选文章