写点什么

Shopify 为系统编程提供 Rust

  • 2023-02-17
    北京
  • 本文字数:2696 字

    阅读完需:约 9 分钟

Shopify为系统编程提供Rust

Shopify 为商业构建互联网基础设施,以满足数百万商家的需求。为了做到这一点,需要构建灵活的业务逻辑和健壮的高性能系统。除了我们对 Ruby 的灵活性和表现力的承诺之外,我们最近还采用了 Rust 作为我们官方的系统编程语言。作为这项工作的一部分,我们加入了 Rust 基金会,并且我们很高兴能加入 Rust 社区。


系统编程是软件工程中的一个要求很高的领域,为其选择的语言将会对系统软件的成功和有效性产生巨大的影响。用于解决这些问题的语言需要快速、高效且安全。此外,如果可能,Shopify 更喜欢社区驱动的开源项目。


Rust 不断增长的行业势头和 Shopify 不断扩大的系统编程项目基础,使我们在 Rust 上进行标准化并加入 Rust 基金会正当其时。


Shopify 的系统编程


自成立以来,Shopify 的主要服务端应用程序编程语言一直是 Ruby。Ruby 的灵活性和表现力使 Shopify 能够开发出强大的商务系统,满足数百万商家以及数亿买家的需求。Ruby 过去是,现在是,将来依然是我们构建现代商务服务端组件时的首选工具。


对于系统编程,例如高性能网络服务器或使用“原生”代码扩展 Ruby,而不是定义业务逻辑,Shopify 开发人员过去一直使用 C 和 Go 等语言。最近,我们决定将 Rust 标准化为我们的系统编程语言。因此,我们正致力于在开发和部署流程中更好地支持 Rust,并帮助 Shopify 工程师开发 Rust 编程方面的专业知识。


为什么选择 Rust?


Rust 的许多方面使它成为我们系统编程语言的一个有吸引力的选择。这些因素结合起来使我们相信 Rust 将会成为我们软件堆栈中一个强大且受欢迎的组件。其他公司可能会对语言的不同属性进行不同的权衡,做出不同的选择;我们的评估最终使我们选择了 Rust。


一致性


Shopify 的系统编程需要涵盖多个领域,而且随着时间的推移,这个数字可能会增加。它们包括高性能服务器、用于提高性能或桥接到其他库的 Ruby 扩展,以及编译为 WebAssembly。我们非常希望将对单一语言的投资运用到众多领域,这意味着要确定一种可以非常灵活使用的语言。相关类型的系统编程将对组织的语言选择产生重大影响;我们需要对此有更宽泛的视角。


性能


Shopify 需要能够高效且可持续地扩缩,以支持全球商业。Rust 为我们提供了可预测的原生代码性能,包括对内存使用的精细控制,这使其适用于我们堆栈的最低级别。当然,Rust 并不是唯一能够提供或接近这种性能的语言。在此基础上,还可以考虑使用现代 C++,或者如果可以接受垃圾收集器的分配行为和性能的话,则可以考虑 Go。


当然,虽然 Rust 具有很高的性能上限,但它本质上并没有提高性能下限。一个应用程序或组件并不会因为它是用 Rust 编写的就神奇地快;程序员仍然需要设计和衡量性能,我们需要确保 Shopify 的 Rust 开发人员拥有必要的工具来轻松完成这项工作。随着我们与 Rust 及其社区的合作,这种支持将成为 Shopify 感兴趣的一个重要领域。


社区


Rust 语言和生态系统是由一个健康的社区驱动的,我们打算像参与 Ruby、 Rails、 React Native 和其他开源项目一样参与这个社区。Rust 的 RFC 流程和治理架构为包容且深思熟虑的讨论提供了坚实的基础,从而推动了语言和工具的未来发展。希望我们的贡献不仅能使 Rust 在 Shopify 的使用中变得更加高效,而且还能为所有 Rust 开发人员带来改进。


这就是 Shopify 加入 Rust 基金会的原因。我们希望支持 Rust 优秀的治理模式和“Rust 公地”的维护,并将我们的知识和观点带入到更大的 Rust 对话中。Rust 基金会为确保 Rust 社区和生态系统的健康所做的工作至关重要,我们非常自豪能够参与他们的使命。


生产力


在某些圈子里,Rust 以难以学习和使用而闻名,但 Shopify 内部和外部的开发人员发现,在通过了最初的学习阶段之后,他们可以非常高效且轻松地使用 Rust 进行构建。Rust 还有一个强大的库生态系统(“板条箱”)和良好的 IDE 集成工具,当然还有非常好的编译器错误消息。类型和宏系统的强大功能允许非常有表现力的 API 和语法,将开发人员的精力集中在表达他们的思想上,而不是在头脑中摆弄大量的状态和不变量。Go 在这方面也享有盛誉,C 和 C++ 就没那么好了。


安全性


Rust 提供了许多让编译器来帮助确保程序正确的工具,包括它们可以安全地管理内存,并且可以“无所畏惧地并行”。随着我们越来越熟练地使用 Rust,我们将会找到更多的方法来使用 Rust 的类型系统和安全规则来保持系统中的不变量。从我们最初的项目中,我们发现与我们评估的其他语言相比,Rust 会在编译时而不是运行时暴露出更多的错误。这促成了 Rust 开发人员经常表达的“有信心部署”情绪。


在我们所考虑的所有语言中,Rust 在安全因素方面遥遥领先:不仅是在生命周期管理方面的内存安全上,它还消除了并行程序中的大多数数据竞争。当然,即使是 Rust,它也有改进的空间,例如静态死锁预防,但所有生产语言都是如此。我们相信 Rust 对静态安全性的承诺会使其最有可能在未来几年中实现这一目标。在这个领域已经有了一些有趣的工作,例如 Ferrocene。


互操作性


系统编程通常涉及到与现有的“原生”库(比如用 C 编写的库)的接口。与 Go 不同的是,Rust 没有垃圾收集器,这使得它可以更容易地插入到可以使用 C 的任何地方。更具体地说,Rust 很好地支持了使用 bindgen 等工具与现有的 C 代码的集成,而像 rb-sys 和 magnus 这样的板条箱允许 Rust 安全地与 Ruby 互操作。C++ 的集成仍然有些笨拙,但像 cxx 这样的板条箱可以帮助弥合语言障碍。除了 RubyVM 本身之外,我们没有大型的 C 或 C++ 代码库,但这种互操作对我们来说仍然是一个重要的考虑因素。


接下来做什么?


在 Shopify,我们的 Rust 之旅才刚刚开始。我们需要开发教育资源和内部工具,并学习如何最好地参与 Rust 社区和生态系统。我们很高兴能成为 Rust 使命的一部分,让每个人都能构建可持续的、内存安全的、高效的软件,并感谢 Rust 基金会的欢迎加入。


Mike Shaver 是 Shopify 核心工程的杰出工程师。


如果你对从头开始构建系统来解决现实世界中的问题感兴趣,我们的工程博客中有关于我们遇到的其他挑战故事。访问我们的工程职业位页面,了解我们的空缺职位。加入我们的远程团队,可以(几乎)在任何地方工作。了解我们是如何通过招聘来共同设计未来的——一个通过设计实现数字化的未来。


原文链接


https://shopify.engineering/shopify-rust-systems-programming


声明:本文为 InfoQ 翻译,未经许可禁止转载。


今日好文推荐


18.3 万美元offer到手!ChatGPT 通过谷歌 L3 面试:留给谷歌的时间不多了


我被微服务坑掉了CTO职位


微信全面支持“小号”;员工购买公司福利房,被裁员后遭巨额索赔;16岁少年孤身前往深圳腾讯总部解封QQ账号|Q资讯


现代软件越来越大、越来越慢、越来越烂!还有救吗?


2023-02-17 11:515050

评论

发布
暂无评论
发现更多内容

阿里云崩了:企业未来该怎么选择云厂商?

轶天下事

国际版Amazon Lightsail的功能解析

穿过生命散发芬芳

AWS Lightsail 轻量级服务器

华为数字治理经验,首次披露!

轶天下事

还在为考试重题、错题而头疼?大可不必!时习知新功能了解一下!

轶天下事

透过一台电视,看到万家星闪

脑极体

通信

乌卡时代确定性稀缺,企业多云战略最需看中什么?

轶天下事

2023-11-22:用go语言,给你一个长度为 n 下标从 0 开始的整数数组 nums。 它包含 1 到 n 的所有数字,请你返回上升四元组的数目。 如果一个四元组 (i, j, k, l) 满足

福大大架构师每日一题

福大大架构师每日一题

SQL 中的 MIN 和 MAX 以及常见函数详解及示例演示

小万哥

MySQL 数据库 sql 程序员 后端开发

做好数据治理,推动国有企业数据资产化加速落地!

用友BIP

数据治理 数据资产入表

2024年企业软件定制开发必须了解的4大趋势

飞算JavaAI开发助手

数字化转型 企业 定制软件开发 技术服务

以太坊铭文聚合交易平台 Scorpio,铭文爆发的新推手?

股市老人

当前各类厂商纷纷入局低代码赛道,关于低代码未来的发展前景如何?

代码生成器研究

程序员指南|学会与大模型相处,提升个人开发效率

飞算JavaAI开发助手

程序员 软件开发 人工智能「 ChatGPT

2023中关村论坛系列活动——英特尔智能医疗健康创新合作论坛在京成功举办

E科讯

让公有云服务“宁安如梦”的“定心丸”在哪里?

轶天下事

PDF转Word,1行Python代码就够了,免费用

程序员晚枫

Python PDF word 自动化办公

如何打破资产盘点壁垒,用友BIP资产云来支招!

用友BIP

资产盘点

编程新手如何提高编程能力?

代码生成器研究

编程到底难在哪里?

代码生成器研究

AppLink结合金蝶云星空作订单信息同步流程

RestCloud

零代码 APPlink

低代码究竟能干什么?

代码生成器研究

前言 | AI工程化部署

AIWeker

AI AI工程化部署

2023 CCHIO | 共襄盛会,为肿瘤防治创新发展贡献觅健力量

联营汇聚

企业如何选择一款高效的ETL工具

RestCloud

ETL

开源之夏 2023 | Databend 社区项目总结与分享

Databend

Shopify为系统编程提供Rust_开源_Mike Shaver_InfoQ精选文章