Rust 行业应用盘点

Rust 是一门通用的高级系统级编程语言,其应用领域基本可以同时覆盖 C/Cpp/Java/Go/Python 的应用领域。


具体而言,Rust 的应用领域目前覆盖到以下领域:


下面来盘点不同领域内国内外的 Rust 项目。通过提供代码量、团队规模、项目周期相关数据,希望可以让大家对 Rust 领域应用和开发效率能有一个比较直观的认识。

数据服务

数据服务领域,包括了数据库,数据仓储,数据流,大数据,分布式系统等。

TiKV(国内/开源/分布式数据库)

关键字:数据库/ 分布式系统/ CNCF


介绍


TiKV 是一个开源的分布式事务 Key-Value 数据库,专注为下一代数据库提供可靠、高质量、实用的存储架构。最初由 PingCAP 团队在 目前,TiKV 已经在知乎、一点资讯、Shopee、美团、京东云、转转等多行业头部企业得到上线应用。


TiKV 通过 Raft 一致性算法来实现数据多副本之间的一致性,本地采用了 RocksDB 存储引擎存储数据,同时 TiKV 支持数据自动切分和迁移。TiKV 的跨行事务最初参考 Google Percolator 事务模型,并进行了一些优化,提供快照隔离与带锁快照隔离,支持分布式事务。


2018 年 8 月被 CNCF 宣布接纳为沙箱云原生项目,在 2019 年 5 月从沙箱晋级至孵化项目。


代码与团队规模


TiKV 项目 包含 Rust 代码行数大约 30 万行(包含测试代码)。


TiKV 是全球性开源项目,可以从贡献者名单来查看团队规模。TiKV 组织中也包含了一些 Go/Cpp 项目,这个并不算在内,只统计参与 Rust 项目的人力规模。


  • 主力开发:20 人左右。

  • 社区贡献: 300 多人。


项目周期


TiKV 是作为 TiDB 的底层存储跟随 TiDB 演进。TiDB 为 Go 开发,TiKV 为 Rust 开发。


2016 年 1 月作为 TiDB 的底层存储引擎设计并开发 。


2016 年 4 月开源 发布第一版。


2017 年 10 月 16 日,TiDB 发布 GA 版(TiDB 1.0), TiKV 发布 1.0 。


2018 年 4 月 27 日,TiDB 发布 2.0 GA 版, TiKV 发布 2.0 。


2019 年 6 月 28 日,TiDB 发布 3.0 GA 版本, TiKV 发布 3.0 。


2020 年 5 月 28 日,TiDB 发布 4.0 GA 版本, TiKV 发布 4.0。


2021 年 4 月 07 日,TiDB 发布 5.0 GA 版本, TiKV 发布 5.0。


小评


有些朋友可能比较关注 Rust 开发效率如何,并且想对其量化,尤其是想对比 C/ Cpp / Go 等其他语言的开发效率。


私以为量化开发效率是非常困难的,尤其是和其他语言比较的量化。我们不妨换个角度来看这件事,比如,从敏捷项目迭代管理来看这件事。如果一门语言,可以满足日常的敏捷开发迭代需求,可以帮助完成产品的进化,那足以说明这门语言的开发效率了。


据了解,PingCAP 中 Go 开发人员是 Rust 开发人员的四五倍之多,当然工作量也差不多是这样的比例。从上面的数据,我们可以看得出来, Rust 项目(TiKV)依然可以稳步跟得上 Go 项目(TiDB)的迭代节奏,说明 Rust 的开发效率还是足以胜任现代化开发需求。

TensorBase (国内/开源/实时数据仓库)

关键字:实时数据仓库/ 创业/ 天使轮


介绍


TensorBase 是金明剑博士于 2020 年 8 月启动的创业项目,从一个现代的全新视角出发,用开源的文化和方式,重新构建一个 Rust 下的实时数据仓库,服务于这个海量数据时代的数据存储和分析。TensorBase 项目目前已获得世界知名创业投资加速机构的天使轮投资。


代码与团队规模


因为 TensorBase 是构建于 Apache ArrowArrow DataFusion 之上,所以代码统计排除掉这两个项目的依赖。


TensorBase 核心代码行数 54000 多行。


团队规模:


  • 主力开发: 1 人。

  • 社区贡献:13 人。


因为是新项目,开源社区还在建设中。


项目周期


TensorBase 以时间为节奏发版,而非语义版。 迭代周期预计 一年一个大版本,一月一个小版本。


从 2021 年 4 月 20 正式发版,到最近 6 月 16,保持这个节奏。

Timely Dataflow (国外/开源/实时数据流)

关键字:Dataflow/ 分布式系统/创业


介绍


Timely Dataflow基于微软 这篇 Timely Dataflow 论文: 《Naiad: A Timely Dataflow System》的 现代化 Rust 实现。是 clockworks.io 公司的开源产品。


在分布式系统中对流式数据进行复杂的处理,比如多次迭代或者递增计算是非常困难的。Storm, Streaming Spark, MillWheel 都不能很好的适应各种应用复杂的需求。Naiad 通过引入 timestamp 的概念,给出了一个非常 low-level 的模型,可以用来描述任意复杂的流式计算。


dataflow 系统包罗万象,MapReduce,Spark 都可以算是其中代表。Timely dataflow 给出了一个完全基于时间的抽象,统一了流式计算和迭代计算。当你需要对流式数据并行处理且需要迭代控制的时候,可以使用 Timely Dataflow 。


代码与团队规模


Rust 代码量 大约 13000 行。


团队规模:


  • 主力开发:4 人。

  • 社区贡献:30 多人。


项目周期


2017 年 9 月 7 号,0.3.0 版本。


2018 年 6 月 28 号,0.6.0 版本。


2018 年 9 月 16 号,0.7.0 版本。


2018 年 12 月 3 号,0.8.0 版本。


2019 年 3 月 31 号,0.9.0 版本。


2019 年 7 月 10 号,0.10.0 版本。


2021 年 3 月 10 号,0.12.0 版本。


基本上 三个月 出 一个 小版本,除了 Timely Dataflow 之外该团队同时还维护一个构建于 Timely Dataflow 之上的 Differential Dataflow ,和 Timely Dataflow 同步迭代。

Noria (国外/学术研究/开源/数据库)

关键字:数据库/ 学术论文项目


介绍


Noria 是一种新的流式数据流系统,旨在作为基于 MIT  Jon Gjengset博士学位论文的重型 Web 应用程序的快速存储后端,也参考了 OSDI'18 的论文。 它类似于数据库,但支持预计算和缓存关系查询结果,以便加速查询。 Noria 自动将缓存的结果保持为底层数据,存储在持久性基础表中。 Noria 使用部分状态数据流来减少内存开销,并支持动态,运行时数据流和查询更改。


代码与团队规模


Rust 代码行数大约 59000 多行。


团队规模:


  • 主力贡献者:2 人

  • 社区贡献者:21 人


项目周期


因为是个人学术研究项目,所以发布周期没有那么明显。


项目周期 2016 年 7 月 30 ~ 2020 年 4 月 30,一共 5000 多 commit。

Vector (国外/开源/数据管道)

关键字:数据管道/分布式系统/创业


Vector 是 Timer 公司构建的一款高性能的、端到端的(代理和聚合器)可观察性数据管道。它是开源的,比该领域(Logstash、Fluentd 之类)的所有替代方案快 10 倍。目前像 豆瓣、checkbox.ai、fundamentei、BlockFi、Fly.io 等公司使用了 Vector 。 点击此处查看官方性能报告,点击此处查看目前生产环境中使用 Vector 的公司。


代码与团队规模


代码量大约 18 万行 Rust 代码。


团队规模:


  • 主力开发:9 人

  • 社区贡献:140 人


项目周期


2019 年 3 月 22,初始版本发布。


2019 年 6 月 10,0.2.0 版本发布


2019 年 7 月 2,0.3.0 版本发布


2019 年 9 月 25,0.4.0 版本发布


2019 年 10 月 11,0.5.0 版本发布


2019 年 12 月 13,0.6.0 版本发布


2020 年 1 月 12,0.7.0 版本发布


2020 年 2 月 26,0.8.0 版本发布


2020 年 4 月 21,0.9.0 版本发布


2020 年 7 月 23,0.10.0 版本发布


2021 年 3 月 12,0.11.0 ~ 0.12 版本发布


2021 年 4 月 22,0.13.0 版本发布


2021 年 6 月 3,0.14.0 版本发布

Arrow-rs (国外/开源/大数据标准)

关键字: 大数据/数据格式标准/Apach


arrow-rs 是 Apache Arrow 的 Rust 实现。Apache Arrow 是 一种适合异构大数据系统的内存列存数据格式标准。它有一个非常大的愿景:提供内存数据分析 (in-memory analytics) 的开发平台,让数据在异构大数据系统间移动、处理地更快。


Arrow 从 2.0 版本开始引入 Rust ,从 4.0 开始 Rust 实现迁移到了独立仓库 arrow-rs 。


Arrow 的 Rust 实现实际上由几个不同的项目组成,包括以下几个独立 crate 和 库 :


  • arrow,arrow-rs 核心库,包含在 arrow-rs 中。

  • arrow-flight ,arrow-rs 组件之一,包含在 arrow-rs 中。

  • parquet,arrow-rs 组件之一,包含在 arrow-rs 中。在大数据生态内,Parquet 是最为流行的文件存储格式。

  • DataFusion,一个可扩展的内存查询执行引擎,使用 Arrow 作为其格式。

  • Ballista,一个分布式计算平台,由 Apache Arrow 和 DataFusion 驱动,包含在 DataFusion 中。


代码与团队规模


arrow-rs 各相关组件加起来,Rust 代码量 大约 18 万行。


团队规模:


  • 主力开发:大约 10 人

  • 社区贡献: 550 多人


项目周期


项目 DataFusion 在 2016 年就开始构建了,后来进入了 Apache Arrow 项目。


以 arrow-rs 4.0 开始算:


2021 年 4 月 18 ,版本 4.0 发布。


2021 年 5 月 18,版本 4.1 发布。


2021 年 5 月 30, 版本 4.2 发布。


2021 年 6 月 11, 版本 4.3 发布。

InfluxDB IOx (国外/ 开源/时序数据库)

关键字:时序数据库/分布式


InfluxDB IOx,是 InfluxDB 的下一代时序引擎,使用 Rust + Aarow 来重写。


现有设计主要有以下几个致命性问题:


  1. 无法解决时间线膨胀的问题

  2. 在云原生环境下,对内存管理要求比较严格,这意味 mmap 不在适用,而且 InfluxDB 需要支持无本地盘的运行模式

  3. 由于索引与数据分开存储,导致高效的数据导入导出功能难以实现


上述这三个问题都是现有设计的核心之处,因此要想支持现阶段需求,重写是个比较好的选择。


代码与团队规模


InfluxDB IOx 代码量大约是 16 万行 Rust 代码。


团队规模:


  • 主力开发: 5 人

  • 社区贡献: 24 人


项目周期


该项目从 2019 年 11 月开始立项,但截至到今天此项目还非常早期,它还没有准备好进行测试,也没有任何构建或文档。


但是从 GitHub 活动状态来看,开发状态还非常积极。主要的开发工作都是在 2021 年开始的。

CeresDB (国内/商业/时序数据库)

关键字:时序数据库


介绍


CeresDB 是蚂蚁集团研发的一款 TP/AP 融合时序数据库,满足金融时序、监控、IOT 等场景下的海量时序数据的存储、多维查询下钻和实时分析需求。有开源计划,但目前暂未开源。


团队规模


目前数据库开发大约 8-10 个人。


其他信息还未可知。

tantivy (国外/开源/全文检索)

关键字:全文检索/ lucene


tantivy 是一个由 Apache Lucene 启发的全文搜索引擎库,用 Rust 实现。


tantivy 性能卓越,这里有一个基于 Rust + Tantivy + AWS 构建的应用 :提供十亿网页搜索并生成常见单词云


代码及团队规模


代码量大约为 50000 行 Rust 代码。


团队规模:


  • 主力开发:1 人

  • 社区贡献:85 人


项目周期


项目自 2016 年立项,迭代周期为平均一月一个小版本发布,目前发布到 0.15.2 版本。

Rucene (国内/开源/搜索引擎)

关键字:知乎/ lucene


介绍


Rucene 是知乎团队开源的一款基于 Rust 实现的搜索引擎。Rucene 不是完整的应用程序,而是可以轻松用于将完整文本搜索功能添加到应用程序的代码库和 API。它是对 Apache Lucene 6.2.1 项目的 Rust 移植。


代码及团队规模


代码量大约为 10 万 行 Rust 代码。


团队规模:


  • 主力开发: 4 人

  • 社区贡献: 0 人


项目周期


可能因为是公司内部项目开源化,目前没有迭代出具体语义版本。在知乎内是用于生产环境的。

其他一些项目

  • libp2p-rs,是一个模块化和可拓展的网络堆栈,专注于传输协议无关,模块化和可移植编码,最终实现无论设备所处的环境、运行的协议如何,libp2p 都能让设备的互联成为现实。由国内 Netwarps 团队开发,该团队是一个致力于实现去中心化网络和存储技术的创业团队,目标在于使用去中心化技术支撑各类 IOT 应用,以及保障数据安全。基于此目标,Netwarps 开发了去中心化文件存储系统(DFS)和去中心化计算平台(DCP)。

云原生

云原生领域包括:机密计算、Serverless、分布式计算平台、容器、WebAssembly、运维工具等

StratoVirt (国内/开源/容器)

关键字:容器/ 虚拟化/ Serverless


StratoVirt华为 OpenEuler 团队研发的 基于 Rust 的下一代虚拟化平台。


Strato,取自 stratosphere,意指地球大气层中的平流层,大气层可以保护地球不受外界环境侵害,而平流层则是大气层中最稳定的一层;类似的,虚拟化技术是操作系统平台之上的隔离层,既能保护操作系统平台不受上层恶意应用的破坏,又能为正常应用提供稳定可靠的运行环境;以 Strato 入名,寓意为保护 openEuler 平台上业务平稳运行的轻薄保护层。同时,Strato 也承载了项目的愿景与未来: 轻量、灵活、 安全和完整的保护能力。


StratoVirt 是计算产业中面向云数据中心的企业级虚拟化平台,实现了一套架构统一支持虚拟机、容器、Serverless 三种场景,在轻量低噪、软硬协同、安全等方面具备关键技术竞争优势。StratoVirt 在架构设计和接口上预留了组件化拼装的能力和接口,StratoVirt 可以按需灵活组装高级特性直至演化到支持标准虚拟化,在特性需求、应用场景和轻快灵巧之间找到最佳的平衡点。


代码与团队规模


代码量大约是 27000 行 Rust 代码。


团队规模:


  • 主力开发:4 人。

  • 社区贡献:15 人。


项目周期


2020-09-23,发布 0.1.0 版本。


2021-03-25,发布 0.2.0 版本。


2021-05-28 ,发布 0.3.0 版本。

Firecracker (国外/产品)

关键字: 容器/ Serverless/ FaaS


Firecracker 由 AWS 发布并将 firecracker 开源, 它的定位是面向 Serverless 计算业务场景。 Firecracker 本质上是基于 KVM 的轻量级的 microVM, 可以同时支持多租户容器和 FaaS 场景。 Security 和 Fast 是 firecracker 的首要设计目标。 它的设计理念可以概括为:


  • 基于 KVM

  • 精简的设备集(极简主义)

  • 基于 Rust 语言(Builtin Safety)

  • 定制的 guest kernel(快速启动)

  • 优化内存开销(使用 musl c)


Firecracker 使用了极为精简的设备模型(仅有几个关键的模拟设备),目的是减少攻击面已提升安全性。 同时这 irecracker 使用了一个精简的内核(基于 Apline Linux),这使得 Firecracker 可以做在 125ms 内拉起一个虚拟机。 Firecracker 使用 musl libc 而不是 gnu libc,能够将虚拟机的最低内存开销小到 5MB。


代码及团队规模


代码量大约为 75000 多行。


团队规模:


  • 主力开发:7 人

  • 社区贡献:140 人


项目周期


从 2018 年 3 月 5 号 发布 0.1.0 开始,基本上是每个月发一个小版本。


截止到上个月,刚发布了 0.24.0 版本。

Krustlet (国外/产品)

关键字: Kubernetes/ WebAssembly/ 容器


介绍


微软 Deis Labs发布了Krustlet,它是使用 Rust 实现的一种 Kubernetes kubelet。它监听 Kubernetes API,以获取新的 Pod 请求(在集群中运行基于 WASI 的应用程序),只要请求事件与节点选择器是匹配的。因此,要在 Krustlet 节点上运行应用程序,用户可以使用 taints、tolerations 和节点选择器。此外,用户必须为应用程序生成 WebAssembly 二进制文件。如果应用程序是用 C 语言开发的,就用clang,如果应用程序是用 Rust 开发的,就用cargo。然后,用户必须使用wasm-to-oci打包,并将容器镜像推送到容器注册中心。要部署应用程序,用户需要定义一个 Kubernetes 清单,其中包含 tolerations。


目前该项目还未到 1.0,有很多实验性特性,但是它的存在证明了 WebAssembly 在容器方面的应用方向。但现在 微软加入了 字节码联盟 ,该项目也会连同字节码联盟的其他成员,一起发展 WebAssembly,特别是即将到来的 WASI 规范工作和模块链接。


代码及团队规模


代码量大约为 21000 多行。


团队规模:


  • 主力开发: 7 人

  • 社区贡献: 32 人


项目周期


自从 2020 年 4 月 7 日,0.1.0 发布以来,大约每一两个月发布一次新版本,目前发布到 0.7.0 版本。


团队有计划在未来几个月内达到 1.0 版本。

linkerd2-proxy (国外/产品)

关键字: 服务网格/ k8s


介绍


Linkerd 算是 服务网格的鼻祖,但是由于 Linkerd-proxy 运行需要 Java 虚拟机的支持,在启动时间、预热、内存消耗等方面,相比起晚它半年发布的挑战者 Envoy 均处于全面劣势。后来才重写了 Linkerd2 。


Linkerd2 (曾命名为 Conduit) 是 Buoyant 公司推出的下一代轻量级服务网格框架。与 linkerd 不同的是,它专用于 Kubernetes 集群中,并且比 linkerd 更轻量级(基于 Rust 和 Go,没有了 JVM 等大内存的开销),可以以 sidecar 的方式把代理服务跟实际服务的 Pod 运行在一起(这点跟 Istio 类似)。


linkerd2-proxy 是 Linkerd2 中的底层代理。代理可以说是服务网格中最关键的组件。它可以随应用程序的部署而扩展,因此低附加延迟和低资源消耗至关重要。它也是处理应用程序所有敏感数据的地方,因此安全性至关重要。如果代理速度慢、臃肿或不安全,那么服务网格也是如此。使用 Rust 重写后,Linkerd2-proxy的性能与资源消耗方面都已不输 Envoy。


Rust 是 Linkerd2-proxy 的唯一选择。它提供了闪电般的性能、可预见的低延迟和我们知道服务网格代理需要的安全属性。它还提供了现代语言特性,如模式匹配和富有表现力的静态类型系统,以及工具,如内置的测试框架和包管理器,使在其中编程变得非常愉快。


Linkerd2-proxy 构建在 Rust 异步生态之上,使用了Tokio, Hyper, and Tower 等框架和库。


代码及团队规模


代码量大约为 43000 多行。


团队规模:


  • 主力开发:3 人。

  • 社区贡献:37 人。


项目周期


目前该项目已经是 V2.148.0 版本。发布周期大约是每周一个小版本。

Lucet (国外/产品)

关键字: Faas/ Serverless/ WebAssembly / Compiler


Lucet 是一个本机 Webassembly 编译器和运行时。 它旨在安全地在您的应用程序内执行不受信任的 WebasseMbly 程序。由 Fastly 公司开发,属于 字节码联盟 的子项目。Fastly 于 2020 年从 Mozilla 招募了 WebAssembly Server side 团队,目前 lucet 团队已经和 wasmtime 团队合并。


Fastly 庞大的 CDN 业务催生了它们进军边缘计算的想法,并逐渐成为其中最具竞争力和投入度最高的头部公司。


关于边缘计算,另外一家头部公司是 Cloudflare(NET.US)。从技术角度看,Fastly 和 Cloudflare 在其无服务器边缘计算解决方案中采用了两种不同的方法。


Cloudflare 选择在 Chromium V8 引擎上构建其解决方案。这使得他们可以利用 Google(GOOG.US) Chrome 团队已经完成的工作,在 2018 年便将边缘计算产品快速推向市场。


这是对当时由云供应商(如 Amazon(AMZN.US) Lambda)提供的无服务器解决方案的重大改进。Cloudflare 的工作者将冷启动时间减少了 100 倍,进入到毫秒阶段。并将内存使用量减少了 10 倍,从而可以更有效地利用硬件资源。


但 Fastly 决定不依赖现有技术来进行无服务器计算,例如可重复使用的容器或 V8 引擎,而是决定全心投入 WebAssembly,并构建了自己的 Lucet 编译器和运行时,对性能、安全性和紧凑性进行了优化。


自 2017 年以来,Fastly 一直在幕后进行这项工作,它为 Compute@Edge 产品线提供了坚实的基础,该平台现在为多个客户运行生产代码。


Lucet 将 WebAssembly 编译为快速、有效的二进制文件以便执行,还可以通过内存分配来增强安全性,并且不会从先前的请求中产生任何残留。Lucet 还包括一个经过严格优化的简化运行时环境,Fastly 团队在该环境上花费了大部分开发时间。结果获得了比 V8 引擎更好的性能。


Fastly 冷启动时间完全进入微秒级别--官方宣称为 35 微秒。这至少比 V8 引擎快 100 倍,后者需要 3-5 毫秒才能启动(3,000 到 5,000 微秒)。


同样,由于 Lucet 仅包含运行已编译的汇编代码所需的代码模块,因此它只需要几千字节的内存。这大约是 V8 引擎使用的 3MB 的千分之一。


代码与团队规模


lucet 代码量为 29000 多行, wasmtime 总代码量为 27 万多行。


团队规模:


  • 主力开发 : 16 人。

  • 社区贡献:200 多人 (wasmtime 贡献者居多)


项目周期


lucet 目前进入维护期,wasmtime 在高速重构。


评价迭代周期为 每个月发一个小版本。

wasmcloud (国外/开源/产品)

关键字: WebAssembly/ 分布式计算


介绍


WasmCloud 运行时可以用于云、浏览器和嵌入式等场景。wasmcloud 是一个基于 WebAssembly 的分布式计算平台。比较有创新的地方在于,它制定了一个 waPC 标准,用于 Guest 和 Host 的安全过程调用,来解决当前 WASI 等特性不完善的问题。


代码及团队规模


代码量大约为 11000 多行 Rust 代码。


团队规模:


  • 主力开发:2 人。

  • 社区贡献:11 人。


项目周期


该项目从 2021 年 2 月 17 启动,迭代周期大约是每两周一个小版本。

Habitat (国外/开源/运维工具)

关键字:Chef/ DevOps/ 运维工具


介绍


Habitat 让应用团队能够在任何环境中构建、部署、管理任何应用 ,不管是传统的数据中心,还是容器化的微服务。


  • “Lift & Shift” 遗留应用到现代平台 。把已有的、对商业至关重要的应用迁移到现代平台上对许多机构来说 是一个痛点。

  • 通过云原生(云、容器)的策略来交付 应用 。许多机构在移居和部署云原生平台的 过程中备受阻碍。


特点:


  1. Habitat 把管理界面和应用构建在一起,使得自 动化更加简便。

  2. Habitat Operator:让你的所有应用仅需一个 Kubernetes Operator,不需 要每个应用都有特制的 Operator。

  3. 不管你的应用在不在 Kubernetes 上,Habitat 的 Open Service Broker 都能通过 Kubernetes 的原生界面让它们共存。


代码及团队规模


代码量大约为 74000 行 Rust 代码。


团队规模:


  • 主力开发:5 人。

  • 社区贡献:140 人


项目周期


迭代周期为每周一个小版本,目前版本为 1.6.342。

其他一些项目

  • DatenLord 是用 Rust 实现的新一代开源分布式存储,面向云原生场景提供高性能存储解决方案。为了提高 IO 性能,DatenLord 采用绕过内核 (bypass Kernel) 的方式,主要在用户态实现 IO 功能,避免内核执行 IO 任务带来的额外开销,从而实现高性能分布式存储。Datenlord 是国内创业团队,点此查看更多信息。

  • Datafuse,是一种实时数据处理和分析 DBMS,基于 Apache Arrow-rs 开发,受 ClickHouse 启发。该项目属于 Datafuse labs,是由中国开发者领头的项目,但不清楚公司是在国内还是国外。

操作系统

操作系统领域包括使用 Rust 实现的各种操作系统。

Rust for Linux (国外/ Rust 进入 Linux 支持项目 )

关键字: Linux


介绍


Rust for Linux 项目旨在推动 Rust 成为 Linux 内核第二编程语言。


Linux 内核是现代互联网的核心,从服务器到客户端设备。它处于处理网络数据和其他形式的输入的第一线。因此,Linux 内核中的漏洞会产生广泛的影响,使人们、组织和设备的安全和隐私面临风险。由于它主要是用 C 语言编写的,而 C 语言不是内存安全的,所以内存安全漏洞,如缓冲区溢出和使用后赋值,是一个持续的问题。通过使 Linux 内核的部分内容用 Rust 语言编写成为可能,这是内存安全的,我们可以完全消除某些组件的内存安全漏洞,比如驱动程序。


当前进展:Google 赞助 且 由 ISRG 组织雇佣 Miguel Ojeda (核心开发),让他全职从事 Rust for Linux 和其他安全工作,为期一年。希望能通过让他全职从事这项工作,为支持数字基础设施尽一份力。


团队规模


核心开发: 1 ~ 6 人。


暂未有其他信息。

Coreutils

关键字: GNU/ Shell/ Rust for Linux


介绍


Coreutils 是 GNU Shell 的核心实用程序的 Rust 实现。


代码及团队规模


代码量大约为 77000 行 Rust 代码。


团队规模:


  • 主力开发:8 人

  • 社区贡献:250 人


项目周期


项目于 2020 年底启动,迭代周期平均一月一个小版本,目前 0.0.6 版本。目前状态,足以通过 GNOME 启动 Debian 系统。

Occulum (国内/开源/TEE 库操作系统)

关键字: 机密计算/ 可信计算/  TEE / 库操作系统


Occulum 是蚂蚁开源的 TEE 操作系统,也是 CCC 机密计算联盟中第一个由中国公司发起的开源项目。


Occlum 提供 POSIX 编程接口,支持多种主流语言(C/C++, Java, Python, Go, Rust 等),支持多种安全文件系统。可以说,Occlum 提供了一个兼容 Linux 的 Enclave 运行环境,使得机密计算可以轻松支持已有的应用,也使得机密应用开发者复用原有开发技能。Occlum 不但在工业界场景中得到了广泛的应用,而且也在系统顶会 ASPLOS 2020 发表了学术论文,代表了机密计算业界的领先水平。


从架构上来看,Occlum 不但提供基本的类似 Linux 的操作系统能力,而且提供一个类似 Docker 的用户使用接口,比如这里的 Occlum build 和 Occlum run 等都跟 docker 的命令类似。


代码与团队规模:


Occulum 代码量大约  28000 多行。


团队规模:


  • 主力开发: 5 人。

  • 社区贡献:22 人。


项目周期


迭代周期是每六周发一个新版。

rCore 和 zCore (国内/ 教育/ 学术/ 开源/ 操作系统)

关键字: 清华大学/ rCore/ zCore/ 操作系统/ 教学


介绍


rCore 是用 Rust 重新实现的 Linux 内核,诞生于 2018 年,目前已在清华计算机系的操作系统教学实验中试点应用。


zCore 是用 Rust 语言重新实现的 Zircon (Google Fuchsia OS 的微内核)微内核。它运行在内核态,对外提供与 Zircon 完全相同的系统调用,因此能够运行原生的 Fuchsia 用户程序。不仅如此,它还可以作为一个普通的用户进程运行在 Linux 或 macOS 的用户态,我们一般把这种模式称为 LibOS 或 User-Mode OS。你甚至无需安装 QEMU 模拟器,只需装上 Rust 官方工具链,就可以编译运行体验 zCore!


一些相关学习资源:



代码及团队规模


rCore 代码量大约为  26000 行 Rust 代码,zCore 代码量大约为 27000 行 Rust 代码。


团队规模:


  • 主力开发:3~5 人

  • 社区贡献:30 人左右


项目周期


两个项目都已进入维护期,没有对外发布版本。

Redox (国外/ 开源/ 操作系统)

关键字:操作系统


介绍


Redox 是一个用Rust语言编写的类 UNIX 操作系统 , 它的目标是把 Rust 语言的创新带入到一个现代的微内核和全系列的应用程序。Redox 幕后公司应该是 System 76 公司。主要项目放在 GitLab 中。


代码及团队开发


代码量目前大约为 134 万行 Rust 代码,算得上是 Rust 生态中重量级项目了。


团队规模:


  • 主力开发: 21 人

  • 社区贡献:79 人。


项目周期


Redox 从 2016 年开始立项,直到 2017 年 0.3 版本开始,每年发布一个小版本,到今年已经发布到 0.5 版本。

tockOS (国外/开源/嵌入式实时操作系统)

关键字:嵌入式操作系统/实时


介绍


Tock 是一个嵌入式操作系统,设计用于在基于 Cortex-M 和 RISC-V 的嵌入式平台上运行多个并发的、互不信任的应用程序。Tock 的设计以保护为中心,既可以防止潜在的恶意应用程序,也可以防止设备驱动程序。Tock 使用两种机制来保护操作系统的不同组件。首先,内核和设备驱动程序是用 Rust 编写的,Rust 是一种提供 compile-time 内存安全、类型安全和严格别名的系统编程语言。Tock 使用 Rust 来保护内核(例如调度程序和硬件抽象层)不受特定于平台的设备驱动程序的影响,并将设备驱动程序彼此隔离。其次,Tock 使用内存保护单元将应用程序彼此和内核隔离开来。


Google 发布的这个 OpenSK 是跑在 Tock 上面的!OpenSK 是用 Rust 编写的安全密钥的开源实现,该密钥同时支持 FIDO U2F 和 FIDO2 标准。


代码及团队规模


代码量大约为 15 万 行 Rust 代码。


团队规模:


  • 主力开发:4 人。

  • 社区贡献:123 人。


项目周期


该项目目前已进入维护期。


目前 1.6 版本发布,以往迭代周期大概是每半年发布一个小版本。