https://rust-dd.com/post/rust-2024-wrap-up-biggest-changes-and-future-outlook
Rust-DD 博客 – 技术洞察与咨询 阅读时间:19-24分钟
2024 年是 Rust 语言发展的重要一年。生态系统持续增长,语言本身取得了重大改进,社区也保持了高度活跃。本文将回顾这一年的主要亮点,从 Rust 1.75 的发布到在人工智能、嵌入式系统和 WebAssembly 领域的激动人心的项目。我们还将介绍主要的会议演讲、新工具、关键的 GitHub 仓库以及这一快速成长的语言的未来方向。
语言和工具链的演进 Rust 1.75 及以后
这一年始于 Rust 1.75 的发布(官方博客),它带来了几个小但有帮助的改进。后续的更新继续精炼这些功能,使部分实验性的功能稳定化,并回应了社区的需求。主要目标保持不变:让 Rust 对开发者来说更简单、更高效。
异步 Rust 的改进
2024年,异步 Rust 生态系统取得了重大进展,继续完善 Rust 最具影响力的特性之一。开发者们专注于简化错误处理,使异步代码更易于编写、阅读和调试。这些改进旨在减少冗余代码,并为处理异步工作流提供更清洁的语法,这在现代 Rust 应用中越来越普遍。
关于异步函数在特征中的使用,社区长期以来一直请求的特性也进行了讨论。这一增强旨在为异步特征方法带来更多力量和灵活性,为异步抽象提供更清洁、更易用的设计。
此外,在 Rust 1.85.0 的 nightly 中,异步闭包现在得到了原生支持(更多详情见此处)。这一功能允许开发者直接在闭包中使用 async 关键字,简化了在 map、filter 或迭代器适配器等功能模式中嵌入异步行为的场景。
常量泛型的进展
常量泛型的工作持续进行,帮助进行更高级的编译时计算和编写更具表达性的代码——特别是在数组处理和其他数据结构中。这一功能为 Rust 的编译时能力开启了新的可能性。
类型系统的改进
Rust 的类型系统也得到了提升。一些改进类型推断和简化复杂泛型代码的特性已经稳定。预计在即将发布的版本中会有更多增强,使语言更流畅、更愉快地使用。
生态系统的增长和关键项目 Rust 用于 AI/ML
2024年,Rust 在人工智能和机器学习(ML)领域继续确立了自己的地位,提供了性能、内存安全性和低级控制的强大组合。其不断增长的生态系统在构建 AI 框架、部署大型语言模型(LLM)以及开发实时推理和检索增强生成(RAG)系统的高性能系统方面证明了其价值。
一个重要的里程碑是 Rust-GPU 从 Embark Studios 过渡到社区,促进了更广泛的合作和 GPU 加速 AI 任务的长期可持续性。像 Candle 和 Burn 这样的框架引领了潮流,Candle 在轻量级 AI 模型部署上表现出色,而 Burn 提供了用于训练和服务神经网络的灵活、可扩展的架构。与此同时,tch-rs 提供了无缝的 PyTorch(LibTorch)绑定,TensorFlow 绑定也在持续改进。
mistral.rs 的崛起,一个优化的 LLM 库,标志着一个转折点。它在推理效率上超过了 llama.cpp,并支持包括 Llama、Qwen、Mixtral 和 Gemma 等模型,使其成为聊机器人和多模态 AI 应用的首选工具。
在科学计算中,像 ndarray 和 nalgebra 这样的库对于张量操作和线性代数任务仍然不可或缺。opencv-rust 带来了实时图像处理的强大支持,而 similari-rs 则通过如 DeepSORT 等算法提供了强大的对象跟踪功能。
在基础设施方面,Qdrant 作为一个高性能矢量数据库,成为了 RAG 工作流的核心,推动了推荐系统和 AI 搜索引擎的发展。SurrealDB 作为一个多模型数据库,填补了数据库管理和 AI 工作流之间的空白,能够高效处理结构化和非结构化数据。
Rust 与 WebAssembly(Wasm)的日益融合使得 AI 部署扩展到了边缘设备、浏览器和移动平台。这使得 Rust 不仅仅是后端推理系统的首选,而且也适合轻量级的客户端 AI 任务。
在 2024 年,Rust 从 AI 的实验语言转变为一个生产就绪、可扩展的生态系统。通过如 Candle、Burn 和 mistral.rs 这样的框架,加上像 ndarray、opencv-rust 和 similari-rs 这样的库,Rust 为尖端的 AI 研究和部署提供了所需的工具。其安全性、速度和多功能性的独特组合使其在 AI 和 ML 技术的演进中扮演着越来越核心的角色。
嵌入式系统:大规模的安全性与性能
Rust 在嵌入式系统中继续掀起波澜,嵌入式 HAL v1.0 的稳定化是个重要标志。更多硬件供应商开始支持 Rust,调试和部署工具变得更为可靠。社区探索了新的平台和使用案例,实验性的操作系统如 Maestro OS 展现了 Rust 在低级系统编程中的适用性。此外,继续努力扩展 Rust 在嵌入式 Linux 内核中的角色,来自独立开发者和大型企业的贡献都在增长。
WebAssembly(Wasm)和 Rust WebAssembly 生态系统:WASM、WASI 和工具
2024年,Rust 继续确立自己在网页开发和 WebAssembly(Wasm)中的主导地位,推动了前端框架和服务器端渲染(SSR)解决方案的发展。工具如 wasm-pack 和 wasm-bindgen 继续发展,简化了将 Rust 库打包成 WebAssembly 模块并与 JavaScript 应用无缝集成的过程。与此同时,WASI(WebAssembly System Interface)为 WebAssembly 应用提供了与操作系统交互的标准接口,将 Wasm 的应用范围从浏览器扩展到服务器端和边缘计算环境。
今年的一项关键创新是 JCO(JavaScript Core Optimized)的引入,这是一个为简化 Wasm 模块在 JavaScript 环境中集成的原生 JavaScript-WebAssembly 工具链。JCO 使构建、部署和管理 WebAssembly 组件在大规模 JavaScript 应用中变得更加容易,提供了改进的构建速度和增强的性能优化。
基于 Rust 的 Web 框架:前端与后端的桥梁
Rust 的 Web 开发生态系统蓬勃发展,Dioxus、Leptos 和 Yew 等框架获得了广泛采用。这些框架为前端开发带来了高性能、舒适的解决方案,同时与像 Axum 和 Actix Web 这样的 Rust 服务器无缝集成,用于服务器端渲染(SSR)和静态站点生成(SSG)。
Dioxus 作为一个强大的类似 React 的前端框架出现,提供了一种声明式的 UI 模型、细粒度的反应系统和跨平台支持(网页、桌面和移动)。今年推出的一个亮点功能是热状态重载,它允许开发者通过利用新的 Wasm 二进制补丁机制,在重新编译过程中保留应用状态。 Yew,另一个受 React 启发的框架,在组件生命周期管理和状态管理工具方面不断成熟。以其高效利用 Rust 的并发模型和与 WebAssembly 的集成为特色,Yew 成为了构建复杂单页面应用(SPAs)的首选选择,最大限度地减少了运行时开销。 Leptos 与 Dioxus 和 Yew 不同,它采用了基于信号的反应式方法,最小化不必要的重新渲染,改善了高度动态应用的性能。Leptos 提供了对 SSR(服务器端渲染)、SSG(静态站点生成)和边缘部署的内置支持,定位为与 Next.js 和 Nuxt.js 这样的 JavaScript 框架竞争的强大竞争者。
服务器端渲染(SSR)和全栈 Rust
2024年最令人兴奋的趋势之一是前端框架(Dioxus、Yew、Leptos)与高性能后端 Web 服务器(Axum、Actix Web)的融合。这使得无缝的服务器端渲染工作流成为可能,减少了初始加载时间并改善了 Rust 驱动的 Web 应用的 SEO。
Axum 和 Actix Web 成为了后端 API 和 SSR 工作负载的首选选择,提供了低延迟路由、有效的状态管理以及与异步 Rust 运行时如 Tokio 的深度集成。 Leptos 和 Dioxus 充分利用了这些后端功能,允许开发者在服务器上渲染组件,有效地流式传输更新给客户端,并减少客户端 JavaScript 的膨胀。 Dioxus 和 Leptos 中的热重载支持允许开发者快速迭代而无需经历完整重建,而 Dioxus 的实验性二进制补丁热重载则推动了迭代 Web 开发的可能性边界。
这些框架和后端服务的结合,提供了与开发者从 Next.js 和 Nuxt.js 等工具中期待的体验相似的体验,但带有 Rust 特有的优势:内存安全性、高性能和强类型系统。
全栈 Rust 应用:WASM 在边缘
随着 WASI 变得更加标准化和广泛采用,Rust 驱动的 WebAssembly 应用开始超越浏览器。像 Cloudflare Workers、AWS Lambda@Edge 和 Fastly Compute@Edge 这样的平台提供了直接将 Rust+Wasm 模块部署到边缘的原生支持,使低延迟应用和无服务器部署成为可能。
Leptos 和 Dioxus 开始提供用于边缘部署的模板和集成,允许开发者构建具有最小延迟和最大可移植性的全栈应用。 优化用于 AI 和搜索工作负载的 Qdrant 向量数据库,以及具有原生 Rust 支持的 SurrealDB 多模型数据库,常与 WebAssembly 应用配对,支持数据驱动的边缘架构。
跨平台开发
在 2024 年,Rust 巩固了其作为跨平台应用开发的强大工具的地位,填补了桌面、移动和 Web 环境之间的鸿沟。得益于其性能、安全性和小型二进制文件,Rust 成为了针对多种平台的首选后端和逻辑层。
Tauri v2 在这一领域成为关键玩家,轻松支持桌面(Windows、macOS、Linux)和移动平台(iOS、Android)。Tauri 的架构允许开发者将 Rust 后端与前端技术如 React、Leptos 或 Dioxus 配对,创建轻量、性能高且资源消耗低的应用。它的重点在于小型二进制文件和以安全为先的原则,使其成为构建现代跨平台应用的 Electron 的吸引人替代品。
如 Dioxus 和 Xilem 这样的框架扩展了它们对跨平台渲染的支持,引入类 Flutter 的功能和自己的自定义渲染引擎。这些引擎确保了在不同操作系统上的性能一致性和原生般的体验,使开发者能够构建在每个平台上都感到舒适的界面。
在移动开发方面,像 flutter-rust-bridge 和 Rinf 这样的工具提供了将 Rust 代码无缝集成到 Flutter 应用中的简便方式。这些桥接允许开发者用 Rust 编写性能关键的组件,同时利用 Flutter 的广泛 UI 工具包用于移动界面。同样,uniffi-bindgen-react-native 赋予了开发者在 Rust 中创建 React Native turbo-modules 的能力,无缝混合了 Rust 的后端能力和 React Native 的移动 UI 框架。
这种前端技术、跨平台渲染引擎和高效 Rust 后端的融合为开发者解锁了新的可能性。不管是针对移动、桌面还是嵌入式平台,Rust 都在安全性、速度和多功能性方面兑现了其承诺,为未来跨平台开发感觉无缝、一致和高性能奠定了基础。
游戏开发
在 2024 年,Rust 在游戏开发中巩固了其地位,成为独立和大规模项目中的首选。它的生态系统蓬勃发展,得益于游戏引擎、物理库和工具的进步,强调安全性、并发性和性能。
Bevy 引擎继续是亮点,版本 0.13.0、0.14.0 和 0.15.0 引入了 ECS 性能、GPU 资源管理和跨平台支持的改进。在庆祝其 4 周年之际,Bevy 还成立了 Bevy 基金会以确保长期治理和发展。
对于偏好场景式引擎的开发者,Fyrox 0.34.0 提供了物理模拟、场景图表性能和编辑器可用性的增强,使其成为原型设计和生产的理想选择。
与此同时,Godot 的 Rust 集成继续成熟,提供了稳定的绑定和扩展插件生态系统,用于资产流和多人在线网络。
物理引擎扮演了关键角色,Rapier Physics 在碰撞检测和线程化模拟中表现出色,而 Avian Physics 作为 2D 和 3D 移动项目的轻量级选择脱颖而出。
Rust 的工具生态系统也得到了改进,提供了更好的跨平台构建工具链、增强的性能分析工具和不断增长的社区插件和资产库。
社区参与通过游戏开发马拉松(如 itch.io)、在线论坛(如 Rust GameDev 工作组)和活跃的开源文化蓬勃发展,降低了新人的进入门槛。
到年底,Rust 在游戏开发中不再只是一个实验,而是成为了生产就绪的选择,提供了尖端的性能、强大的工具和准备好应对现代游戏开发挑战的增长中的社区。
Rust Web 服务器:高性能、异步、可扩展
在 2024 年,Rust 保持了其作为构建高性能、可靠和安全 Web 服务器的最佳语言之一的声誉,提供了适合小型微服务到大型分布式后端系统的库和框架。生态系统充满了多样的 Web 服务器、ORM 和异步运行时,Actix Web 和 Axum 作为大多数开发者的首选框架脱颖而出。
Actix Web 和 Axum:Rust Web 开发的巨人
Actix Web 和 Axum,均构建在 Tokio 异步运行时之上,主导了 Rust Web 服务器的景观。这两个框架结合了异步执行、低延迟处理和高可扩展性,使其适用于从简单的 API 到庞大的分布式系统。
Actix Web 以其卓越的速度和高吞吐量而闻名,在基准测试中一直排名最快的 Web 框架之一。 Axum 以其与 Tower 生态系统的深度集成为特色,提供了中间件兼容性和清洁、模块化的设计。
这两个框架都受益于 Rust 的强类型和安全保证,显著降低了生产系统中运行时错误和未定义行为的风险。
Tokio:驱动 Rust Web 服务器的异步运行时
在这些 Web 框架的核心是 Tokio,Rust 的旗舰异步运行时。Tokio 的高效任务调度和并发模型使其成为处理网络绑定工作负载的理想基础,如 HTTP 服务器、数据库连接和后台任务。
ORM 和数据库抽象:Diesel 和 SeaORM
Rust 后端 Web 服务器经常与健壮的 ORM 配对进行数据库交互:
Diesel:一个强类型 SQL 查询构建器和 ORM,重在编译时安全和性能。 SeaORM:一个专为 Rust 异步生态系统设计的现代异步 ORM,与 Axum 和 Actix Web 顺利集成。
其他值得注意的 Rust Web 服务器
虽然 Actix 和 Axum 领先,但还有几个其他 Web 框架继续服务于特定领域:
Rocket:以其易用的 API 和类型安全路由而闻名。 Warp:基于 Tokion 的 Web 框架,强调基于过滤器的路由。 Salvo:一个基于 Tokio 和 hyper 构建的新框架,设计用于可扩展性和灵活性。 Poem:一个基于 Tokio 和 Tower 的优雅且表达力强的框架。
Tower 生态系统:Axum 和其他应用的纽带
Axum 之所以出色,部分原因在于它与 Tower 生态系统的无缝集成,这是一个为异步 Rust 服务设计的可组合中间件和工具集。Tower 提供了可重用的中间件组件用于:
认证和授权 请求/响应日志 负载平衡 超时管理
为什么 Actix 和 Axum 领跑
虽然像 Rocket、Warp 和 Salvo 这样的框架很好地服务于各自的受众,但 Actix Web 和 Axum 继续主导是因为它们提供了:
Tokio 运行时集成 Tower 中间件兼容性 性能领导地位 可扩展性 社区和生态系统支持
关键演讲和会议 RustConf 2024
今年最大的 Rust 会议,RustConf,涵盖了高级主题、社区更新和真实世界的 Rust 应用。许多演讲集中在使用 Rust 于性能关键领域如 Web 服务器和科学计算。(目前大多数演讲尚未公开可用。)
其他地区性的 Rust 聚会和会议
2024年举办了各种区域性和线上的 Rust 会议和聚会,将开发者聚集在一起分享新项目、最佳实践和共同挑战。Rust Nation UK 是其中的一个亮点。
主题演讲亮点
不同活动的演讲者强调了社区合作的重要性,Rust 构建可靠系统的能力,以及 Rust 生态系统未来创新的激动人心的可能性。
重要的 GitHub 仓库和工具更新 Cargo 增强
在 2024 年,Rust 包管理器 Cargo 获得了新功能,用于改进包管理、依赖解析和构建过程。这些更新帮助使 Rust 开发变得更加流畅和高效。
rust-analyzer
流行的语言服务器 rust-analyzer 在其代码补全、错误诊断和重构功能上取得了稳步进展。这个工具继续成为希望获得强大编辑支持的 Rust 开发者的首选。
tracing 库
随着 Rust 应用复杂性的增长,用于结构化日志和遥测的 tracing 库变得越来越关键。通过新的集成和功能,tracing 提供了更深入的性能和行为洞察,帮助开发者构建更可靠的系统。
社区和外展 广泛的采用
在 2024 年,Rust 在众多行业中继续获得牵引力。其在速度、内存安全性和强大并发特性方面的声誉已经促使更多公司使用和投资于 Rust。
包容性和增长
Rust 社区持续增长,并致力于为每个人创造一个欢迎的环境。指导计划和其他支持资源使得新开发者更容易学习和贡献。
书籍和教程
今年,关于 Rust 的书籍和教程数量大幅增加。无论是初学者还是有经验的开发者,现在都有比以往更多的资源来掌握这门语言。
社区和行业支持
Rust 基金会在支持生态系统方面发挥了关键作用。
Google 以额外 100 万美元的资金支持重申了其承诺。 Rust 基金会启动了奖学金计划,以培养新的贡献者和赋能社区领导者。 Bevy 基金会成立,提供对 Bevy 游戏引擎的长期治理。
展望未来
2024年,Rust 取得了巨大的进步,语言、工具和生态系统都有了重大发展。随着我们进入未来,很明显 Rust 将在许多领域的软件开发中扮演更大的角色。得益于其对安全性、性能和开发者体验的关注,Rust 很可能继续成为驱动新创意和广泛采用的关键语言。
评论区
写评论还没有评论