【Rust日报】Dioxus 用起来有趣吗?

公告《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 包可通过定义特性来包含可选依赖,用户可选择启用或禁用这些特性,以减少不必要的代码编译。

  • 默认特性的问题:默认特性在未明确指定时会被自动启用,且无法单独禁用,只能全部禁用后手动启用其他特性,这可能导致不必要的代码被编译。

  • 传递依赖的特性问题:当前无法直接配置传递依赖的特性,需要通过定义映射特性来间接实现,这在依赖关系复杂时会导致特性数量指数级增长。

  • 改进建议

    • 提供手动禁用单个默认特性的机制(低影响、低难度)。

    • 提供更简洁的方式让库暴露直接依赖的特性(低影响、中等难度)。

    • 允许禁用传递依赖的特性(低影响、中等难度)。

    • 实现"零配置"特性,自动为库中的每个模块或项定义特性(高影响、高难度)。

文章《Dioxus 用起来有趣吗?》

  • Dioxus 介绍:Dioxus 是一个 Rust 框架,目标是实现移动、Web 和桌面应用的单代码库开发,类似于 React Native 或 PhoneGap。

  • 历史回顾:文章回顾了 Web 应用的发展历程,从服务器端渲染 HTML 到客户端渲染,再到如今的全栈渲染(服务端渲染并流式传输给客户端)。

  • Dioxus 的工作方式:通过服务端渲染 HTML 并发送结构化数据,客户端接收后进行"水合"(hydratation),即安装事件处理器并接管文档。

  • 数据加载问题 :Dioxus 提供多种钩子(如 use_futureuse_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://www.reddit.com/r/rust/comments/1p5l70n/safetymathematical_proof/

--

From 日报小组 苦瓜小仔

社区学习交流平台订阅:

  • Rustcc论坛: 支持rss

  • 微信公众号:Rust语言中文社区

相关推荐
JustHappy3 小时前
古法编程秘籍(七):互联网到底是什么?把两台电脑怎么说话搞懂就够了
前端·后端·网络协议
yaoxin5211233 小时前
434. Java 日期时间 API - Period 基于日期的时间段
java·开发语言·python
Hommy884 小时前
【剪映小助手】添加图片接口(Add Images)
后端·github·剪映小助手·视频剪辑自动化
凡人叶枫4 小时前
Effective C++ 条款30:透彻了解 inlining 的里里外外
linux·开发语言·c++·嵌入式开发·effective c++
GetcharZp4 小时前
别再盲目用 OpenCV 读图了,这才是 CV 预处理的终极杀手锏!
后端
学逆向的4 小时前
C++纯虚函数
开发语言·c++·网络安全
程序员二叉5 小时前
【JUC】ThreadLocal底层原理|内存泄漏|弱引用|跨线程传递方案
java·开发语言·面试·职场和发展·juc
程序员二叉5 小时前
【JUC】线程池全套深度详解|参数|流程|拒绝策略|调优|异常处理
java·开发语言·jvm·算法·面试·juc
凡人叶枫5 小时前
Effective C++ 条款22:将成员变量声明为 private
linux·开发语言·c++
Qt程序员6 小时前
掌握 Linux 内核调度:从原理到实现(进程篇)
java·开发语言