社区热门

Rust 官方正在讨论 为 Rust 供给 interoperable_abi features gate

interoperable_abi 意味着供给一个新的 Rust ABI extern “interop” 和 repr(interop) ,用于完成有安全数据 类型的高档编程言语之间的互操作性。

Rust 视界 2023 丨周刊 Week 1

动机摘要:

现在 Rust ABI 并不安稳,多言语交互只能通过 C-ABI 来进行。可是这限制了在 ABI 之间运用更高档的安全类型。可互操作的 ABI 将界说一种规范方法来跨高档言语进行调用,传递高档数据类型,而不需求将其降级为 C-ABI。该 ABI 将与任何供给 C 兼容 FFI 的言语(包含 C自身),而且言语还可认为可互操作的 ABI 增加特定的更高档别的支撑。可互操作的 ABI 旨在成为 静态和动态方式的编译库(包含体系库)的合理默认值。

可互操作的 ABI 将是 C ABI 的严厉超集。

可互操作 ABI 不支撑的内容摘要:

  • 可互操作的 ABI 并不旨在支撑整个Rust 规范库.
  • 可互操作的 ABI 不会旨在支撑复杂的生命周期处理
  • 可互操作的 ABI(至少在第一个版别中)不会以源代码或编译方式供给接口描绘言语(IDL)
  • 可互操作的 ABI 的目的不是在不同言语的表明之间供给“翻译”
  • 可互操作的 ABI 不能支撑恣意的编译时泛型函数

GCC-rs 项目在 2022 年取得了很大进展

gccrs是一个旨在为 GNU Compiler Collection 带来对 Rust编程言语的支撑的项目。其方针是从头开始为 Rust 编程言语编写一个新的编译器前端,将该前端集成到 GCC 中,使其作为一种言语与 C、C++、Ada、D、Go 一起运用。

该项目开始于 2014 年发动。其时,Rust 没有完成安稳版别(Rust 1.0 于 2015 年 5 月发布),关于单个开发人员来说很难跟上高强度的改变。2019年又开始努力,此后一直在稳步进行。

2020 年,菲利普赫伦 ( Philip Herron )开始取得资金支撑,随后他得以开始全职从事该项目。此赞助来自 Open Source Security公司。Philip 受雇于 Embecosm 并从他们的管理中受益,并得到 GCC 指导委员会的支撑。2022 年,在将近一年半的单飞之后,Philip 加入了另一位由 Open Source Security 公司资助的全职工程师 Arthur Cohen ,也受雇于 Embecosm。现在有两名工程师每周为该项目投入 40 小时。

2022 年发生的最引人注目的事件是将 gccrs 合并到 GCC,gccrs 将在 2023 年 4 月发布的 GCC 13.1 版别中可用。

更多内容参考 gccrs 2022 年报

P.S 与 gccrs 对应的是另一个项目 rustc_codegen_gcc。它是作为 Rust 编译器 GCC 后端,现在也正在活跃开发中,感兴趣能够重视rustc_codegen_gcc:进展陈述#19。

用 Rust 和 C++ 代码编译时刻相同糟糕吗?

原文作者写道:

C++ 因其缓慢的构建时刻而臭名远扬。“我的代码正在编译”是编程世界中的一个梗,而 C++ 让这个笑话流传开来。

Rust 视界 2023 丨周刊 Week 1

像 Google Chromium 这样的项目 在全新硬件上构建需求一个小时,在旧硬件上构建需求 6 小时。即使有数千美元的云计算才能,Chromium 构建时刻仍然在六分钟左右。这是我彻底不能接受的。人怎么能够每天这样工作?

作者也听说,Rust 也面对相同的问题,但他有实证精力,亲自动手证明一下 Rust 是不是和 Cpp 相同很慢。

这是他的计划:

  • 查找开源 C++ 项目。
  • 从项目中提取一部分为迷你项目中。
  • 将 C++ 迷你项目的代码逐行重写为 Rust。
  • 优化 C++ 项目和 Rust 项目的构建工具链。
  • 比较两个项目之间的编译+测验时刻。

通过这样的测验,作者得出终究结论:

  • 编译时刻是 Rust 的问题吗?是的。有一些提示和技巧能够加速构建速度,但作者没有找到神奇的数量级改善,否则作者将很高兴运用 Rust 进行开发。
  • Rust 的构建时刻和 C++ 相同糟糕吗?是的。关于更大的项目,Rust 的开发编译时刻比 C++ 更短,至少作者的代码风格是这样。
  • 关于完好构建,C++ 构建花费的时刻与 Rust 比较,大致相同(17k SLOC)或花费更少的时刻(100k+ SLOC),而不是更长。
  • 关于增量构建,与 C++ 比较,Rust 构建有时更短,有时更长(17k SLOC)或更长(100k+ SLOC),但并不总是更长。
  • 很欣赏 Rust 的工具链(尤其是 Cargo、rustup 和 miri)。

应用实践

Gama 发射的太阳帆宇宙飞船中运用了 Rust

Gama 将发射太阳帆宇宙飞船️,而且是揭露将 Rust 送入太空的公司之一。供给软件服务的应该是这家公司:Tweedegolf ,该公司也是 Rust 基金会银牌会员。他们的开源仓库里有一个 Rust 完成的 PTP (准确时刻协议) 库,这个PTP一般用在卫星的时刻源,比NTP更准确。但这个是 PoC 完成,不知道这次发射的飞船上有没有用。从别的的项目 嵌入式开发板 pcf85063a (一般用于计时闹钟)rust 驱动来看,这次上天的 Rust 程序很可能和准确计时相关。

Gama 太阳帆的卫星于 2023 年 1 月 3 日由 SpaceX 猎鹰 9 号成功送入轨迹。

生态亮点

svix-webhooks: 企业级 Webhooks 服务

svix-webhooks 是基于 Rust 完成的企业级 Webhooks 服务器。Svix 使开发人员能够轻松发送 webhook。开发人员进行一次 API 调用,Svix 负责可交给性、重试、安全性等。

turmoil:开发和测验分布式体系的结构

Tokio 发布了用于开发和测验分布式体系的结构 turmoil 的初始版别。

测验分布式体系很难。不确定性无处不在(网络、时刻、线程等),使得难以完成可重现的成果。因为布置,开发周期很长。所有这些因素都会减慢开发速度,而且难以保证体系的正确性。turmoil力求通过模仿主机、时刻和网络来解决这些问题。这允许整个分布式体系在单个线程的单个进程中运转,然后完成确定性执行。

cargo-sandbox 发布

cargo-sandbox 计划成为 cargo 的一个近乎直接的替代品。关键的差异在于,cargo-sandbox 在 docker 容器中运转相关命令,目的是将潜在的恶意代码与主机环境的阻隔开来(关于威胁模型的更多细节,见README)。 其方针是尽可能地挨近 “100%”的兼容原版 cargo,并取得最顺畅的体验。

Rust 中的深度学习:Burn 0.4.0 发布以及 2023 年的规划

Rust 深度学习结构Burn 0.4 完成了后端重构,除此之外,还完成了很多新的功能,如ADAM优化器、转化器模块等。下一个重点将是增加视觉相关的模块,如卷积和池化层。

shura-一个安全的2D 游戏引擎,易于创建易于管理的游戏

shura 是rust编写的一个安全,快速而且跨平台的游戏结构。shura运用一个2D组件体系、场景管理和group体系帮你管理一个大型游戏。

shura主要的方针是,你的游戏逻辑能够别离放在不同的组件、group和场景中。

rumqtt: 构建 mqtt 的 Rust 生态

rumqtt 是一组用 rust-lang 编写的开源库,用于完成 MQTT 规范,一起力求简单、健壮和高性能。

rumqtt 是 Bytebeam 物联网咨询公司开源的 MQTT 署理。rumqtt 现在版别现已发布到了 R19 版,并未按语义化版别来发布。

现在发布了 R19 新版别:

  • 新的版别提升了性能和可靠性(能够支撑 多达10,000 多个 MQTT 客户端,运用 mqttwrk 进行基准测验)
  • 增加了一个用于测验 rumqttd 的公共服务器
  • 增加了 Prometheus 集成和其他优化更改
  • 加了对存储支撑的持久性的实验性支撑,以保证消息的零数据丢掉

rumqtt 将在 2023 年头推出对 MQTT v5 的支撑。

P.S 别的一个纯 Rust MQTT v5 客户端完成 mqrstt