< 返回版块

Mike Tang 发表于 2026-07-31 09:06

oops:为危险 Shell 命令自动做快照,出错后可一键撤销

oops 是一个用 Rust 写的 Linux 工具,目标很直接:在用户执行潜在破坏性的 Shell 命令前自动做文件快照,事后如果翻车,可以再用 oops 回滚。它的工作方式是通过 shell preexec hook 拦截命令,把命令发给后台 daemon 分析;一旦判定为危险操作,就在真正执行前对受影响路径做快照。

作者的实现细节也比较完整:在 BtrfsZFS 上优先使用 reflink,其它文件系统则回退到普通复制;元数据存进 SQLite;命令历史可以浏览、做 diff、pin / unpin,也能触发 GC。默认保留策略是 48 小时或 2 GB,适合作为“日常命令行失误保险”。

它也明确写出了边界:这种方案抓不到 cron、systemd service、GUI 程序或非交互 shell 发起的破坏性命令;另外只会对 > file 这类截断重定向做保护,不处理所有 fd 重定向。即便如此,把“撤销 rm / mv / 覆盖写”做成一个独立工具,还是很有产品感。

原文链接:https://github.com/programmersd21/oops

Rust in Production:JetBrains 讲 RustRover、Fleet 与 Rust 开发工具的内部取舍

Rust in Production 播客最新一期请来了 JetBrains 的 Orhun Parmaksız,围绕 Rust 开发工具这条线讲得比较深入。内容不只是“RustRover 最近更新了什么”,而是展开解释 JetBrains 为什么不会把 IntelliJ 平台整体重写成 Rust、为什么 Fleet 的文件系统守护进程会用 Rust、以及为什么他们更偏好把 Rust 组件做成进程外 helper,而不是塞进 JVM 里走 JNI。

和 Rust 用户更直接相关的部分,是 RustRover 内部的一些实现取舍:包括 PSI、THIR、基于 MIR 的调试表达式求值、proc macro 沙箱、parser regression testing,以及它和 rust-analyzer 在架构方向上的差异。播客里也提到 JetBrains 在大型代码库、测试基础设施和 IDE 诊断误报控制上的一些经验,这些对做 Rust 工具链或 IDE 插件的人会更有参考价值。

如果你平时更关注“Rust 写成的开发工具”而不是纯应用本身,这期内容属于信息量比较足的一集。

原文链接:https://corrode.dev/podcast/s06e09-jetbrains/

Tabularis:拆解一个约 15 MB 数据库客户端背后的 Rust 依赖栈

Tabularis 团队写了一篇很具体的工程复盘,专门解释这个体积大约 15 MB 的数据库客户端,为什么会在 Rust 侧选现在这套依赖和边界。文章不是简单列依赖表,而是逐项说明:为什么 MySQL / SQLite 走 SQLx,PostgreSQL 却单独走 tokio-postgres;为什么 TLS 主路径选 rustls,但为了兼容其它客户端导入格式,又还留着 OpenSSL;为什么 SSH 同时保留 russh 和系统 ssh 两条通路。

文里最有价值的是这些“边界成本”写得很实在。比如为了支持 pgvectorhalfvec 这类 PostgreSQL 扩展类型,作者直接在驱动边界手写解码;为了兼容数据库客户端熟悉的 sslmode 行为,又补了自定义证书校验逻辑;为了避免 GUI 应用调用系统 ssh 时没地方输 passphrase,还让应用自己充当 SSH_ASKPASS 帮手。这些都不是炫技,而是一个桌面数据库工具在真实平台上必须补的工程账单。

如果你平时关心 Rust 桌面应用、跨数据库客户端,或者想看“依赖选择为何会演变成产品架构”的具体案例,这篇文章的信息密度很高。

原文链接:https://tabularis.dev/blog/rust-stack-inside-a-15mb-database-client

Keel 0.4:Rust 写的静态类型解释型语言补上匿名函数、HOF 和更完整 FFI

Keel 发布了 0.4 版本。这个项目用 Rust 实现了一门静态类型解释型语言,目标是在保持较轻使用门槛的同时,提供更强的类型系统、FFI 和可嵌入能力。作者给出的对比是:它在不少场景下比 Python 快,性能上也能接近关闭 JIT 的 LuaJIT。

这次更新的重点比较集中:函数参数现在可以显式写类型;匿名函数和高阶函数正式可用;标准库新增 mapfilter;FFI 现在支持结构体与布尔值的传参与返回;模块系统也做了更稳的循环导入支持。作者还同步提供了 VS Code 扩展、官网文档和在线 Playground,说明项目已经开始围绕语言本体之外的开发体验继续补齐。

从发布说明看,Keel 既提供可直接运行的解释器,也提供动态库产物,便于嵌入到其他程序里。目前嵌入 API 还没有加入内存 / 指令限制,但已经在路线图上。对关注“Rust 不只写应用,也写语言运行时和嵌入式执行环境”的读者来说,这个更新值得留意。

原文链接:https://github.com/horacehoff/keel/releases/tag/v0.4.0

评论区

写评论

还没有评论

1 共 0 条评论, 1 页