导出命令返回 Ok,CSV 却是空的
这是 Thessi4Coil 发在 r/rust 的一篇故障记录。记录里的导出命令报告成功,留下的 CSV 文件是空的。采集时 0 分、10 条评论。帖子时间是 2026-11-07 17:20 UTC。
导出路径上的写入都用了 write_all(...)?。作者写,没有忽略 Result,也没有 unwrap。导出内容小,能放进 BufWriter<File> 的缓冲区。每次 write_all 返回 Ok(()),字节还在内存里。函数末尾返回 Ok(())。之后 writer 被 drop。
std::io::BufWriter 的文档写,drop 之前必须调用 flush。drop 会尝试把缓冲区写出去,这个过程里的错误会被忽略。调用 flush 可以先把缓冲区清空,drop 时就不再做文件操作。文档写默认缓冲区容量目前是 8 KiB,以后可能变。作者写,当时文件系统已满,真正的写入失败发生在函数已经返回成功之后。
作者给出的复现用 Linux 的 /dev/full。打开它并包进 BufWriter,写入短字符串,write_all 返回 Ok(())。显式调用 flush() 得到 ENOSPC。
作者写,当场的修改是在返回成功前加上 flush()?。导出路径改成先写临时文件,写完再 rename,避免失败的导出替换掉原来有效的文件。作者写,flush() 和 sync_all() 是两件事,这次失败停在字节还没有写到文件上。
thegentlecat 的评论有 31 分,把帖子的写法标成 “It wasn’t X, it was Y” speedrun。complexicat 的评论有 24 分,内容是 “slop”。EpochVanquisher 的评论有 5 分,写文件的最后一次使用应该是 flush、sync 或 close,按需要选一个。Kenzzer 的评论有 3 分,写这是常见的 I/O 问题,记得 flush 缓冲区。
原文链接:https://www.reddit.com/r/rust/comments/1xqboal/our_rust_cli_returned_ok_after_failing_to_write/
RAVET 0.1.0 一次导出五种插件格式
RAVET 是用 Rust 写音频插件和独立音频程序的框架,全称 Rust Audio Visual Engineering Toolkit。c0wcud 2026 年 11 月 7 日在 r/rust 发了 0.1.0。采集时 0 分、2 条评论。仓库在 https://github.com/mo0kid/ravet 。采集时仓库 1 星、0 个 fork、121 个提交,许可证 GPL-3.0。GitHub release 写,标签 v0.1.0 发布于 2026-11-05。仓库写还没有 crates.io 包,使用方式是依赖这个 tag。最低 Rust 版本是 1.88。
0.1.0 的发布说明写,产品描述写一次,里面有 processor、参数、保存的状态和编辑器,RAVET 再构建各个格式。README 写,0.1.0 把一份产品描述导出成 CLAP、VST3、AUv2、AAX 和 LV2,平台是 macOS、Windows 和 Linux。作者帖子里的格式名单是 VST3、CLAP、LV2、Audio Unit 和 AAX。
发布说明写,Web 编辑器在 macOS、Windows、Linux 上可用,覆盖该平台上支持编辑器的格式。MIDI 输入和输出在每个格式里可用。插件可以告诉宿主延迟变化,并在格式支持时报告 tail。自动化可以按采样应用,也可以每个 block 一次。Bypass 可以由 processor 处理,也可以由 RAVET 处理,方式包括硬切换、交叉淡化和冻结直通。每个格式都处理 denormal。DSP 部分列出立体声 FIR 滤波器和立体声 oversampler。
作者帖子写,支持路径上的音频线程不分配、不加锁、不阻塞。核心音频、事件和参数 crate 用 no_std,没有分配器。参数有永久 key,调整顺序后宿主 ID 保持稳定。保存的状态带版本和迁移钩子。编辑器是嵌在宿主窗口里的 web view,使用 WebKit、WebView2、WebKitGTK,通过一个小的 JS API 和插件通信。
最小例子是 tempo-synced delay。作者写 DSP 大约 350 行普通 Rust,插件描述不到 80 行,目录是 examples/delay-plugin。更大的例子是 DW-303,一个开源的 TB-303 风格合成器和音序器,仓库在 https://github.com/mo0kid/DW-303 。
发布说明记下的测试机是这些。macOS Apple silicon 上,delay 例子跑过 REAPER 的 CLAP、LV2、AU,Ableton Live 12 的 VST3,Logic Pro 的 AU,Pro Tools 的 AAX。Linux 和 Windows 11 上跑过 REAPER 的 CLAP、VST3、LV2,带编辑器。macOS Intel、Rosetta 下跑过 REAPER 的 CLAP、VST3、LV2、AU。Windows 上的 AAX 能构建并通过检查,还没有在 Windows 版 Pro Tools 里跑过。独立音频和 MIDI 通过 DW-303 在三个平台上跑过。
发布说明写了限制。导出层构建的插件处理 32-bit float,一条主总线。Pro Tools 里,编辑器中输入的值在点到别处时才应用。Windows 编辑器还没有跟随显示缩放。作者写,闭源产品另有商业许可,年收入 5 万美元以下免费。README 写,最终商业协议还没定,README 本身不授予商业许可。
complexicat 的评论有 4 分,写这条帖子违反 rule 7。作者回复有 -1 分,写发帖前读过 rule 7,插件已经在 REAPER、Live、Logic 和 Pro Tools 里跑过。
原文链接:https://github.com/mo0kid/ravet/releases/tag/v0.1.0
编译到 Rust 的语言问能不能用 crates.io
这是 ElephantElectrical31 发在 r/rust 的一篇提问。作者在做一门编译到 Rust 的新语言,想把包发到 crates.io,名字用 {语言名}_*。包里同时放原始源码和生成出来的 Rust 文件。作者问这样是否可以,还是应该自建 registry。作者写,Rust 用户也可以直接用这些库。采集时 2 分、29 条评论。帖子时间是 2026-11-07 14:38 UTC。
FantaSeahorse 的评论有 71 分。评论写这些包里的文件不算 Rust 源文件,建议给它们单独建公开仓库。
Clean_Assistance9398 的评论有 9 分,问既然编译目标是 Rust,为什么不直接写 Rust,以及这门语言相对 Rust 要解决什么问题。
lenscas 的评论有 3 分,写一门语言可以把 Rust 当作多个输出目标之一。评论提到有人做过 Rust 到 C,C 作为编译目标比较乱。评论把 Rust 写成更适合 native 生态的目标,Web 再用 JS。
stinkytoe42 的评论有 13 分,建议把包系统做成能识别 Git,引用指向公开 Git 服务器。短名字如 语言名/包名 可以自动指向 GitHub 或一个可配置前缀,完整的 https:// 和 ssh:// 链接也可以用。同一作者另一条 8 分的评论写,crates.io 有这套做法没有的问题,其中一条是命名空间。评论写,语言成熟后再做完整的包系统,起步阶段不依赖正式包管理。
lahwran_ 的评论有 -1 分,写 Git 引用有一批问题,crates.io 的设计就是用来处理这些问题的。
ryo33h 的评论有 5 分,写自己的语言主后端也是 Rust,正在做自己的包管理器。列出的考虑点有中心化还是分布式、semver 还是 rev hash、是否支持最小发布时间。同一作者另一条 1 分的评论介绍 Totebag。Totebag 是一个实验性包管理器,用这门语言自己写。它用 Git,不用 registry,依赖按内容哈希锁定。信任是分布式的,用户可以选择信任谁,以及一个 commit 被观察到之后等多久。
AnArmoredPony 的评论有 2 分,内容是 “yeah we do that”。
原文链接:https://www.reddit.com/r/rust/comments/1xq7vcv/using_cratesio_for_a_language_that_compiles_to/
Dave Abrahams 在 IWACO 讲可变值语义
这是 Dave Abrahams 发到 r/rust 的一场演讲视频。演讲标题是 Safe Systems Programming with Mutable Value Semantics,场合是 IWACO 2026 的 keynote。YouTube 频道是 Hylo,时长 1:03:43。dabrahams 2026 年 11 月 8 日 00:08 UTC 发帖,采集时 13 分、3 条评论。帖子正文写,这场演讲讲的是 Hylo 语言,上个月在 IWACO 做的,里面有关于 Rust 的内容。
YouTube 简介写,Hylo 是一门建立在严格可变值语义上的语言,英文是 strict mutable value semantics,缩写 MVS。简介写,MVS 给安全、易用和效率留出空间,并限制这几项之间的冲突。Hylo 的设计尽量用上这个重合点。演讲解释 value semantics 指什么、为什么重要,以及 Hylo 怎样在不引入引用类型的情况下支持 MVS。
teerre 的评论有 2 分,写搜索作者名字时看到退休信息,这次看到作者还在做演讲。dabrahams 的回复有 2 分,写自己大体上已经离开,并附了 #humanityftw。BoringAccount-_- 的评论有 1 分,写看完了这场大约一小时的视频。
原文链接:https://www.youtube.com/watch?v=op51SyyPJmw
From Rust中文社区 Mike
社区学习交流平台订阅:
评论区
写评论还没有评论