文章《Kraken:Rust 从实验到支柱》
作者:Kraken 工程团队
该文章是四年前“Oxidizing Kraken”系列的第二篇,总结了他们从当初下注 Rust 到现在 Rust 成为**核心基础设施(Backbone)**的六年历程。
1. 转型成果:从赌注到支柱
- 规模:目前 Kraken 拥有数百万行 Rust 代码,覆盖数百个核心服务,工程团队超过 200 人。
- 策略:他们没有进行“大爆炸式”的一次性重写,而是随着新功能的开发逐步用 Rust 替换老旧的 PHP 系统。这种“修修补补”的策略既保持了产品迭代速度,又解决了技术债务。
- 收益:
- 高性能:在 2020-2021 年牛市期间,将 REST API 迁移到基于 Tokio 的异步 Rust 后,极大地提升了系统应对高并发的能力。
- 稳定性:Rust 的内存安全和类型系统消除了整类的并发 Bug 和内存错误,使得服务非常稳定,减少了运维负担(Less toil)。
2. 技术架构:标准化与 pragmatism
- gRPC 协议:为了支持多语言协作(Rust, C++, Go, Python, TS),他们统一使用 gRPC (Protobuf) 作为内部服务通信的标准协议。
- 多语言策略:虽然 Rust 是默认的后端语言(尤其是 Tokio 生态),但并不强制。对于超低延迟的交易引擎仍保留 C++,对于其他适合场景仍使用 Go 或 Python。
- 共享库:利用 Rust 开发了通用的内部库(Crates),处理认证、监控、配置等,实现了各团队间的代码复用。
3. 文化与 AI 的结合
- 工程文化:Rust 这种注重正确性和严谨性的语言特性,帮助塑造了 Kraken 负责任的工程文化。它促进了知识的显性化(文档化),打破了以往依赖少数人的“部落知识”局面。
- AI 辅助:团队积极使用 AI 编程助手。由于 Rust 强大的类型系统和编译器检查,AI 生成的代码更容易被验证和纠正,使得 AI 与 Rust 成为高效的组合。
4. 总结 Kraken 证明了在大型金融系统中引入 Rust 是可行的且收益巨大。Rust 不再是一个实验性的赌注,而是他们构建高性能、高可靠性金融系统的默认选择。
阅读:https://blog.kraken.com/product/engineering/rust-part-2-from-bet-to-backbone
bincode 仍与历史源码保持一致
这个帖子讨论了 Rust 社区中关于 bincode 库的一个争议事件,特别是针对该库迁移到 SourceHut 并重写 Git 历史后是否包含恶意代码的验证。
1. 核心结论:代码是安全的
- 发帖人(OP)没有盲目跟风担忧“供应链攻击”,而是亲自进行了代码审计。
- 他将
bincode在 SourceHut 上的新仓库代码与原 GitHub 仓库中最后已知的“良好”版本进行了git diff比对。 - 结果显示:除了
README.md文件的变动(主要是关于迁移和维护者声明的文本更新)以及一些元数据外,实际的源代码(Rust 代码)完全没有变化。
2. 背景与争议点
- 恐慌来源:
bincode的维护者将项目从 GitHub 迁移到了 SourceHut,并重写了 Git 提交历史。此举导致原有 commit hash 改变,引发了社区对于“维护者是否趁机注入恶意代码”的猜疑。 - 维护者动机:历史重写的主要原因似乎是为了更改维护者的名字(涉及跨性别身份转换,不希望保留旧名字/死名)。
- 社区反应:虽然发帖人证明了代码的清白,但在之前的讨论中,社区的恐慌导致了激烈的争吵,甚至涉及对维护者的“人肉搜索”(doxxing)。
3. 后续影响
- 尽管代码被证明是安全的,但由于这一连串的冲突(包括对维护者身份的攻击和过激反应),
bincode团队已宣布永久停止开发。 - 目前版本
1.3.3被视为最终完成版,不会再有官方更新。
总结:
该帖子通过技术手段证实,bincode 的 Git 历史重写仅仅是为了更改维护者署名,并没有像许多人担心的那样植入恶意代码,但这场因不信任引发的风波最终导致了该项目的停摆。
阅读:https://www.reddit.com/r/rust/comments/1poe6ts/bincodes_source_code_still_matches_what_was_on/
BlazeDiff:高性能差异比较工具
BlazeDiff 是由开发者 teimurjan 创建的一个高性能差异比较(Diff)生态系统,主要用于图像比较和对象(Object)比较。
该项目最初基于 JavaScript/TypeScript,随后推出了 Rust 重写版(v2),旨在成为最快的单线程图像 Diff 工具。
- 核心定位
- 极致性能:专注于速度。
- Rust 版:在 4K 图像对比测试中,速度约为
odiff的 4 倍(327ms vs 1215ms),且二进制文件体积更小。它利用了 SIMD 指令集(x86 的 SSE4.1 和 ARM 的 NEON)进行硬件加速。 - JS 版:比业界标杆
pixelmatch快 50% - 88%,比microdiff(对象比较)快 55%。
- Rust 版:在 4K 图像对比测试中,速度约为
- 多用途:不仅用于后端 CLI 工具,也提供前端组件,适用于视觉回归测试(Visual Regression Testing)、CI/CD 流程及数据结构对比。
- 主要功能与算法 BlazeDiff 提供了多种比较算法以适应不同需求:
- 像素级比较(Pixel-by-Pixel):
- 使用 YIQ 颜色空间进行更符合人类感知的颜色差异计算。
- 内置抗锯齿(Anti-aliasing)检测,减少误报。
- 采用智能的**分块预过滤(Block-based Pre-filtering)**技术:先快速扫描大块区域,仅对有差异的区块进行昂贵的像素计算(这是其速度快的主要原因)。
- 感知质量指标:支持 SSIM(结构相似性)、MS-SSIM、Hitchhiker's SSIM 以及 GMSD(梯度幅度相似性偏差),用于更高级的图像质量评估。
- 对象比较:提供高性能的 JSON/JS 对象深度比较功能。
- 生态系统组件 该项目被拆分为多个模块:
- Core Libraries:
@blazediff/core(图像)、@blazediff/object(对象)、@blazediff/ssim等。 - CLI 工具:提供命令行接口,可直接替代
odiff,支持 PNG、JPEG、WebP 格式。 - UI 组件:提供 Web Components 和 React 组件,用于在前端展示差异,支持“滑动对比(Swipe)”和“洋葱皮模式(Onion-skin)”等可视化效果。
- 总结 BlazeDiff 是目前追求最高性能的图像对比解决方案之一。如果你觉得现有的视觉测试工具(如 pixelmatch 或 odiff)速度不够快,或者需要在前端高效展示 Diff 结果,这是一个非常强力的替代品。
仓库:https://github.com/teimurjan/blazediff
Git Cherry Tree:没有任何相关经验的情况下编写 git 客户端

- 背景与动机
- 作者背景:作者自称不是系统级程序员(主要从事代码审查/管理工作),此前从未写过 Rust 或 React 代码。
- 起因:作者对 Windows 上的现有 Git 客户端感到沮丧,特别是在处理大型变基(Rebase)时性能不佳。
- 起步:最初只是想用 Tauri(号称比 Electron 快)做一个简单的周末原型测试,结果“意外”地发展成了一个为期 6 个月的完整项目。
- 项目成果:Git Cherry Tree
- 功能:一个高性能的 Git 客户端,能够轻松加载 Linux 内核仓库,处理两个分支间 80,000+ 文件的 Diff,并支持百万行文件的瞬间加载与搜索。
- 技术栈:
- 前端:Typescript + React (通过 Tauri 运行)。
- 后端:Rust。
- 核心库:主要使用
git2(libgit2 的 Rust 绑定) 处理 Git 操作,但针对性能瓶颈编写了自定义 Rust 代码。
- 代码量:约 2.5 万行代码(1.2 万行 Rust,1.3 万行 TypeScript)。
- 发布形式:单个约 11MB 的可执行文件,无需安装。
- 开发体验与感悟
- Rust 对初学者很友好:作者认为 Rust 帮助他突破了能力的上限。虽然有些概念复杂,但 Cargo 工具链和文档让一切变得可行。
- “消失”的 bug:作者惊讶地发现,许多平时工作中常见的内存管理、线程管理等“诅咒级”问题在 Rust 中几乎没有出现。代码写完就能跑,且非常稳定。
- 唯一的崩溃:在几个月的开发中,程序只崩溃过一次,而且是因为触发了 C 语言库(
libgit2)中的缓冲区溢出。这反向证明了 Rust 代码的安全性。
- 性能优化(Rust vs C)
作者分享了一个有趣的细节:虽然
libgit2(C语言) 很快,但在某些特定场景下,手写的 Rust 代码反而比 C 库快得多:
- 重命名检测:手写 Rust 实现比
libgit2快了约 20 倍。 - 自定义 Revwalker (版本遍历):配合缓存机制,比通用实现快了约 40 倍。 这让作者拥有了一个“调节旋钮”:可以先用库快速实现功能,如果不够快,就用 Rust 重写关键路径,性能随即大幅提升。
总结:这是一个关于非系统程序员如何利用 Rust 的安全性和高性能,从零开始构建出超越现有工具(特别是在 Windows 大仓库场景下)的励志故事。
阅读:https://www.reddit.com/r/rust/comments/1ploppl/i_accidentally_made_a_git_client_in_rust_with_no/
--
From 日报小组 苦瓜小仔
社区学习交流平台订阅:
评论区
写评论还没有评论