< 返回版块

Mike Tang 发表于 2026-10-05 09:05

CPython 拟给 zlib 加可选 Rust 实现

这是 Python Insider 对 2026 年 Python 语言峰会的记录,作者 Seth Larson。David Hewitt 代表 Rust for CPython 团队说明进展:团队大约 60 人,PEP 草案由核心开发者 Kirill Podoprigora 和 Emma Smith 撰写。提案把 zlib 模块作为第一个可选 Rust 实现,使用 zlib-rs。zlib-rs 已被 Firefox、uv 和 Cargo 使用,文中称它在不少平台上比 zlib 和 zlib-ng 更快。

时间表写的是:2026 年夏完成构建系统、CI 和 Rust API 概念验证;2026 年末用 PEP 定义成功标准。Python 3.16(2027 年 10 月)提供可选的 Rust zlib 和私有 Rust API,现有 C 代码保留作回退。Python 3.17(2028 年 10 月)处理平台问题,并考虑把 Rust 用到 io、json、xml、memoryview 和 parser。最早在 Python 3.18(2029 年)把 Rust 变成构建 CPython 的必需项,并公开 Rust API。构建侧计划把 Rust 源码 vendor,构建 CPython 不需要现场调用 Cargo。

成功标准草案有三条:多数活跃核心开发者愿意用 Rust API 写功能;CPython 性能基准没有明显变慢;所有分级平台都要有 Rust 支持。Pablo Galindo Salgado 把从 Cargo 引入依赖视为潜在阻碍。讨论里提到 RustPython 已经存在,性能不及 CPython,只作为 API 设计参考。

原文链接:https://blog.python.org/2026/09/language-summit-2026-rust-for-cpython/

typex:按字段名做运行时反射

typex 是运行时反射库,crates.io 当前 0.1.1,仓库 tindzk/typex,Apache-2.0,MSRV 1.85。它可以在不知道具体类型的情况下检查、遍历、比较和修改值。常见标量和集合开箱可用;自定义结构体和枚举用 #[derive(Meta)],修改走 MetaMut。值包进 Object 后可以按字段名读取,例如 field("count") 取出 u8。

MutationBatch 可以把 set、push_item 等补丁一次提交,再用 rollback.undo() 回到提交前。README 写明支持 no_std + alloc,默认 std 特性才带 HashMap;没有运行时依赖,也不使用 unsafe。实现大约 4700 行。bevy_reflect 覆盖结构信息、动态值和序列化;typex 的范围是结构访问、修改和相等比较,不包含实例化和反序列化。

原文链接:https://github.com/tindzk/typex

Cinebox:桌面把 mpv 画进 egui,电视端改用 ExoPlayer

Cinebox 是用 Rust 写的影视应用,在同一窗口里找片并播放,作者称目前能跑在 Windows、Linux 和 Android TV 上。仓库路径是 dexsper/cinebox。作者先用 Iced(wgpu)配合独立窗口里的 mpv(Vulkan)。两边没有共享 surface,控件和字幕画不到视频上面。

UI 随后改到 egui 的 glow 后端。libmpv 提供 OpenGL 渲染 API,mpv 在 egui_glow 的 paint callback 里直接画进 egui 的 framebuffer,控件是盖在画面上的 egui widget。Android TV 仍跑同一套 egui,作者另外写了 D-pad 焦点处理,因为 egui 的方向键导航会跳进已打开弹层后面的控件。

电视端的 mpv 没有跑通。作者的 Amlogic 盒子(Mali-G31)上,高于 1080p 时 mediacodec-copy 只返回四分之一分辨率画面;零拷贝 MediaCodec 进 ImageReader 起不来,下一次尝试直接重启了盒子;mpv 的 GL 管线画不出画面,只有 gpu-dumb-mode 可用。播放器被收成 Player trait:桌面继续用 libmpv,Android 用 Media3 ExoPlayer,解码到透明 egui 窗口下面的 SurfaceView。这条路径现在能播 4K、HDR10 和 Dolby Vision。SurfaceView 会在上层窗口挖出透明区,SurfaceFlinger 把视频区域的 egui 层丢掉,全屏时控件和字幕消失;覆盖 gatherTransparentRegion 后恢复。

原文链接:https://www.reddit.com/r/rust/comments/1wxd44x/getting_mpv_under_an_egui_ui_then_ditching_it_on/

Rust OSDev 九月:Allocator trait 进入 stable

这是 Rust OSDev 月报,@phil-opp 编辑,2026-10-01 发布,汇总 2026 年 9 月操作系统开发相关变化。工具链方面,Allocator trait 的 MVP 在多年 feature gate 之后进入 stable,同时稳定的还有 Box<T, A>、Vec<T, A>、Global 和 *_with_allocator 方法,稳定版可以给单个集合指定分配器;旧特性剩余部分挪到 allocator_ext。atomic_volatile 给原子类型加了不稳定的 load_volatile / store_volatile,面向和设备或其他地址空间共享的内存,例如 DMA buffer。

项目方面,uefi 继续核对固件返回值:boot::memory_map 不再直接信任固件报告的 map 大小,若干把空指针转成句柄或引用的路径也做了修正。本月发布 uefi 0.41.0、uefi-raw 0.17.0、uefi-macros 0.20.0。Kangrejos 2026 于 9 月 16–17 日在拉斯帕尔马斯举行,页面链了 pin-init、field projection、Tyr、Rust UFS 驱动等幻灯片。

原文链接:https://rust-osdev.com/this-month/2026-09/index.html


From Rust中文社区 Mike

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页