ping 只发出去一包
这是 Redox OS 2026 年 11 月 8 日的一篇开发记录,作者是 MJ Pooladkhay。记录写 Virtio-FS 驱动,以及 Redox 作为客户机跑在 Cloud Hypervisor 上。Reddit 转发帖作者是 ribbon_45,采集时 23 分、2 条评论。帖子时间是 2026-11-08 15:54 UTC。
Virtio-FS 驱动已经合进 base 仓库的 drivers/storage/virtio-fsd。让 Redox 在 Cloud Hypervisor 上启动到 shell 的内核、bootloader 和驱动改动也已经合入。文章写了两个方向。客户机方向是这篇的主体:Redox 跑在 Cloud Hypervisor 里,去掉以前在 QEMU 上用的老 PC 硬件依赖。宿主方向还是提案。客户机这部分由 NGI Zero Commons 和 NLnet 的 Virtualized Redox 资助。
Virtio-FS 让虚拟机使用宿主机上的目录。Redox 的 virtio-fsd 用 FUSE 协议,经 virtqueue 和宿主机上的 virtiofsd 通信。每个共享目录是一个 scheme,路径是 /scheme/virtio-fs.<tag>,tag 来自宿主机。驱动在 QEMU 和 Cloud Hypervisor 上都能用,带自测。目录项缓存用 LRU,不用的项通过 FUSE_FORGET 告诉宿主忘掉。
启动到 shell 时记下的问题和对应合并请求:
- bootloader!61:传给 ExitBootServices 的 memory-map key 过期,bootloader 出不了 UEFI。
- base!422:virtio-blk 被识别成 transitional VirtIO 设备。Cloud Hypervisor 只提供 modern 设备,根磁盘没有出现。
- kernel!762:登录提示出现了,键盘输入进不去。串口输出是轮询的,输入走中断,中断指向不存在的 8259。legacy 中断改走 I/O APIC。
- 没有 PIT,也没有 HPET,定时等待不会醒来。
文章里的 ping 记录是 ping -c 4 1.1.1.1。第一包大约 15.304 ms 有回复,后面三包没有发出去。第一包是马上发的。后面的包要 time scheme 在 1 秒后唤醒。内核里 timeout::trigger 原来只由 PIT 中断处理函数调用。QEMU 上 HPET 走同一条中断线。Cloud Hypervisor 没有 PIT,也没有 HPET,这个处理函数不跑。读时钟仍然有效,kvmclock 会把 TSC 换成纳秒,所以第一包的往返时间是正常的。时钟中断没有在跑。调度器的抢占 tick 也停了,系统变成协作式调度。
kernel!762 的修复是:没有 HPET 时,每个 x86 CPU 用自己的 local APIC timer,模式是 TSC-deadline。tick 周期用 kvmclock 已有的比例,从纳秒换成 TSC tick。处理函数补上原来 PIT 处理函数的工作,投递到期的 timeout,并驱动调度器 tick。修完以后四包都发出去,间隔 1 秒,抢占调度恢复。
文章写,现在还不能当可部署实例。Cloud Hypervisor 上 Redox 还不能自己关机。重启已经可以,走键盘控制器的 reset 线。后面的工作包括兼容 cloud-init 的首次启动配置、PVH 直接启动、virtio-vsock、virtio-balloon、virtio-rng,以及快照恢复。现有 VirtIO 设备是 virtio-blk、virtio-net、virtio-fs、virtio-gpu。Redox 还不做 PVH,仍然走 UEFI。Firecracker 没有 UEFI,PVH 做完才开这条路。
SweetEbb9819 的评论有 2 分,写用 stub Linux VM 做硬件驱动值得注意。phip1611 的评论有 1 分,写看到更多人用 Cloud Hypervisor。
原文链接:https://www.redox-os.org/news/virtualized-redox/
Actix Web 这个季度发了 100 多个 crate
这是 Actix Web 维护者 robjtede 发在 r/rust 的一份季度报告。采集时 21 分、1 条评论。帖子时间是 2026-11-08 23:51 UTC。actix-web 仓库采集时 24934 星、1994 个 fork,许可证 Apache-2.0。
报告写,这个周期 Actix 生态有 100 多次 crate 发布。HTTP QUERY 方法进了路由宏、手工路由和 awc 客户端。宏路由用 #[query],手工路由用 web::query()。h2c 和 TCP no-delay 改成默认开启。报告写,某些负载的内存占用最多大约少 99%。中间件可以用 Error::add_response_mapper() 改错误响应。CORS 中间件已经用它修一个旧 bug。静态文件 Files::new() 可以有多个根目录。Files::try_compressed() 可以发预先压缩好的资源。
安全修复写在报告里,也能对上 GitHub release。解压后的请求体受已配置的大小限制。大窗口 Brotli 解压关掉。畸形的 chunked 结束符会被拒绝。静态文件服务修了用户可控文件名带来的 stored XSS,以及 Windows 隐藏文件保护绕过。报告写,自动解压这套隐式行为会在 v5 去掉。报告建议执行 cargo update -p=actix-web。
GitHub 上能对上的发布包括这些。actix-web 4.18.2 发布于 2026-11-06,默认 form payload 上限提到 32 KiB。form、JSON、bytes、string extractor 的解压后大小受同一套限制,公告编号 GHSA-qph8-7859-gq2f。actix-http 3.20.3 关掉大窗口 Brotli,公告编号 GHSA-7p9w-p5qm-5gc5。actix-http 3.20.2 拒绝把单独的 LF 当作 chunked 最后结束符,公告编号 GHSA-2q7f-mf9f-5qhr。actix-http 3.21.0 发布于 2026-11-08,默认打开 TCP_NODELAY。这条 release 写,HTTP/1.x 内存使用有明显改进。actix-http 3.20.5 在优雅关闭时向 HTTP/2 连接发 GOAWAY,在途 stream 结束后关掉连接。actix-multipart 0.8.7 给 MultipartFormConfig::max_parts() 加了默认上限 100。actix-router 0.5.5 的 MSRV 是 1.89,路径参数可以抽成 Vec 或 tuple。
DavidXkL 的评论有 2 分,写自己主要用 Actix Web,会去看这些改动。
原文链接:https://www.reddit.com/r/rust/comments/1xrct2i/actix_web_q4_report/
cel-rust 上线浏览器 playground
cel-rust 是用 Rust 写的 Common Expression Language 解释器。CEL 是一门非图灵完备的表达式语言,语法接近 C。仓库在 https://github.com/cel-rust/cel-rust 。采集时 713 星、84 个 fork,许可证 MIT,最近推送是 2026-11-08。crates.io 上的包名是 cel,当前版本 0.15.0,发布于 2026-10-06,累计下载 5719704,近期下载 4915558,18 个版本。这篇帖子写的是 playground。0.15.0 没有随这篇帖子更新。
作者 alexsnaps 2026 年 11 月 8 日 12:25 UTC 在 r/rust 发帖。采集时 18 分、5 条评论。帖子写,cel-rust 几年前加了 Wasm 支持,这次把 playground 放到浏览器里,地址是 https://cel-rust.github.io/playground 。页面上可以开关自动运行。关掉时,Ctrl+Enter 或 Run 才会求值。表达式、输入和输出可以开语法高亮。高级模式在表达式旁边放 AST 浏览器。主题有 System、Light、Dark。代码主题列出 GitHub、Catppuccin、Solarized、Dracula、Tokyo Night Moon。设置和上次写的内容留在这个浏览器里。
README 的安装方式是 cargo add cel。示例编译 add(2, 3) == 5,用 Env::stdlib() 和 Context::with_env,再 context.add_function 注册 add。
Shnatsel 的评论有 15 分,问 CEL 是什么。IvanIsCoding 的评论有 8 分,写 CEL 非图灵完备,语法像 C。评论里的例子以 request.method in ['GET', 'HEAD'] && request.path.startsWith('/api 开头,采集时后面被截断。syncerr 的评论写,自己用 CEL 做 protobuf 消息校验,并提到 protovalidate 和 protobuf-es。
原文链接:https://cel-rust.github.io/playground
原生 Mac GUI 工具包问要不要只做 AppKit
这是 layla4you2 发在 r/rust 的一篇提问。作者在做一套面向 Mac 的 Rust GUI 工具包。帖子里没有放仓库链接。采集时 0 分、16 条评论。帖子时间是 2026-11-09 01:36 UTC。
作者列出现有选择。webview 用 Tauri。自绘 UI 用 egui、Iced、Slint。另一种是 SwiftUI 前端加 Rust FFI。作者写,文本框行为、VoiceOver 和大表格是这些方案里经常对不上 Mac 应用习惯的地方。
作者写,这套工具包里每个 view 是真正的 AppKit 控件。表格用 NSTableView。作者写,一百万行滚动没有问题,因为 AppKit 只取可见行。状态放在 signal 里。改一个 signal 只更新受影响的控件,不重建 view tree。菜单、工具栏、文档、undo、拖放和 Dark Mode 走系统。还有一个 self-check 模式,会驱动应用并检查屏幕上的内容。
podule-games 的评论有 4 分,写只做 Mac 会是阻碍,因为这样就在和 Swift 竞争。rjzak 的评论有 2 分,写自己从 Slint 换到 egui,只做 Mac 的工具包可以接受,需要菜单栏支持。作者回复有 1 分,写菜单栏已经覆盖,包括应用自己的菜单和菜单栏右侧图标。Shoddy-Childhood-511 的评论有 1 分,写对只做 Mac 的 GUI 工具包没有兴趣。
原文链接:https://www.reddit.com/r/rust/comments/1xrezk6/what_would_you_want_from_a_native_mac_gui_toolkit/
From Rust中文社区 Mike
社区学习交流平台订阅:
评论区
写评论还没有评论