news 2026/4/18 11:28:00

【Rust日报】Miri:总结在过去三年中的重大进展,并发表 POPL‘26 论文

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Rust日报】Miri:总结在过去三年中的重大进展,并发表 POPL‘26 论文

Miri:总结在过去三年中的重大进展,并发表 POPL'26 论文

作者:Ralf Jung

  1. 学术认可:论文《Miri: Practical Undefined Behavior Detection for Rust》已被编程语言顶会POPL 2026接收,标志着其在学术和实践上的双重成功。

  2. 功能扩展

  • 系统调用模拟(Shims):大幅扩展了对 Windows、Linux、macOS 及 Android 等平台的 API 支持;新增了对 Intel AVX-512 等硬件指令集的模拟。

  • 诊断增强:引入了更清晰的错误提示,能精准追踪数据竞争、内存释放后使用(UAF)以及借用检查(Stacked/Tree Borrows)的根源。

  • 并发与性能

    • 更新至C++20 并发语义,引入了全非确定性调度器。

    • GenMC 集成:实验性支持结合 GenMC 进行模型检查,以穷举并发程序的执行状态。

    • 性能优化:通过指针标签垃圾回收等机制提升了别名检查的速度。

  • 底层改进:支持通过 FFI 调用原生代码(实验性),并增强了内存泄漏检测和浮点运算的非确定性测试。

  • Miri 作为 Rust 生态中保证 Unsafe 代码安全性的核心地位,正朝着更全能、更高效的方向演进。

    阅读:https://www.ralfj.de/blog/2025/12/22/miri.html

    论文:https://plf.inf.ethz.ch/research/popl26-miri.html

    Parcode:真正的惰性持久化库

    Parcode 让你能像操作普通内存结构体一样操作数百 MB 的磁盘文件,且只在触摸具体数据时才付代价。

    其核心定位是实现“真正的惰性持久化(True Lazy Persistence)”,允许开发者在无需反序列化整个文件的情况下,直接访问大对象图中的特定字段。

    1. 解决的核心问题 传统的 Rust 序列化方案(如 Bincode, Postcard, JSON)通常是“贪婪(Eager)”的。

    • 痛点:如果你有一个 500MB 的文件,即使你只需要读取其中的一个字段,你也必须支付反序列化整个对象图的 CPU 和内存开销。

    • 后果:冷启动延迟高,内存占用随文件大小线性增长。

    1. Parcode 的核心方案:编译时结构镜像 Parcode 引入了“原生镜像(Native Mirroring)”技术,区别于 FlatBuffers 或 Cap'n Proto 等需要外部 IDL 文件(.proto/.fbs)的方案:

    • 纯 Rust 体验:通过#[derive(ParcodeObject)]宏,在编译时分析结构体并自动生成一个“延迟影子结构”(Shadow Struct)。例如,GameData会生成GameDataLazy

    • 分块存储:结构元数据(非常小)被贪婪加载,而大型载荷(如VecHashMap或大型资产)被存储为独立的磁盘块(Chunks)。

    • 按需实例化:只有当你显式调用某个字段时,Parcode 才会触发磁盘 I/O 并将该部分数据加载到内存。

    1. 主要特性

    • 亚毫秒级冷启动:打开文件几乎瞬时完成,因为不加载实际数据。

    • 常数级内存占用:在遍历大型结构体时,内存占用保持稳定,不会因为文件大而暴涨。

    • O(1) Map 查找:支持直接从磁盘上的大HashMap中查找条目,无需先将整个 Map 反序列化。

    • 随机访问:支持跳转到文件内的任意深度字段。

    1. 性能测试(冷启动 + 定点访问)

    序列化器

    冷启动延迟

    访问深度字段

    总计耗时

    Parcode~1.4 ms~0.00002 ms~1.4 ms

    Cap'n Proto

    ~60 ms

    ~0.00005 ms

    ~60 ms

    Postcard

    ~80 ms

    ~0.00002 ms

    ~80 ms

    Bincode

    ~299 ms

    ~0.00001 ms

    ~299 ms

    1. 权衡与限制 (Trade-offs)

    • 写性能:由于需要构建块状图结构,写入吞吐量目前低于纯顺序写入格式。

    • 适用场景:最适合读密集型或对冷启动时间敏感的工作负载。

    • 非数据库:它不是数据库的替代品,更多是作为高性能的对象存储和缓存层。

    1. 技术实现

    • memmap2:利用内存映射文件。

    • rayon:写入过程完全并行化。

    • zero-copy:写入时直接借用数据而非克隆。

    仓库:https://github.com/retypeos/parcode

    cpal 发布 v0.17.0

    Rust 跨平台音频库cpal 0.17.0迎来重大版本更新,核心改进如下:

    1. 稳定设备 ID:支持跨重启保存和恢复音频设备 ID,极大方便了用户偏好设置的持久化。

    2. 并发增强:Stream 现支持Send + Sync,允许在多线程间自由移动和共享音频流,优化了多线程架构。

    3. 格式与性能:新增 24 位音频(I24/U24)支持;默认缓冲区大小现遵循系统配置(如 PipeWire/quantum)。

    4. 平台优化:macOS 支持回环录音;Linux 改进了设备枚举;JACK 实现跨平台支持。

    该版本解决了大量长期积压的 Bug,显著提升了 Rust 音频开发的生产力与稳定性。

    仓库:https://github.com/RustAudio/cpal

    eilmeldung:TUI RSS 阅读器

    • 各方面都极速 :非阻塞式终端用户界面、(neo)vim 风格的快捷键、瞬间启动且界面简洁。

    • 站在巨人的肩膀上:基于新闻快讯库, eilmeldung 支持众多 RSS 提供商,高效可靠。

    • 功能强大且易于使用,开箱即用 :默认设置合理,适合大多数用户,同时又可配置以满足任何人的需求,从快捷键到颜色,从显示内容到 RSS 提供商,应有尽有。

    • 像专业人士一样阅读新闻:使用简单易学的强大查询语言筛选和搜索新闻,激活禅定模式 ,专注于文章内容,不受其他干扰。

    (eilmeldung 是德语,意思是突发新闻。)

    仓库:https://github.com/christo-auer/eilmeldung

    --

    From 日报小组 苦瓜小仔

    社区学习交流平台订阅:

    • Rustcc论坛: 支持rss

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 7:41:57

PyAutoGUI 终极指南:零基础玩转Python自动化神器

PyAutoGUI 终极指南:零基础玩转Python自动化神器 【免费下载链接】pyautogui asweigart/pyautogui: 是一个用于自动化图形用户界面操作的 Python 库。适合在 Python 应用程序中实现自动化操作,例如自动点击、拖动、输入文字等。特点是提供了简单的 API&a…

作者头像 李华
网站建设 2026/4/18 6:52:26

Dockerode实战:Node.js中构建企业级容器编排系统

Dockerode实战:Node.js中构建企业级容器编排系统 【免费下载链接】dockerode Docker Node Dockerode (Node.js module for Dockers Remote API) 项目地址: https://gitcode.com/gh_mirrors/do/dockerode 在现代云原生应用开发中,容器编排已成为…

作者头像 李华
网站建设 2026/4/11 23:43:01

沉浸式学习开发实战:从零打造AR/VR教育应用

沉浸式学习开发实战:从零打造AR/VR教育应用 【免费下载链接】OpenCourseCatalog Bilibili 公开课目录 项目地址: https://gitcode.com/gh_mirrors/op/OpenCourseCatalog 还在为AR/VR开发的高门槛而犹豫不前吗?OpenCourseCatalog项目为你精心整理了…

作者头像 李华
网站建设 2026/4/18 8:29:06

Miniconda环境中运行Python脚本的几种方式

Miniconda环境中运行Python脚本的几种方式 在数据科学和AI开发日益普及的今天,一个常见的困扰是:为什么同样的代码,在同事的机器上跑得好好的,到了自己环境里却报错不断?导入失败、版本冲突、依赖缺失……这些问题背后…

作者头像 李华
网站建设 2026/4/18 4:57:45

Miniconda-Python3.9镜像内置工具介绍与使用

Miniconda-Python3.9镜像内置工具介绍与使用 在现代AI开发和数据科学实践中,一个稳定、可复现且高效的开发环境,往往比算法本身更早决定项目的成败。你是否曾遇到过这样的场景:从GitHub拉下一个热门项目,兴冲冲地运行pip install …

作者头像 李华
网站建设 2026/4/18 5:46:05

计算机毕业设计springboot智能化汽车租赁平台 基于Spring Boot的智能汽车租赁管理系统设计与实现 Spring Boot框架下的智能化汽车租赁平台开发

计算机毕业设计springboot智能化汽车租赁平台6x6kn (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。 随着现代生活节奏的加快,人们对汽车的需求逐渐从长期拥有转变为…

作者头像 李华