Web Analytics

Tony Bai

一个程序员的心路历程

尘封十年的 Go 提案迎来转机?bradfitz 亲自操刀 Demo,让加锁也能 select 了

Go issue #16620 提出于 2016 年,核心诉求是希望能在 `select` 语句中等待一个 `sync.Cond` 被唤醒,从而把条件变量和 channel、`context.Context` 混在一起使用。这个提案十年未决的根本原因,在于条件变量是“边沿触发(edge-triggered)”、而 channel 是“电平触发(level-triggered)”,两者语义难以直接调和。近期,bradfitz 在该 issue 下提交了一份 Demo CL(`go-review.googlesource.com/c/go/+/828544`),为 `sync.Mutex` 引入了实验性的 `LockChan()` 方法,让“抢锁”这个动作也能作为 `select` 的一个 case,从而原生支持“抢锁与超时 / 取消竞争”的写法。本文将梳理这段十年历史、拆解这份 Demo 的设计与语义,并讨论它对 Go 并发编程可能带来的影响与局限。

October 5, 2026 · 9 min · Tony Bai

Rust 引用的 4 种可变性组合:let mut 与 &mut,到底谁管谁?

本文详解 Rust 引用的 4 种可变性组合:`let mut` 控制指针能否改指,`&mut` 控制数据能否修改。文章逐一剖析四种可变性组合,对比 C++ 的 `const` 指针与 Go 的指针语义,并补充内部可变性、`&mut` 重借用、函数参数 `mut` 三个进阶要点。

October 4, 2026 · 9 min · Tony Bai

Rust 大佬为 AI 破例:十年来第一次,他说“命名参数”可以有

《Rust 程序设计语言》官方作者 Steve Klabnik 十年来首次改变立场,因 AI Coding Agent 的普及而松口支持“命名参数”;随后引发 Rust 咨询公司 Corrode 创始人 Matthias Endler 的强势回应:无需修改语言规范,Rust 现有的 Struct、Option、Default 与 Builder 等类型系统能力早已给出高阶解法。本文深度拆解这场关于函数参数传递与信息隐藏的十年论战,剖析当打字成本被 AI 抹平后,编程语言究竟该向“调用语法糖”倾斜,还是向“编译期类型约束”深化的核心工程哲学。

October 4, 2026 · 16 min · Tony Bai

Pi 1.0 炸场!OpenClaw 背后的 Agent 引擎,进化成了“杀不死”的 Harness

Pi 1.0 于 2026 年 10 月 1 日正式发布,同步推出实验性新包 Pi Durable。1.0 带来 Codemode(原生 MCP 支持)、虚拟模型扩展、延迟工具加载等更新,Pi Durable 则是为长时间运行、可崩溃恢复、多人协作的 Agent 应用设计的新底座。本文拆解两者的设计思路与取舍。

October 3, 2026 · 14 min · Tony Bai

AI时代,如何保持住那份编写代码的乐趣

AI编程时代,“手搓代码”正在变成一种稀缺技能。Haskell社区最近一篇长文引发共鸣:作者提出,想在LLM铺天盖地的今天继续享受编程,关键不是拒绝AI,而是重新分工——规划和调研可以外包给模型,但代码的“手感”必须留给自己。

October 2, 2026 · 16 min · Tony Bai