Kobzol’s blog

RSS: https://kobzol.github.io/feed.xml
Jakub Beránek 的技术博客,关于 Rust 编程语言与计算机科学。

Rust维护者Sovereign Tech Fellowship资助报告:2026年6-7月工作汇总

Rust维护者Kobzol获Sovereign Tech Fellowship资助,继续全职维护Rust上游。6-7月主要工作:将Cargo哈希算法从默认改为FxHash,使bors项目no-op cargo test提速约20%;为rustdoc、Cargo、Clippy引入PGO优化,分别带来约4%-5%的编译时间改善;修复了Rust编译器依赖查找在大量-L参数下的二次性能退化问题,使新build dir layout得以重新启用。
评论点赞收藏13 天前

Rust 与 C/C++ 内存安全 CVE 的差异解析

文章通过 curl 库中 curl_getenv 函数的具体案例,深入剖析了 Rust 与 C/C++ 在内存安全漏洞(CVE)认定标准上的本质差异。作者指出,C/C++ 中因 API 契约不明确导致的未定义行为通常被视为调用者错误,而 Rust 中只要在不使用 unsafe 代码的情况下发生内存错误,即被认定为库本身的“不健全”(unsoundness)漏洞。文章旨在澄清单纯比较 CVE 数量来评判语言安全性的误区,强调 Rust 通过类型系统强制安全契约的工程优势。
评论点赞收藏61 天前

调查并修复一个棘手的克隆Bug

作者深入排查并修复了一个棘手的克隆bug,发现其根源与Rust语言中正在热议的Ergonomic cloning特性有关。文章结合了具体的工程调试经验与语言特性讨论,为Rust开发者提供了有价值的实战参考。
评论点赞收藏229 天前

利用-Zno-embed-metadata减小Cargo目标目录体积

文章指出Rust构建目录占用空间大是用户痛点之一,介绍了一种通过-Zno-embed-metadata标志来减少目标目录大小的新方法,并讨论了编译速度与磁盘使用之间的权衡关系。
评论点赞收藏440 天前

Rust编译器错误信息的演变历程

作者通过脚本收集了从Rust 1.0至今所有稳定版的编译器错误输出,对比分析了Rust编译器错误提示信息的演变过程。文章结合了RustWeek会议的启发,展示了编译器UX设计的进步,对关注语言设计和开发者体验的技术读者具有较高参考价值。
评论点赞收藏457 天前

基于 Git Stash 的重构工作流

作者分享了一种利用 git stash 进行递归式重构的工作流,以解决在实现新功能时陷入无限重构循环、导致代码库混乱的问题。通过“内部向外”应用更改,帮助开发者保持专注,避免同时处理多个不相关的变更。
评论点赞收藏467 天前

Rust可见性的两种解读方式:全局控制与局部导出

作者结合Rust编译器内部lint的经验,深入探讨了Rust可见性控制的两种范式:全局可见性(Global Visibility)与局部可见性(Local Visibility)。文章对比了两者在代码简洁性、组合性、Lint支持及公共接口设计上的优劣,并强烈建议采用类似JS/TS的局部导出模式,将模块内部细节与对外API解耦。这是一篇具有鲜明个人工程哲学和实战经验的深度技术思考文。
评论点赞收藏477 天前

直接写个测试吧

作者在使用Rust开发bors项目时,遇到SQL迁移导致部署失败的问题。作者没有止步于修复bug,而是利用Rust生态中的sqlparser库,在10分钟内编写了一个集成测试来自动检测此类错误。文章展示了Rust强大的类型系统和IDE支持如何降低测试编写门槛,并分享了具体的代码实现和工程思考。
评论点赞收藏508 天前

Tokio与Prctl引发的棘手Bug

作者分享了一个在Rust分布式调度器HyperQueue中遇到的棘手Bug。由于使用tokio的spawn_blocking优化进程生成性能,意外触发了Linux prctl(PR_SET_PDEATHSIG)的线程级行为,导致子进程在父线程被tokio回收时被发送SIGTERM信号而异常终止。文章详细记录了从复现、定位到理解底层机制的全过程,是典型的系统编程与异步运行时交互踩坑案例。
评论点赞收藏538 天前

异步Rust的核心是并发,而不只是性能

作者认为异步编程的主要优势在于优雅地表达和组合并发逻辑,而非单纯的性能提升。文章结合HPC分布式系统实战案例,分析了超时控制、周期任务等并发模式,并探讨了为何在缺乏更好替代方案的情况下,尽管Async Rust存在复杂性,仍是处理复杂并发场景的最佳选择。
评论点赞收藏575 天前

博士毕业复盘:六年延期背后的真实教训

作者回顾六年高性能计算博士生涯,坦诚分享因缺乏明确目标、全职工作、教学热情及开源贡献导致延期毕业的经历。文章深入探讨了科研环境对个人动力的影响、对学术圈的幻灭感以及HyperQueue项目的成果,为考虑读博的技术人员提供了极具参考价值的反面教材与真实心路历程。
评论点赞收藏641 天前

不改代码也能提速:Rust编译器的构建优化实战

作者作为Rust编译器性能工作组的一员,分享了在不修改rustc源码的情况下,通过优化构建流程(如扩展LLVM PGO分析、更新依赖、改进PGO精度、尝试静态链接和LTO等技术手段)显著提升编译器构建速度和运行效率的工程实践与数据对比。
评论点赞收藏679 天前

用这个技巧让Rust编译器快5%

作者通过实验发现,在Linux上使用jemalloc配置透明大页(THP),可使Rust编译器编译时间平均减少约5%,页面错误减少60%,但内存占用增加约15%。文章提供了具体的环境变量设置方法和系统配置步骤,适合关注构建性能优化的开发者参考。
评论点赞收藏870 天前

Rust编译的瓶颈究竟在哪里?

作者通过实验数据分析了Rust编译过程中前端、后端和链接器的耗时分布。研究发现,二进制文件的编译瓶颈通常在LLVM后端和链接器,而库文件的瓶颈更多在前端类型检查和借用检查。文章指出在常见的编辑-构建-运行循环中,优化后端和链接器能显著提升体验,并建议Cargo未来可提供瓶颈提示功能。
评论点赞收藏883 天前

使用 cargo-wizard 自动化配置 Cargo 项目

作者开发了cargo-wizard工具,通过交互式界面自动化配置Cargo项目,以优化编译速度、运行性能或二进制大小,解决了配置选项发现难和手动配置繁琐的问题。
评论点赞收藏887 天前

登录芦苇

登录后关注作者、收藏内容和参与讨论。