百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

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

yund56 2025-05-15 23:28 11 浏览

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/

了解更多软件开发与相关领域知识,点击访问 InfoQ 官网:https://www.infoq.cn/,获取更多精彩内容!

相关推荐

如何在Office 中编辑 PDF?附详细化步骤

PDF很受欢迎,因为它能在不同的设备和操作系统上仍然保持原有格式。但是,这也意味着直接更改PDF文件比其他格式更难更复杂。值得庆幸的是,Microsoftoffice和UPDF帮你解决这一难题。一...

我的 Windows 装机必备软件清单

今天给大家分享下我的装机必备软件,都是用了好多年的软件神器。靠谱、好用、无广告,Windows电脑必备软件,收藏这一篇就够了!01.浏览器王者:Chromehttps://www.google.c...

Docnet Core 是一个轻量级、高性能的 .NET PDF 操作库

DocnetCore介绍DocnetCore是一个轻量级、高性能的.NETPDF操作库,依托于PDFium渲染引擎,提供强大的PDF文档解析、渲染、操作等功能。它完全支持.NET...

分享三款好用的PDF编辑软件,轻松处理PDF

作为一名需要经常和PDF文件打交道的工作者,我来分享一下几款好用的PDF编辑软件,并详细分析了它们的优缺点,希望能帮你找到合适的工具。1.AdobeAcrobatDC作为PDF格式的发明者,Ado...

PDF文档创建工具软件:novaPDF OEM 11.9 Build 432 for Windows

novaPDFOEM是一款实用高效的软件,从头开始设计,让您尽可能轻松地在应用程序中添加PDF打印功能。换句话说,这个实用程序是专门为应用程序开发人员设计的,可以直接在程序安装程序中集成为PDF打印...

线性表顺序存储结构求集合的并,交,补,差(源代码附上 超详细)

一:算法分析1)用数组A,B,C,E表示集合。假定A={1,3,4,5,6,7,9,10},  B={2,,3,4,7,8,10},E={1,2,3,4,5,6,7,8,9,10},  输入数组A...

分享一套SpringBoot开发博客系统源码,包含完整开发文档和视频

基本信息项目名称:eblog摘要:eblog是一个基于Springboot2.1.2开发的博客学习项目,为了让项目融合更多的知识点,达到学习目的,编写了详细的从0到1开发文档。主要学习包括:自定义Fr...

通达信指标合集〔源码齐全〕

很多朋友问到我哪款指标好用,这里我说一下,之所以有很多不同的指标是因为我们在针对不同的盘面情况的时候使用的指标是不同的,我给到的指标一般来讲就目前的环境来讲都是比较适合的,今天我就把我平时自己常用的指...

巅峰对决!Spring Boot VS .NET 6

SpringBoot和ASP.NETCore都是企业中流行的Web框架,对于喜欢C#的人会使用ASP.NETCore,而对于Java或Kotlin等基于JVM的语...

在asp.net core 中控制访问权限的方法

Intro#由于项目需要,需要在基于asp.netmvc的Web项目框架中做权限的控制,于是才有了这个权限控制组件,最初只是支持netframework,后来dotnetcore2.0...

ASP.NET是否无生存之地?

ASP.NET,这个已经很久的技术,总觉得已经被时代淘汰,我们公司是一个10人小公司,几个十年十五年的项目还是用ASP.NET开发的。这两年由于客户的需求变化,我们公司也顺势开始对这些项目重新开发,改...

Spring Boot + Vue.js 实现前后端分离(附源码)

作者:梁小生0101链接:juejin.im/post/5c622fb5e51d457f9f2c2381SpringBoot+Vue.js前后端涉及基本概念介绍,搭建记录,本文会列举出用到环...

ASP.NET Core 中的 Mapster 使用入门教程

在本文中,我们将学习如何在ASP.NETCore应用程序中使用Mapster。首先,我们将了解Mapster是什么以及如何将其安装到.NETCore应用程序中。然后,我们将在使用...

Asp.net常用方法及request和response-a

asp.net教程asp.net常用方法:1、Request.UrlReferrer请求的来源,可以根据这个判断从百度搜的哪个关键词、防下载盗链、防图片盗链,可以伪造(比如迅雷)。(使用全局一般处理...

ASP.NET Core使用功能开关控制路由访问

前言在前面的文章,我们介绍了使用Middleware有条件地允许访问路由(《ASP.NETCore使用Middleware有条件地允许访问路由》)。而对于一些试验性的功能,我们并不希望用密码去控制是...