为什么我要用 Rust 重写 tmux?

| 技术技巧 | 218条评论
218

我想分享一下将原始代码库从大约 67,000 行 C 代码移植到大约 81,000 行 Rust 代码(不包括注释和空行)的过程。你可能会问:为什么用 Rust 重写 tmux?是的,我其实没有很好的理由。这是一个业余爱好项目

Rust 的依赖关系吓到了我

| 批评评论 | 571条评论
571

出于好奇,我运行了 toeki 这款用于计算代码行数的工具,发现 rust 代码竟然有 360 万行之多。删除供应商提供的软件包后,rust 代码减少到 11136 行。

美国国家安全局(NSA)和网络安全与基础设施安全局(CISA)联合发布的报告《内存安全语言:减少现代软件开发中的漏洞》

| 批评评论 | 50条评论
50

内存安全语言是减少软件漏洞的关键策略,但需平衡安全、性能与迁移成本。通过战略规划、跨领域协作和持续投入,MSL有望成为未来软件开发的基石,显著提升网络安全韧性。

Rust 中的奇怪表达式

| 技术技巧 | 111条评论
111

Rust 拥有非常强大的类型系统,但因此也存在一些怪癖,有些人甚至称其为“可恶的表达式”。rust 存储库中有一个测试文件 weird-expr.rs,用于测试其中的一些表达式,并确保它们在更新之间保持一致。因此,我想逐一介绍这些表达式,并解释它们在 rust 中是如何有效的。

为什么 Rust 编译器这么慢?

| 技术技巧 | 评论
0

异步函数的深度调用图的编译时间需要改进——可能是 LLVM 存在一个容易触发的特殊边界情况,而 rustc 生成的代码恰好触发了它,或者可能是其他语言中未充分利用的糟糕启发式算法。

微软发布用Rust编写的Linux版经典MS-DOS编辑器

| 技术技巧 | 292条评论
292

该编辑器向经典的MS-DOS 编辑器致敬,但采用了现代化的界面和与 VS Code 类似的输入控制。其目标是提供一个易于使用的编辑器,即使是那些对终端操作不太熟悉的用户也能轻松上手。

OpenAI 将用 Rust 重建 Codex CLI,放弃之前的 TypeScript 版本

| 批评评论 | 346条评论
346

借助 Rust,OpenAI 不仅改变了代码库,还改变了 Codex CLI 可以成为什么样的软件。从终端实用程序到可编程代理工具,CLI 的重建不仅是为了提高速度,还为了提高灵活性、可移植性和长期可维护性。

bzip2 crate 从 C 切换到 100% rust

| 新闻资讯 | 172条评论
172

为什么要花时间研究这个在当今几乎不再使用的 90 年代算法?问题是,许多协议和库仍需支持 bzip2 以符合其规范,因此许多项目在依赖树的深层仍依赖于 bzip2。我们利用在 zlib-rs 中的经验对 bzip2 实现进行了现代化改造。

Rust 比 C 更快吗?

| 技术技巧 | 评论
0

假设我们有一个初级开发人员在写 Rust,也在写 C,做的是同一个任务。我们会在其中一种语言中获得更快的代码吗?这控制了能力,但控制不了相同的代码。这是“相同”的吗?

Rust:愿者上钩

| 幽默讽刺 | 57条评论
57

Rust:愿者上钩

对 Rust 10 年的押注以及我对未来的期待

| 技术技巧 | 48条评论
48

2015年6月,Rust 1.0登陆的喧嚣一个月后,我写下了第一行Rust代码。我来自 C、Python 和 JavaScript,从此一发不可收拾。两家基于 Rust 的初创公司和 50 万行 Rust 代码之后,我在此对这一里程碑进行了一些反思。

如何处理 Rust 依赖项

| 技术技巧 | 评论
0

虽然一些微型 crates 各自都能很好地完成某项任务,但我们仍然应该寻找一种方法来减少依赖树中的依赖项数量。

在 Rust 中写入未初始化的缓冲区

| 技术技巧 | 111条评论
111

Rust 中的非初始化缓冲区是一个由来已久的问题, John Nunley and Alex Saveau 想到了一种新方法,使用 Buffer Trait,现在已经出现在 rustix 1.0 中,我将在这篇文章中介绍。

Rust 10 周年:一部破电梯如何彻底改变了软件

| 批评评论 | 评论
0

Mozilla 在火狐浏览器中使用了 Rust;谷歌在 Android、Chrome OS 和 Fuchsia 中使用了 Rust;微软在其 Windows 核心库和 Azure Confidential Compute 中使用了 Rust。离我最近的是,Linux 内核现在也采用了 Rust。

Rust 和 C 文件系统 API

| 技术技巧 | 48条评论
48

在我看来,在 Rust 一侧做更简洁的版本反而更容易,一旦我们知道了它的样子,也许我们就会更新 C 语言版本以与之匹配–或者我们点燃一切,继续用 Rust 重写一切。