17611538698
info@21cto.com

内存安全的 Jule 语言作为 C/C++ 的替代方案正在兴起

编程语言 1 17 13小时前

专题图片:内存安全的 Jule 语言作为 C/C++ 的替代方案正在兴起

导读:替代C/C++的语言阵营又新加了一个小将,我们来它的功力何如。

Jule是一种新兴的开源系统语言,它结合了Go语言的简洁性和C语言的性能,同时又提供了C/C++的互操作性和编译时安全特性。

随着美国政府和其他机构要求在关键系统中使用内存安全的编程语言, 七月这种新兴的开源语言便应运而生了,成为C/C++的一种替代方案。

Jule的主页将Jule描述为“一种简单安全的编程语言,具有内置并发性、同步的C/C++互操作性和强大的编译时功能”。

尽管 Jule 项目很新,它从 2022 年开始创建,目前仍处于 beta 测试阶段,但它的创建表明,开发人员正在关注除C 和 C++ (内存不安全)之外的系统编程语言,以及GoRust (内存安全)。

图片

聚乐语言的Logo(https://github.com/julelang/jule)

2024年,美国网络安全和基础设施安全局以及联邦调查局就围绕关键基础设施的基本安全漏洞发出了严重的警告。

此类机构在联合报告中警告称,软件制造商必须在 2026 年 1 月 1 日之前制定内存安全分区图。

报告指出:“对于使用内存不安全语言编写的现有产品,如果在2026年1月1日之前没有发布内存安全路线图,将会非常危险,并显着增加对国家安全、国家经济安全以及国家公共卫生与安全的风险。”

非常好的安全性


Jule深受Go和Rust的影响,尤其是Go。

Jule手册如此解释说,Rust作业严格、全面的安全保证而闻名,同时也有效地解决了安全问题。然而,Jule采用了一种不那么严格、更灵活的安全模型,更接近Go的理念。与Go一样,Jule也可以在运行时检查边界和空指针解引用,从而确保基本的内存安全。

同时,Jule引入了额外的编译时安全分析,并执行静态检查,以便及早发现常见类型的错误。

但是一个关键区别在于 Jule 采用了一个默认不可变的模型,类似于 Rust。除非显式声明为可变,否则变量都是不可变的。在安全型 Jule 中,这条规则被严格执行:Jule 手册指出,不可变的内存不能被修改。

与C/C++的互操作性


Jule从一开始就被设计成可以与C和C++互操作,并与现有的C和C++生态系统共存。它还可以编译成C++作为中间语言表示,并利用成熟的中间编译器,例如GCC 和 Clang

Jule不仅提供简单的代码翻译,还提供内置的语言功能,旨在简化和增强互操作性。此外,Jule还方便运行时提供C++ API  ,从而简化了Jule的扩展,或者将其直接集成到现有原有代码库中的流程。

Jule 手册中写了这样一句话:

“最重要的是,我们拒绝采用一种新语言,而放弃现有的 C 和 C++ 代码库,或重写数千行经过验证的代码。我们想要的不仅仅是临时的桥梁或脆弱的变通方案。我们希望互操作性成为语言设计中的自动化、意识化的组成部分。”

另外,虽然 Jule 具备 C/C++ 互操作性,但手册中也指出,“我们的危机任务是解决使用纯 Jule 开发标准库包和编译器。为了实现某些功能而集成现有的 C/C++ 库并非可取之道。相反,我们更倾向于将其设计为第三方绑定库包。”

关于错误处理


Jule手册中常见问题解答中的一个问题是:“为什么Jule使用异常而不是其他错误处理方法?”

回复内容为: “使用替代值或以优雅的方式处理异常并返回高效结果,被更认为、更安全。从竞争性和安全性方面来看,异常处理方式更加合适。”

Jule的异常处理类似于Go的错误返回。

Jule 开发手册这样指出:“由于 Jule 极大地受到了 Go 语言的影响,许多 Go 代码可以很容易地移植到 Jule。Go 和 Jule 的语义非常相似。实现现有代码并不太困难。”

另外,在简洁性和可维护性方面,Jule 也深深受到了 Go 的影响。

效率


Jule的设计目标是在保持低内存占用的同时实现性能。它面向系统级工作负载,你知道在这些工作负载中,效率、可预测性和可控性至关重要。

本语言手册中还提到了,Jule 的参考编译器可以执行自己的优化来生成高质量的中间表示(IR),而不仅仅是相当于来性能。

另外,为了提高内存效率,Jule避免使用运行时增加的功能(例如传统的反射),而是依赖于编译时的反射,这样既能提供相同的表达能力,又不会增加运行时增加。

有趣的是,Reddit 上的一些开发观察者指出,Jule 这个名字与Julia 有点相似,这个 Julia 是一种高级动态编程语言,专为高性能分数和科学计算而设计。

一位名叫tegahertz的用户如此回复道:“是的,它的名字确实有些像,但并没有受到Julia的影响。事实上,我不能说它是作为C++的继承者而设计的语言。它只是系统编程的一种替代语言,但可以说C++也完全可以被视为一种继承者。”

朱尔的未来


虽然Jule还处于beta测试阶段,但自称为“  Julenours  ”的开源社区正在努力使该语言更加稳定,并在构建一个强大的标准库。

“为了方便社区和官方开发者为 Jule 开发各种工具,Jule 官方编译器的大部分代码都包含标准在库中,”该语言的手册中写道。“标准库包含词法分析器、语法分析器和语义分析器等重要阶段,非常适合工具开发。”

Forrester Research的分析师Andrew Cornwall表示:“Jule尚未标准化,这意味着无论其技术多么先进,企业都很难真正投入使用。Jule也缺乏开发工具,所以我预计开发者不会出现大规模采用Jule的压力。”

他指出:“用Jule编写的代码很少,因此AI代码生成功能还很初级。目前看来,Jule仍然是一个热情的项目启动阶段。但这并不意味着它不会成功——Ruby最初也是一个热情的项目——但还需要更多的发展动力和更多的视角才能真正成熟。”

Cornwall 还指出了 Jule 在企业应用方面面临的几个挑战。Futurum Group 的分析师Brad Shimmin 的表现则更加乐观。

他如此评价:

Jule看起来很响,它与 Go、  Zig以及 Rust 类似,都致力于在安全性、性能和简洁性之间寻求精确的平衡,而这是许多都必须面对的问题。对我来说,它最突出的特点是强调编译时功能,这通常会带来更高效的可预测、更多的代码执行,这对系统软件来说是一件好事。”

如此看来,C/C++的替代品又多了一个。C++慌不慌?

作者:场长

评论

我要赞赏作者

请扫描二维码,使用微信支付哦。

分享到微信