您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Rust

嫌 Rust 小家子气,大佬终于弃坑了!

时间:2023-04-07 12:35:04  来源:51CTO  作者:

多年来,我一直在参与 Rust 和 Rust 社区。我的大部分工作都与创建用于在 Rust 中构建 GUI 工具包的基础设施有关。然而,我发现我对这种语言越来越失望,我现在太渴望 C++ 的稳定与成熟了!

1、构建系统:Rust 生态小家子气

Rust 生态系统的局限性之一是 Cargo 构建系统和包管理器的近乎单一文化。虽然在某种程度上使用了其他构建系统(包括集成到更大的多语言项目时的Bazel),但它们并没有得到工具的很好支持。

相比之下,在 C++ 中,构建系统有很多选择,允许每个开发人员选择最适合他们需要的一个。一个非常常见的选择是 CMake(CMake是一个开源、跨平台的工具系列,旨在构建、测试和打包软件,通常用于使用简单的平台和编译器独立的配置文件控制软件编译过程),但也有 Meson、Blaze 及其变体,当然也总是可以求助于 Autotools 并进行制作。如果我们要编译 AIX 和 DEC OSF/1 AXP 等 Unix 系统,后者尤其有用。如果这些都不够,还有很多其他选择,包括 SCons,毫无疑问,我们会定期创建新的选择。

我们还没有为 Linebender 项目确定构建系统,但很可能是 CMake,并计划评估其他系统和迁移,也许是 Meson。

Linebender:包含许多诸如druid、xilem等许多流行的Rust存储库。

2、安全:三个原因放弃Rust

这一变化最具争议的方面可能是放弃了 Rust 语言的安全保证。但是,出于三个原因,我认为这在实践中不会成为大问题。

首先,我认为自己是一个足够优秀的程序员,我可以避免编写有安全问题的代码。当然,我曾负责过一些 CVE(包括Android 中的字体解析代码),但我从那次经历中吸取了教训,并且有信心在未来避免此类错误。

其次,我认为内存安全问题的危险被夸大了。Linebender 项目主要关注 2D 图形,部分是游戏,部分是用于创建 GUI 应用程序的组件。如果 GUI 程序崩溃,也没什么大不了的。如果错误是由于我们用作依赖项的库引起的,我们的客户会明白这不是我们的错。内存安全错误与逻辑错误和其他错误没有根本区别,我们只会在它们出现时修复它们。

第三,C++ 语言正在向更安全的方向发展。我们可以使用现代 C++ 技术来避免原始指针的许多危险(尽管字符串视图可以比它们的支持字符串更长寿,并且 UI 中使用的闭包可以有非常有趣的生命周期模式)。C++ 核心指南很有用,即使它们在违规中受到尊重。而且,正如下一节所讨论的,语言本身有望得到改进。

3、语言演化:Rust没有根本性的新功能

C++ 的一个显着特征是新功能的快速采用,现在每 3 年有一个新版本。C++20 为我们带来了模块,这是一项创新的新功能,我期待着很快就能真正实现这一功能。展望未来,C++26 可能会拥有堆栈协程、嵌入二进制文件内容以初始化数组的能力、安全的基于范围的 for 循环,以及许多其他好东西。

相比之下,Rust 的创新步伐变得更加稳健。它曾经非常快速,并且异步一直是一项重大努力,但最近登陆的特性(例如通用关联类型)更像是使现有特性的组合按预期工作,而不是带来任何根本性的新功能;即将推出的“type alias impl trait”与之类似。在这里,很明显,Rust 因承诺不破坏现有代码(由版本机制制定)而受阻,而 C++ 可以自由地在每个新版本中实现向后兼容性破坏性更改。

C++ 有更令人兴奋的变化值得期待,包括 Herb Sutter cppfront 提出的潜在新语法,甚至是新的 C++ 兼容 Carbon 语言。

幸运的是,我们在 C++ 社区中拥有出色的领导能力。C++ 之父 Stroustrup 关于安全的论文《A call to action: Think seriously about “safety”; then do something sensible about it 》是一份非常值得一读的文档,显示出对 C++ 面临的问题的深刻理解,并提出了一个引人注目的未来路线图。

C++之父去年12月6日发表有关安全的文章

4、社区:Rust 社区有点专横

我将以关于社区的一些想法作为结束。我尽量不花太多时间在社交媒体上,但我听说 Rust 社区可能非常专横,不断要求用 Rust 重写项目,并诋毁所有其他编程语言。我会很高兴摆脱它,并且相信 C++ 社区会更好、更友好。特别是,C++ subreddit 以其幽默感而闻名。

Rust 社区还以其行为准则和其他促进多样性的政策而闻名。我坚信编程语言应该不受政治影响,严格关注技术本身。在计算机科学领域,我们已经超越了偏见和歧视。我理解某些身份群体可能希望获得更多代表权,但我认为没有必要。

5、结论

Rust 是一个很好的实验,有些方面我会深情地回顾,但现在是时候将 Linebender 项目变成一种成熟的、生产就绪的语言了。我期待与 C++ 社区中的其他人进行富有成效的协作。我们正在寻找帮助 C++ 重写的人。

原文链接:https://raphlinus.Github.io/rust/2023/04/01/rust-to-cpp.html



Tags:Rust   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Rust 标准库 1.77.2 发布,修复高危漏洞
IT之家 4 月 10 日消息,Rust 的优势之一就是安全,但这并不代表该编程语言就没有漏洞。安全专家近日发现了追踪编号为 CVE-2024-24576 的漏洞,攻击者利用 Rust 标准库中的一个安...【详细内容】
2024-04-10  Search: Rust  点击:(4)  评论:(0)  加入收藏
Rust 写脚手架,Clap你应该知道的二三事
有感而发最近,在和前端小伙伴聊天发现,在2024年,她们都有打算入局Rust学习的行列。毕竟前端现在太卷了,框架算是走到「穷途末路」了,无非就是在原有基础上修修补补。所有他们想在...【详细内容】
2024-03-11  Search: Rust  点击:(20)  评论:(0)  加入收藏
Rust 最受欢迎的这些库
今天分享主题是,关于一些值得注意的 Rust 库,这些库可以根据它们的功能和在编码中的受欢迎程度进行选择。什么是 Rust 库?在 Rust 中,常被称为 “crate” 的库,是一个打包的单元...【详细内容】
2024-02-19  Search: Rust  点击:(50)  评论:(0)  加入收藏
在 Rust 编程中使用泛型
本文的内容将涉及泛型定义函数、结构体、枚举和方法, 还将讨论泛型如何影响代码性能。1.摘要Rust中的泛型可以让我们为像函数签名或结构体这样的项创建定义, 这样它们就可以...【详细内容】
2024-01-09  Search: Rust  点击:(89)  评论:(0)  加入收藏
在 Rust 编程中使用多线程
编程语言有一些不同的方法来实现线程,而且很多操作系统提供了创建新线程的 API。Rust 标准库使用 1:1 线程实现,这代表程序的每一个语言级线程使用一个系统线程。1. Rust线程...【详细内容】
2024-01-07  Search: Rust  点击:(78)  评论:(0)  加入收藏
你应该知晓的 Rust Web 框架
前言在之前的用 Rust 搭建 React Server Components 的 Web 服务器我们利用了Axum构建了RSC的服务器。也算是用Rust在构建Web服务上的小试牛刀。虽然说Axum在Rust Web应用中...【详细内容】
2023-12-07  Search: Rust  点击:(164)  评论:(0)  加入收藏
解密 Python 如何调用 Rust 编译生成的动态链接库
楔子Rust 让 Python 更加伟大,随着 Rust 的流行,反而让 Python 的生产力提高了不少。因为有越来越多的 Python 工具,都选择了 Rust 进行开发,并且性能也优于同类型的其它工具。...【详细内容】
2023-11-29  Search: Rust  点击:(189)  评论:(0)  加入收藏
一篇学会 Rust 内存布局
整型,浮点型,struct,vec!,enum 本文是对 Rust内存布局[1] 的学习与记录 struct A { a: i64, b: u64,}struct B { a: i32, b: u64,}struct C { a: i64, b:...【详细内容】
2023-11-28  Search: Rust  点击:(113)  评论:(0)  加入收藏
Rust 十月就业报告:备受大厂青睐
智能招聘平台 filtra 发布了编程语言 Rust 的 10 月就业报告,相比 9 月的462 条招聘信息,10 月略微下降到了 460 条,但雇主数量略有增长,整体而言,Rust 的就业形式处于比较平稳的...【详细内容】
2023-11-15  Search: Rust  点击:(203)  评论:(0)  加入收藏
Rust 变量,你学会了吗?
Rust 是一门强调安全、并发、高效的系统编程语言。无 GC 实现内存安全机制、无数据竞争的并发机制、无运行时开销的抽象机制,是 Rust 独特的优越特性。 它声称解决了传统 C...【详细内容】
2023-11-01  Search: Rust  点击:(242)  评论:(0)  加入收藏
▌简易百科推荐
Rust 标准库 1.77.2 发布,修复高危漏洞
IT之家 4 月 10 日消息,Rust 的优势之一就是安全,但这并不代表该编程语言就没有漏洞。安全专家近日发现了追踪编号为 CVE-2024-24576 的漏洞,攻击者利用 Rust 标准库中的一个安...【详细内容】
2024-04-10    IT之家  Tags:Rust   点击:(4)  评论:(0)  加入收藏
在Rust中使用Serde的详细指南
在处理HTTP请求时,我们总是需要在一种数据结构(可以是enum、struct等)和一种可以存储或传输并稍后重建的格式(例如JSON)之间来回转换。Serde是一个库(crate),用于高效、通用地...【详细内容】
2024-03-26  coding到灯火阑珊  微信公众号  Tags:Rust   点击:(17)  评论:(0)  加入收藏
Rust 写脚手架,Clap你应该知道的二三事
有感而发最近,在和前端小伙伴聊天发现,在2024年,她们都有打算入局Rust学习的行列。毕竟前端现在太卷了,框架算是走到「穷途末路」了,无非就是在原有基础上修修补补。所有他们想在...【详细内容】
2024-03-11  前端柒八九  微信公众号  Tags:Rust   点击:(20)  评论:(0)  加入收藏
Rust中的数据可视化指南
可视化是数据分析和解释的一个关键方面。虽然Rust主要以其性能和安全特性而闻名,但它也为数据可视化提供了强大的工具。在这个全面的指南中,我们将深入研究Rust中的数据可视化...【详细内容】
2024-03-07  coding到灯火阑珊  微信公众号  Tags:Rust   点击:(31)  评论:(0)  加入收藏
如何在Rust中操作JSON,你学会了吗?
sonic-rs ​还具有一些额外的方法来进行惰性评估和提高速度。例如,如果我们想要一个 JSON​ 字符串文字,我们可以在反序列化时使用 LazyValue​ 类型将其转换为一个仍然带有斜...【详细内容】
2024-02-27  前端柒八九  微信公众号  Tags:Rust   点击:(47)  评论:(0)  加入收藏
记一次Rust内存泄漏排查之旅
在某次持续压测过程中,我们发现 GreptimeDB 的 Frontend 节点内存即使在请求量平稳的阶段也在持续上涨,直至被 OOM kill。我们判断 Frontend 应该是有内存泄漏了,于是开启了排...【详细内容】
2024-02-27  OSC开源社区    Tags:Rust   点击:(12)  评论:(0)  加入收藏
Rust 最受欢迎的这些库
今天分享主题是,关于一些值得注意的 Rust 库,这些库可以根据它们的功能和在编码中的受欢迎程度进行选择。什么是 Rust 库?在 Rust 中,常被称为 “crate” 的库,是一个打包的单元...【详细内容】
2024-02-19  码农渔夫  微信公众号  Tags:Rust   点击:(50)  评论:(0)  加入收藏
异步Rust:构建实时消息代理服务器
在本文中,我们将深入研究使用Rust构建实时消息代理服务器,展示其强大的并发特性。我们将使用Warp作为web服务器,并使用Tokio来管理异步任务。此外,我们将创建一个WebSocket客户...【详细内容】
2024-02-01      Tags:Rust   点击:(58)  评论:(0)  加入收藏
在 Rust 编程中使用泛型
本文的内容将涉及泛型定义函数、结构体、枚举和方法, 还将讨论泛型如何影响代码性能。1.摘要Rust中的泛型可以让我们为像函数签名或结构体这样的项创建定义, 这样它们就可以...【详细内容】
2024-01-09  二进制空间安全  微信公众号  Tags:Rust   点击:(89)  评论:(0)  加入收藏
什么是Rust语言 ,特点是什么,跟其它语言对比有什么优势
什么是RustRust是一种系统编程语言,旨在提供高性能和安全性。它是由Mozilla和其开发社区创建的开源语言,设计目标是在C++的应用场景中提供一种现代、可靠和高效的选择。Rust的...【详细内容】
2024-01-09    简易百科  Tags:Rust语言   点击:(206)  评论:(0)  加入收藏
站内最新
站内热门
站内头条