当前位置:首页 > 科技  > 软件

用Rust重写数万行C代码,有必要吗?

来源: 责编: 时间:2024-03-18 09:42:42 116观看
导读在过去的一段时间里,“用Rust重写”的趋势席卷了整个开发领域。作为一颗冉冉升起的新星,Rust不仅承诺更好的内存安全性和更高的技术稳定性,还可以兼顾开发和执行效率。这也使得越来越多的系统开发人员转向这种面向未来的

在过去的一段时间里,“用Rust重写”的趋势席卷了整个开发领域。作为一颗冉冉升起的新星,Rust不仅承诺更好的内存安全性和更高的技术稳定性,还可以兼顾开发和执行效率。这也使得越来越多的系统开发人员转向这种面向未来的编程语言。hvy28资讯网——每日最新资讯28at.com

就在最近,另一个知名的开源项目Ockam放弃了系统中数万行C语言代码,最终用Rust重写了整个项目。在完成这个庞大的项目后,Ockam的创始人Mrinal Wadhwa分享了他带领团队从C到Rust的历程。hvy28资讯网——每日最新资讯28at.com

hvy28资讯网——每日最新资讯28at.com

hvy28资讯网——每日最新资讯28at.com

1,C语言:迷人的陷阱

作为一个开源的开发者工具,Ockam在GitHub上有3.3万颗星。其核心功能是帮助用户构建可信的动态数据,并为用户应用程序添加端到端加密和认证通信;确保应用程序具有端到端的数据完整性、真实性和机密性。hvy28资讯网——每日最新资讯28at.com

研发团队希望Ockam可以在任何环境中运行,包括受限的边缘设备或强大的云服务器。除此之外,Ockam的另一个目标是可以在任何类型的应用程序中使用,而不管应用程序是用什么语言构建的。hvy28资讯网——每日最新资讯28at.com

这样的需求使得C语言成为构建Ockam项目的候选语言——它可以为大多数设备编译,并且所有流行的语言都可以通过某种形式的接口调用C库。在这种情况下,Ockam能够为所有其他语言提供惯用的包装器。hvy28资讯网——每日最新资讯28at.com

该团队的想法是将以通信为中心的核心协议从硬件行为中分离出来,并为它想要支持的硬件提供可插拔的适配器。考虑到这个想法,开发人员在初始版本中将Ockam项目的核心实现为C库,并用其他语言包装器包装该库。hvy28资讯网——每日最新资讯28at.com

hvy28资讯网——每日最新资讯28at.com

hvy28资讯网——每日最新资讯28at.com

2,安全问题

然而,尽管基于Ockam内核实现的C库满足了项目到处运行的需求,但由于C语言内存管理的弱点,团队实现的C库中许多与加密相关的代码容易出现漏洞,一个小错误就可能导致系统变得不安全。hvy28资讯网——每日最新资讯28at.com

这与Ockam项目的目标完全相反,Ockam项目的目标是隐藏这些问题,并提供一个易于正确使用的开发人员界面。该团队开始尝试使用C语言构建安全简单的接口。但经过多次迭代,开发人员逐渐发现,他们必须掌握大量关于协议状态和状态转换的细节,即使他们非常小心,代码中也总会存在无法检测到的漏洞。hvy28资讯网——每日最新资讯28at.com

hvy28资讯网——每日最新资讯28at.com

hvy28资讯网——每日最新资讯28at.com

3,Elixir:不合格的继承人

面对极其痛苦的迭代工作,仍然无法解决内存安全问题的Ockam决定放弃C语言,寻找更适合这个项目的继任者——当时,他们把目光投向了基于erlang的Elixir语言。hvy28资讯网——每日最新资讯28at.com

Elixir程序在提供Erlang进程的Erlang虚拟机BEAM上运行。Erlang进程是轻量级的有状态并发参与者。由于参与者可以在保持内部状态的同时并发运行,因此很容易运行并发状态协议栈:Ockam传输 + Ockam路由 + Ockam安全通道。hvy28资讯网——每日最新资讯28at.com

但不幸的是,Elixir天生就是为支持高负载项目而设计的,不能像C语言那样在小型或受限的计算机上运行。此外,Elixir的生态还不够成熟,对于某些特定的语言管理包装器来说不是一个好的选择。hvy28资讯网——每日最新资讯28at.com

hvy28资讯网——每日最新资讯28at.com

hvy28资讯网——每日最新资讯28at.com

4,Rust

在经历了连续的失败之后,Ockam团队意识到他们的核心需求是在确保安全性的同时实现轻量级参与者,但是C语言和Elixir都无法完美地适应。从此,Wadhwa开始带领团队研究Rust,并很快发现了这门语言的独特魅力。hvy28资讯网——每日最新资讯28at.com

Rust库能够导出与C调用兼容的接口。这意味着任何静态/动态链接或从C库调用函数的语言都能够以完全相同的方式从Rust库调用函数。由于大多数语言都支持C中的本机函数,因此它们也支持Rust中的本机函数。从包装器的角度来看,Rust和C之间几乎没有区别。hvy28资讯网——每日最新资讯28at.com

Rust的内存安全特性消除了use-after-free、double-free、溢出、越界访问和许多其他常见错误的可能性。根据之前的调查,这些错误导致了C或C++库中60-70%的关键漏洞。Rust在编译时提供了这种安全性,这使得它在编写需要高性能、在受限环境中运行和高度安全的代码时具有很大的优势。hvy28资讯网——每日最新资讯28at.com

研发团队坚信Rust和Ockam是天作之合的最后一个原因是Rust中的async/await。Ockam需要轻量级参与者来创建简单而安全的协议栈接口。async/await意味着在tokio和async-std等项目中已经完成了许多创建actor的工作,团队可以在此基础上轻松构建Ockam的actor实现。hvy28资讯网——每日最新资讯28at.com

基于rust的async/await无论在大型机还是微型计算机上运行,都可以向用户提供完全相同的界面,位于Ockam Workers上的协议接口也可以呈现完全相同的简单接口。hvy28资讯网——每日最新资讯28at.com

最终,在Wadhwa的带领下,Ockam放弃了系统中数万行C语言代码,用一段时间完成了对Rust的全面改造。经过重写后稳定性的多次迭代,任何用户现在都可以使用重新激活的Ockam包,通过简单的函数调用,在任何设备上创建他们想要的端到端加密和相互认证的安全通道。hvy28资讯网——每日最新资讯28at.com

hvy28资讯网——每日最新资讯28at.com

hvy28资讯网——每日最新资讯28at.com

5,值得期待的未来

Ockam的故事实际上只是一个缩影。对于今天被内存安全问题困扰的绝大多数项目来说,使用Rust或基于Rust的重构不再是一个实验或赌注,而是一个足够实用和可靠的解决方案。hvy28资讯网——每日最新资讯28at.com

在Ockam之前,微软在4月份宣布,出于内存安全考虑,它将使用18万行Rust代码重写核心Windows库;Armin是Python web框架Flask的作者,他在一篇关于Python 2023发展趋势的文章中也提出了将Rust集成到Python项目和工具中的想法;Ruff的创始人在成立新公司时,也曾宣称未来将通过Rust彻底改变Python生态系统。hvy28资讯网——每日最新资讯28at.com

更令人欣慰的是,Rust的进化还在继续。根据其发布的Rust 2024路线图,官方团队将在未来继续努力,降低学习门槛,加强生态连接。帮助Rust尽快摆脱饱受诟病的“高门槛”标签,让它尽快在更多场景中发挥价值。在这方面,Rust的未来确实值得我们每个人的期待。hvy28资讯网——每日最新资讯28at.com

hvy28资讯网——每日最新资讯28at.com

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-76555-0.html用Rust重写数万行C代码,有必要吗?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 保守点,90%的程序员不适合做独立开发

下一篇: 抢先了解:阿里巴巴面试必问!Spring设计思想解析

标签:
  • 热门焦点
  • K60至尊版狂暴引擎2.0加持:超177万跑分斩获性能第一

    K60至尊版狂暴引擎2.0加持:超177万跑分斩获性能第一

    Redmi的后性能时代战略发布会今天下午如期举办,在本次发布会上,Redmi公布了多项关于和联发科的深度合作,以及新机K60 Ultra在软件和硬件方面的特性,例如:“K60 至尊版,双芯旗舰
  • Redmi Pad评测:红米充满野心的一次尝试

    Redmi Pad评测:红米充满野心的一次尝试

    从Note系列到K系列,从蓝牙耳机到笔记本电脑,红米不知不觉之间也已经形成了自己颇有竞争力的产品体系,在中端和次旗舰市场上甚至要比小米新机的表现来得更好,正所谓“大丈夫生居
  • 一年经验在二线城市面试后端的经验分享

    一年经验在二线城市面试后端的经验分享

    忠告这篇文章只适合2年内工作经验、甚至没有工作经验的朋友阅读。如果你是2年以上工作经验,请果断划走,对你没啥帮助~主人公这篇文章内容来自 「升职加薪」星球星友 的投稿,坐
  • 三言两语说透设计模式的艺术-单例模式

    三言两语说透设计模式的艺术-单例模式

    写在前面单例模式是一种常用的软件设计模式,它所创建的对象只有一个实例,且该实例易于被外界访问。单例对象由于只有一个实例,所以它可以方便地被系统中的其他对象共享,从而减少
  • 企业采用CRM系统的11个好处

    企业采用CRM系统的11个好处

    客户关系管理(CRM)软件可以为企业提供很多的好处,从客户保留到提高生产力。  CRM软件用于企业收集客户互动,以改善客户体验和满意度。  CRM软件市场规模如今超过580
  • 如何通过Python线程池实现异步编程?

    如何通过Python线程池实现异步编程?

    线程池的概念和基本原理线程池是一种并发处理机制,它可以在程序启动时创建一组线程,并将它们置于等待任务的状态。当任务到达时,线程池中的某个线程会被唤醒并执行任务,执行完任
  • 当家的盒马,加速谋生

    当家的盒马,加速谋生

    来源 | 价值星球Planet作者 | 归去来自己“当家”的盒马,开始加速谋生了。据盒马官微消息,盒马计划今年开放生鲜供应链,将其生鲜商品送往食堂。目前,盒马在上海已经与
  • 华为和江淮汽车合作开发百万元问界MPV?双方回应来了

    华为和江淮汽车合作开发百万元问界MPV?双方回应来了

    8月1日消息,郭明錤今天在社交平台发文称,华为正在和江淮汽车合作,开发售价在100万元的问界MPV,预计在2024年第2季度量产,销量目标为上市首年交付5万辆。
  • 苹果、三星、惠普等暂停向印度出口笔记本和平板电脑

    苹果、三星、惠普等暂停向印度出口笔记本和平板电脑

    集微网消息,据彭博社报道,在8月3日印度突然禁止在没有许可证的情况下向印度进口电脑/平板及显示器等产品后,苹果、三星电子和惠普等大公司暂停向印度
Top
Baidu
map