Go 1.26 新特性前瞻:从 Green Tea GC 到语法糖 new(expr),性能与体验的双重进化
本文永久链接 – https://tonybai.com/2025/12/16/go-1-26-foresight 大家好,我是Tony Bai。 随着2025年11月末 Go 1.26 开发分支的功能冻结(Feature Freeze),这份预计于 2026 年初发布的版本终于揭开了神秘面纱。 ...
本文永久链接 – https://tonybai.com/2025/12/16/go-1-26-foresight 大家好,我是Tony Bai。 随着2025年11月末 Go 1.26 开发分支的功能冻结(Feature Freeze),这份预计于 2026 年初发布的版本终于揭开了神秘面纱。 ...
本文永久链接 – https://tonybai.com/2025/12/05/proposal-runtime-secret 大家好,我是Tony Bai。 “如果你的服务器被攻破,攻击者能否拿到内存中残留的私钥,进而解密过去两年的所有通信记录?” 这是一个让所有安全工程师夜不能寐的问题。为了防止这种情况,现代加密协议(如 TLS 1.3, WireGuard)都强调前向保密 (Forward Secrecy):使用临时的、一次性的密钥,并在使用后立即销毁。 ...
本文永久链接 – https://tonybai.com/2025/11/30/ice-assertion-failed-with-append 大家好,我是Tony Bai。 在软件开发中,我们有时会遇到一些“显而易见”的错误。对于 Go 开发者而言,append 内建函数的第一个参数必须是切片,似乎就是这样一个“常识”。然而,当一个本应产生清晰编译错误的“常识性”错误,却导致了 Go 1.25.4 编译器的内部崩溃 (Internal Compiler Error, ICE) 时,事情就变得不再简单。 ...
本文永久链接 – https://tonybai.com/2025/11/28/go-2026-roadmap-revealed 大家好,我是Tony Bai。 在最近的一期 Go 编译器与运行时团队会议纪要中,我们惊喜地发现了一份关于 2026 年的规划 (2026 planning,如下图)。这份规划虽然简短,但其包含的信息量却足以让任何一位关注 Go 语言未来的开发者心跳加速。 ...
本文永久链接 – https://tonybai.com/2025/11/15/go-turns-16 大家好,我是Tony Bai。 今年的 Go 官方16岁“庆生”文章,来得比以往时候都要晚一些。 往年,我们总能在 11 月 10 日或 11 日,准时收到这份来自 Go 团队的年度“家庭来信”。但今年,日历翻过了好几天,官方博客却依旧静悄悄。前几天,我还在知识星球上和星友们“抱怨”:“今年 Go 官方居然没有发 16 周年庆生纪念文章,比较反常啊!是忙忘了?还是没人有空写?” ...
本文永久链接 – https://tonybai.com/2025/11/06/proposal-simd-cpu-feature-vet-check 大家好,我是Tony Bai。 Go 1.26 将于11月份功能特性冻结,其最令人期待的实验特性之一,无疑是simd 包的引入。它承诺为 Go 开发者解锁 SIMD (Single Instruction, Multiple Data) 的强大能力,让我们能编写出榨干现代 CPU 向量化计算潜能的高性能代码。然而,在这片兴奋的浪潮之下,一个不和谐的声音却悄然响起,而这个声音,来自 Go 语言的联合创始人之一——Rob Pike。 ...
本文永久链接 – https://tonybai.com/2025/10/31/deep-into-go-green-tea-gc 大家好,我是Tony Bai。 关注 Go 语言演进的 Gopher 们可能已经注意到,Go 团队更换技术负责人以来,对运行时 (runtime) 和编译器 (compiler) 核心组件的打磨正日益成为团队的工作重心。从备受期待的“绿茶”GC (Green Tea GC),到 标准库simd 加速包的探索,再到 基于swisstable的 map 的实现,以及 json/v2 的设计实现,一系列动作都预示着 Go 正在其性能核心地带进行着深刻的自我革新。 ...
本文永久链接 – https://tonybai.com/2025/10/16/cpu-cache-friendly-in-go 大家好,我是Tony Bai。 “现代 CPU 很快,而内存很慢。” 这句看似简单的陈词滥调,是理解现代高性能编程的唯一“真理”。我们常常致力于优化算法的时间复杂度,却忽略了一个更为根本的性能瓶颈:数据在内存和 CPU 缓存之间的移动。一次 L1 缓存的命中可能仅需数个时钟周期(~1ns),而一次主内存的访问则需要超过上百个周期(~100ns),这之间存在着超过 100 倍的惊人差距(2020年数据,如下图,近些年内存速度提升,但与L1缓存相比依旧有几十倍的差距)。 ...
本文永久链接 – https://tonybai.com/2025/09/24/evolving-your-go-api 大家好,我是Tony Bai。 你在 package 中导出的每一个 func 和 type,都是一份对用户的承诺。然而,变化是软件开发中唯一不变的真理。当需求变更、bug 修复、甚至认知升级时,你将如何修改这份“承诺”,同时又最大限度地减少对你和你的用户造成的破坏? ...
本文永久链接 – https://tonybai.com/2025/07/24/deadlock-detection-by-gc 大家好,我是Tony Bai。 Go 语言的 go 关键字让并发编程变得前所未有的简单,但也带来了新的挑战。当所有 goroutine 都陷入阻塞时,Go runtime 会报告一个“全局死锁”并终止程序。然而,更常见也更隐蔽的是部分死锁:一部分 goroutine 永久阻塞,而程序的其他部分仍在运行。 ...