前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Rust日报】内存安全方面看Rust和Zig是如何竞争的!

【Rust日报】内存安全方面看Rust和Zig是如何竞争的!

作者头像
MikeLoveRust
发布2023-10-09 10:20:10
2.1K0
发布2023-10-09 10:20:10
举报

Rust 与 Zig:两种现代系统编程语言的正面比较

写在前头:机翻自Google

编程 许多新的编程语言正在试图取代 C 编程语言,其中大多数都被贴上了“C 杀手”的标签。这一类别中最值得注意的是 Zig 和 Rust,我们最近讨论过它们。Zig 是一种快速、高性能的低级、编译、静态类型系统编程语言,旨在成为 C 的最终替代品。Zig 声称比 C 更快、性能更高。Zig 由 Andrew Kelley 设计,于 3 月份首次发布2016年。

Rust 是一种静态编译、强类型、多范式、通用编程语言,旨在构建低级内存安全应用程序。Rust 于 2010 年首次宣布,并于 2015 年发布。从那时起,它迅速流行起来,这是因为 Rust 被设计为高性能 Rust 是可用的最快的编程语言之一,并且通常可以在以下方面与 C 和 C++ 竞争性能方面。您可以阅读我们关于Zig和Rust 的评论。在今天的文章中,我们将并排研究这两种编程语言,试图找出其中哪一种是最终的系统编程语言。

我们将根据以下几点考虑它们。

内存管理 安全 社区 句法 现场项目 内存管理 Rust 引入了借用者-检查者规则来处理内存管理。Rust 实现了一个规则系统,用于控制数据如何分配到应用程序中的内存。这使您无需手动释放应用程序中使用的内存。在 Rust 中,一旦其所有者超出范围,编译器将自动释放已使用的内存。这意味着 Rust 应用程序中使用的所有内存都必须有一个所有者。Rust 还确保每一位内存一次只能有一个所有者。

在 Zig 中,不允许指针指向任何内容,这与 C 形成鲜明对比,在 C 中可以有空指针,相反,Zig 使用选项类型,它只是单独的类型,用于指示可选为空的数据。这可以与使用包含指针和布尔值的结构进行比较,该结构确定指针是否有效,但布尔值的状态由语言隐式管理,而不是必须由程序员显式管理。

安全 Rust 是一种旨在快速运行的系统编程语言。这是通过使用它的借用检查器来实现的。Rust 的所有权系统确保内存得到有效管理并且不会泄漏。所有权是一组控制内存分配和释放方式的规则,它们由编译器强制执行,Rust 的类型系统非常具有表现力,可用于捕获许多常见的编程错误。

Zig 的设计考虑到了安全性,它提供了一种调试模式来编译您的代码。调试模式针对安全性进行了优化。它禁用所有 Zig 的编译器优化并启用所有 Zig 的安全检查。Debug模式的特点是编译速度快,运行时性能慢,二进制文件大小较大。Zig 还附带一个标准测试库,使您能够测试代码。Zig 的std.testing测试模块是一个有效的工具,可以使单元测试的编写和执行变得简单。

社区 Rust 拥有一个庞大的生态系统,拥有庞大而活跃的开发者社区,其中 67% 的开发者使用 Rust 来从事业余爱好和副业项目。而 16% 的开发人员使用 Rust 进行工作。尽管 80% 的 Rust 开发者都是该语言的新用户,拥有 1 年或更少的经验。这是根据Jet Brains Developer Ecosystem得出的。Rust 拥有越来越多的企业用户,包括亚马逊、Facebook、谷歌和微软。这证明了该语言的成熟度和潜力。

Zig 是一种相对较新的编程语言。Zig 背后的生态系统并不像 Rust 的生态系统那么大,只有少数开发人员使用 Zig,而我自己最近才了解 Zig。

句法 Rust 的语法被设计得简洁易读。它的设计也是为了安全。Rust 的语法与 C++ 类似,但存在一些关键差异,在类型注释方面,它也与 Typescript 有一些相似之处。尽管 Rust 中的 Borrow-Checker 机制为刚接触该语言的开发人员带来了一些复杂性。

从初学者的角度来看,Zig 的设计易于学习和使用。如果您使用过任何类似 C 的语言,那么 Zig 的学习曲线就会显着缩短。Zig 尝试保留 C 的大部分现有语法,只在必要时引入新语法。让 Zig 变得对初学者友好。

实际应用 可以说,用 Rust 构建的最大的应用程序之一是 Linux 内核,Rust 已被 Linux 社区正式采用,用于积极构建和维护 Linux 内核,这是该语言的一个重要里程碑,它表明 Rust 能够支持最苛刻的应用。Rust 编译器本身也是用 Rust 编写的,Parity 是用 Rust 编写的以太坊区块链的客户端。Rust 也被许多公司在其生产系统中使用,包括亚马逊、Facebook、谷歌和微软。

目前使用 Zig 构建的最热门的应用程序是 Bun Javascript 运行时,这是一个在服务器上执行 Javascript 的运行时,它与 NodeJS 和 npm 完全兼容。Zig编译器也是用Zig编写的,Uber也使用Zig C++编译器通过Hermetic CC工具链在arm64硬件上运行Uber服务。

那么其中哪一个是 C 的最终替代品呢?我想说这取决于,您应该知道这两种编程语言都允许您为低级系统构建高性能和内存安全的应用程序。这两种编程语言都提供了一组独特的功能,使它们各自与众不同,最终取决于您的个性、您想要构建的应用程序类型以及您能够设置其中的哪一个在你的电脑。就我个人而言,我会选择 Zig,因为我只是喜欢逆潮流而行。无论如何,请务必在下面的评论部分留下您的想法,让我知道您会选择哪一个以及为什么会选择它。我们将在下一篇文章中见到您。

阅读原文:https://dev.to/kalashin1/rust-vs-zig-a-head-to-head-comparison-of-two-modern-systems-programming-languages-13bh

axum-cms:一款使用axum的cms

一个简单的生产就绪后端服务器模板,用于使用 Rust 和 Axum 构建内容管理系统的后端服务器。 Repo:https://github.com/DreadedHippy/axum-cms

ROS RMW 疑似使用rust编写

ROS 2 核心团队正在开发一种替代中间件 RMW 以及现有的 DDS RMW。最终目标是创建将在未来版本中随 ROS 2 一起提供的 Tier-1 RMW。然而,Jazzy 的短期目标是拥有一个可安装源代码的 RMW,社区可以自己下载、编译和试用。

阅读原文:https://discourse.ros.org/t/ros-2-alternative-middleware-report/33771

Circle:一款受rust启发的C++编译器

C++ 正在拥抱受 Rust 启发的内存安全功能的强大功能! 💡 Rust 继续其征服之路,以其安全第一的方法彻底改变了编码领域。

阅读更多:https://twitter.com/yunus/status/1707327996758020272

Repo:https://www.circle-lang.org/

PS小编说:小伙伴们期待memory-safety的C++吗?

eyra:使用rust重写libc的 rust-c库

Eyra是一组库,旨在取代传统libc在现代程序中的作用,它完全是用Rust编写的。

注:这块小编也不是很懂,具体可以阅读原文,了解更多信息。

阅读更多:https://notgull.net/eyra/ Repo:https://github.com/sunfishcode/eyra/

egui v0.23.0 released:一个简单且快速的rust gui库

egui旨在成为最易于使用的Rust GUI库,也是在Rust中制作Web应用程序的最简单方法。 Repo:https://github.com/emilk/egui

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-10-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Rust语言学习交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Rust 与 Zig:两种现代系统编程语言的正面比较
  • axum-cms:一款使用axum的cms
  • ROS RMW 疑似使用rust编写
  • Circle:一款受rust启发的C++编译器
  • eyra:使用rust重写libc的 rust-c库
  • egui v0.23.0 released:一个简单且快速的rust gui库
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档