要是几年的时间就能替代c++,那才是令人诧异的!
要是几年的时间就能替代c++,那才是令人诧异的!
都说Rust是内存安全语言,目前好像就看到vivo的蓝河系统BlusOS选择了 Rust 语言作为系统开发语言(据说是综合考虑了性能和安全两个维度的选择),deepin好像也有Rust开发计划,理论上在维护旧代码的同时,使用 Rust 等内存安全语言编写新代码,最大限度地减少随着时间的推移出现新的缺陷,就能达到大幅减少内存安全漏洞的目的。
快一年了 为什么中国互联网企业还在用停止支持的MySQL5?
快四年了 为什么中国互联网企业还在用停止支持的centos8?
java8的下一代替代品java17发布七年了 为什么中国互联网企业还在执着于手动缝缝补补java17就已经自带的安全功能?
这种例子数不胜数
你细品
锈党们,还不现身,更待何时!
Rust还是差点意思,没有好用的GUI库,学习难度很高,最重要的是大家用C++这么多年了,不是那么容易说换就换的。用的人少,就业岗位就少,就业岗位少,学的人就少,只能花时间慢慢发展。
Rust还是差点意思,没有好用的GUI库,学习难度很高,最重要的是大家用C++这么多年了,不是那么容易说换就换的。用的人少,就业岗位就少,就业岗位少,学的人就少,只能花时间慢慢发展。
同意,Rust的确没有很好用的GUI库,你说Tauri?谁用谁知道,见仁见智吧。
Rust替代难的原因有一部分是,依赖C++太深了,我的A功能依赖的这个库是调用了某个第三方C++库写的,而这个第三方库又用到了Boost等等都是C++写的,要替换?可能从最最最最最底部根部开始替换才行,除非有人写好了这些替代的Rust依赖库。有人说用FFI不行吗,😂 “我都用ffi了,我为什么不直接写C++?”
又或者说企业尾大难掉头,得花大价钱,高成本去替换。
还有一个原因是难学,想学好可不是那么容易。
不知道还有没有跟zzzq有关系,美国老是官方出面主推Rust替代C++,意欲何为?CISA、NSA、FBI以C++不安全为由,让企业放弃C++,这些行为,也是太出格了吧?
都说Rust是内存安全语言,目前好像就看到vivo的蓝河系统BlusOS选择了 Rust 语言作为系统开发语言(据说是综合考虑了性能和安全两个维度的选择),deepin好像也有Rust开发计划,理论上在维护旧代码的同时,使用 Rust 等内存安全语言编写新代码,最大限度地减少随着时间的推移出现新的缺陷,就能达到大幅减少内存安全漏洞的目的。
华为的鸿蒙也用了rust
哈哈哈哈
哈哈哈哈哈
在 9 月 27 日直播的【开源漫谈】第 14 期节目中,开源中国邀请到了马全一、冯洋以及张汉东三位 Rust 专家就 “快十年了,Rust 怎么还没有取代 C++” 这一话题展开讨论。
微信扫码观看直播回放
直播期间,有网友指出:使用 Rust 编译生成的二进制文件,在端侧设备(比如嵌入式设备、物联网设备等)上比使用 C++ 编译生成的二进制文件要大很多。这在那些内存和存储空间资源受限的端侧设备上尤其需要注意。
对于这一问题,三位 Rust 专家给出了自己的看法。
冯洋
关于端侧设备上 Rust 编译文件大小的问题,我的理解如下。
首先,我们要弄清楚为什么 Rust 编译后的二进制文件会比较大。
目前,有多组人员正在努力解决这个问题,至少有三伙人在进行相关工作。我个人也尝试分析过 Rust 的二进制文件,发现除了可以移除的调试信息和头部数据之外,其他部分很难进一步压缩。特别是链接(linkage)相关的部分,如果不改变现有的编译系统,这些是无法删除的。
接下来,关于资源消耗的问题,我们可以将其分为计算资源和空间资源两个方面。对于空间资源,我之前已经解释过,很难进一步减小文件大小,这需要 Rust 社区共同努力来解决链接问题。
至于时间资源,即运行时的内存消耗和计算成本,Rust 与 C 和 C++ 相比,表现大致相当,甚至在某些情况下,Rust 可能表现得更好一些。
张汉东
就像冯老师之前提到的,Rust 有些方面已经无法进一步优化,但情况并没有网友说的那么严重。
我在参与华为的一个项目时,也是在进行端侧的改造,将 C 语言的遗留系统转换为 Rust。转换后,与 C 语言相比,Rust 的二进制文件确实会大一些,大概多出几十 K。这部分增加是有优化空间的,我们知道使用 Rust 的宏会生成额外的代码,使用了泛型等特性也会增加文件大小。
如果经过优化,Rust 的二进制文件仍然会比 C 的大出十几 K,这是无法避免的,但在可控范围内。除非是在资源非常受限的情况下,比如存储容量特别小,我们可以将核心库剥离出去,这样链接后的核心库大小可能只有几 K。如果剥离核心库,可能需要自己实现一些基本功能,如复制等。
这是最极端的情况,而现在这样的情况并不多见。通常情况下,使用 no_std 模式加上一些优化技巧,可以将 Rust 编译后的文件大小控制在一个可接受的范围内。Rust 的编译大小、编译性能和编译时间之间需要平衡。如果追求性能,可能会牺牲编译时间和编译大小。因此,需要根据实际情况来平衡这些因素。
马全一
Rust 社区的性质和编译文件大小在一定程度上影响了其在端侧设备上的适用空间。但从我从事社区生态工作的角度来看,我相信 Rust 社区自身的机制能够逐渐解决这些问题,虽然这不会一蹴而就。
Rust 社区相对来说是一个比较松散的组织。它的特性改进和发展方式,并不像有些项目那样由一个技术委员会来制定草案和分工执行。在 Rust 社区中,如果你想要做一件事情,你需要自己投入精力,并影响周围的人一起参与。因此,Rust 社区一直是自治型的,像个轮子式一样向前发展。
此外,还成立了 Rust 基金会。华为作为创始会员和白金会员,每年都会向基金会投入大量资金。我们会向基金会提出,例如编译文件大小这样的问题,因为它影响了华为使用 Rust 的场景,比如我们希望 Rust 能够应用于资源受限的交换机、路由器等设备。我们希望整个社区能够推动这一进程。基金会会根据需求立项,并可能雇佣全职员工来推动某些事情,比如我知道最近基金会雇佣了一些负责安全的工程师来处理供应链安全的问题,以防止有人在项目中植入恶意代码。他们做了很多这样的工作。
所以,Rust 还有企业代表组成的基金会这样一个轮子在转动。Rust 社区实际上代表了两组人,他们目前正处于一个磨合的阶段。
去年,Rust 社区出现了一些不和谐的新闻,这反映出原本的社区自治模式在发展过程中遇到了挑战。大公司如 AWS、微软、谷歌等加入后,他们希望影响 Rust 的演进方向,与社区之间正在进行磨合。华为等公司需要有人在社区中发挥影响力,而谷歌等公司也希望在社区中投入资源,共同推动各个团队的合作。
要解决编译文件大小的问题,正如冯洋老师所说,需要整个编译器团队及其周边团队共同努力,而不是仅仅在现有的条件下进行优化。如果想要进一步减小文件大小,就需要整个团队的协作。
我和朋友聊天时,对方提到他们以前使用 Go 语言,在 Go 语言社区中提出 PR 并被接受的几率较低。
相比之下,Rust 社区会充分讨论并推动 PR 的进展,这让开发者更有信心使用 Rust。因为如果遇到问题,他们有能力自己进行修改。这也是为什么有些公司愿意在核心问题上选择 Rust,因为 Rust 社区是开放治理的,不受单一或少数公司控制。
还有一点,我与同事讨论过如何在社区中推动事情的发展。如果你发现问题,应该想办法改进并提出方案,与社区一起解决问题,而不是仅仅提出问题后就不了了之。这不是社区应有的运作方式。
参与 Rust 社区的人们可能是因为他们有机会参与到语言编译器的改进工作中,这是使用其他语言时可能无法得到的体验。当然,对于 PHP 来说,你有机会参与到语言的发展中。
但是如果是像 Go 或 Java 这样的语言,它们主要受一两家公司的控制,那么想要真正参与到语言的开发中去,实际上会面临很多困难。这是我想要解释的,即从一个从事社区工作的角度来看,Rust 社区提供了更多参与和影响语言发展的机会,这是与其他受公司控制的语言相比的一大优势。
原文链接:Rust 编译后的二进制文件,比 C++ 还大,这・・・・・・