公告《Cargo v1.92 开发周期总结》
- 插件亮点:cargo-wizard被选为本周期的插件,可优化项目构建时间、运行时性能或二进制大小。
- 构建性能指南:在Zulip上,Kobzol提出为Cargo book添加构建性能指南。指南在#15970中被引入,旨在帮助开发者优化构建性能。
- Cargo Script:epage发布了Rust前置语法的稳定化报告,这是稳定化Cargo Script的第一步。Cargo的前置语法解析器也更新以更好地匹配rustc的空白处理(#15975)和错误消息(#15952,#15972)。Cargo Script切换到使用
build-dir,并将其Cargo.lock移至build-dir。 - 公共依赖:sadmac7000在#15966中更改了
cargo add的版本自动选择,以评估公共依赖。JohnScience提议cargo tree --edges no-external以仅显示本地包,团队还重新评估了--depth public,最终将其改为--edges public(#16081)。 - 构建目录布局:Cargo的缓存传统上围绕其功能组织,但这种布局存在一些问题,如难以进行垃圾回收、协调更细粒度的锁、跨项目缓存构建单元工件等。新的布局提议以构建单元为中心组织中间构建工件,而不是文件的角色。新布局在#15947中实现。
- 其他工作:epage继续将Cargo消息迁移到annotate-snippets(#15942,#15943,#15945)。weihanglo发布了Cargo的结构化持久化日志支持(#16150)。
- 未取得进展的焦点领域:包括开放命名空间、默认功能禁用、特性元数据等。
- 如何提供帮助:如果有关于改进Cargo的想法,建议先查看问题列表,然后在内部讨论区探索想法。
阅读:https://blog.rust-lang.org/inside-rust/2025/11/24/this-development-cycle-in-cargo-1.92/
文章《改进 Cargo features 以减少对编译时间的影响》
文章探讨了 Rust 中 Cargo 特性对编译时间的影响,提出了改进方向:
- Cargo 特性的作用:Rust 包可通过定义特性来包含可选依赖,用户可选择启用或禁用这些特性,以减少不必要的代码编译。
- 默认特性的问题:默认特性在未明确指定时会被自动启用,且无法单独禁用,只能全部禁用后手动启用其他特性,这可能导致不必要的代码被编译。
- 传递依赖的特性问题:当前无法直接配置传递依赖的特性,需要通过定义映射特性来间接实现,这在依赖关系复杂时会导致特性数量指数级增长。
- 改进建议:
- 提供手动禁用单个默认特性的机制(低影响、低难度)。
- 提供更简洁的方式让库暴露直接依赖的特性(低影响、中等难度)。
- 允许禁用传递依赖的特性(低影响、中等难度)。
- 实现“零配置”特性,自动为库中的每个模块或项定义特性(高影响、高难度)。
- 阅读:https://saghm.com/cargo-features-rust-compile-times/
- 讨论:https://www.reddit.com/r/rust/comments/1p5p81p/making_the_case_that_cargo_features_could_be/
文章《Dioxus 用起来有趣吗?》
- Dioxus 介绍:Dioxus 是一个 Rust 框架,目标是实现移动、Web 和桌面应用的单代码库开发,类似于 React Native 或 PhoneGap。
- 历史回顾:文章回顾了 Web 应用的发展历程,从服务器端渲染 HTML 到客户端渲染,再到如今的全栈渲染(服务端渲染并流式传输给客户端)。
- Dioxus 的工作方式:通过服务端渲染 HTML 并发送结构化数据,客户端接收后进行“水合”(hydratation),即安装事件处理器并接管文档。
- 数据加载问题:Dioxus 提供多种钩子(如
use_future、use_context等)来解决异步数据加载问题,但钩子的复杂性较高,容易导致难以调试的行为。 - 开发体验:作者最初对 Dioxus 的开发体验感到不满,但深入了解后发现许多问题已得到解决或正在修复中。例如,主分支已添加错误显示功能,Chrome 扩展可提供更友好的调试支持。
- 结论:Dioxus 尚未完全成熟,但其目标和潜力令人兴奋。作者期待 Dioxus 和 WebAssembly 前端生态在开发体验上赶上 JavaScript 解决方案。
阅读:https://fasterthanli.me/articles/does-dioxus-spark-joy
Symbolica 1.0 发布:Rust 中的符号数学运算
今天,Symbolica 1.0 正式发布啦!🎉🎉🎉 Symbolica 是一个适用于 Rust 和 Python 的符号和数值数学库。
同时,从 Symbolica 中提取出来的 Numerica 和 Graphica 库也正式发布,这两个库采用 MIT 许可,共包含 18.5k 行开源代码。
在博客文章中,我展示了这三个 crate 的功能,Rust trait 系统对于编写数学抽象非常有用,Symbolica 如何处理全局状态,以及我们如何解决 Python 的交付问题。
- 阅读:https://symbolica.io/posts/stable_release/
- 讨论:https://www.reddit.com/r/rust/comments/1p5cr88/symbolica_10_symbolic_mathematics_in_rust_two_new/
讨论:安全性+数学证明(形式化验证)?
讨论:https://www.reddit.com/r/rust/comments/1p5l70n/safetymathematical_proof/
--
From 日报小组 苦瓜小仔
社区学习交流平台订阅:
1
共 0 条评论, 1 页
评论区
写评论还没有评论