惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
Webroot Blog
Webroot Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
T
Threat Research - Cisco Blogs
V2EX - 技术
V2EX - 技术
L
LINUX DO - 热门话题
Google DeepMind News
Google DeepMind News
Recorded Future
Recorded Future
S
Schneier on Security
I
InfoQ
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The GitHub Blog
The GitHub Blog
S
Security @ Cisco Blogs
O
OpenAI News
W
WeLiveSecurity
Vercel News
Vercel News
阮一峰的网络日志
阮一峰的网络日志
Simon Willison's Weblog
Simon Willison's Weblog
人人都是产品经理
人人都是产品经理
Cloudbric
Cloudbric
The Last Watchdog
The Last Watchdog
The Hacker News
The Hacker News
Google Online Security Blog
Google Online Security Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
GbyAI
GbyAI
NISL@THU
NISL@THU
T
Tailwind CSS Blog
V
Visual Studio Blog
PCI Perspectives
PCI Perspectives
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Jina AI
Jina AI
D
DataBreaches.Net
B
Blog RSS Feed
N
News and Events Feed by Topic
N
News and Events Feed by Topic
H
Heimdal Security Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
腾讯CDC
Latest news
Latest news
V
Vulnerabilities – Threatpost
Hacker News: Ask HN
Hacker News: Ask HN
WordPress大学
WordPress大学
V
V2EX
aimingoo的专栏
aimingoo的专栏
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The Register - Security
The Register - Security
Help Net Security
Help Net Security

Tony Bai

不用 Python,也能训练大模型:两年之后再看 Go 语言机器学习框架 GoMLX 百万行代码,两周搞定!Anthropic揭秘AI代码迁移六步法:秘诀不是改代码,是改流程 重磅!Tokio官方发布全栈框架Topcoat:不用WASM,AI时代Rust也能“糊”网页了 软件工厂的明与暗:当代码可以自动生产,人类为何必须留下一盏灯? Twitter之父再出手:Block开源Buzz,要让人类和AI Agent「同工同权」 Go 密码学维护者放大招:把 Passkey 存成一行字符串,还顺手为 Go 1.28 写好了 API Loop Engineering才火两个月,硅谷已经卷出“Graph Engineering”了 我开源了 cc-session-migrate :让 Claude Code 会话在多台机器之间自由迁移 从掌上设备的失败到AI时代的基石:Java官方纪录片,揭开一门语言30年的生死赌局 “皇帝的新衣”一年后:对话Thorsten Ball谈Agentic编程 告别标签页焦虑:我让 AI 帮我做了个浏览器插件 TabQueue Bun刚把Zig重写成Rust,这个团队却用487天反向重写 为了一个函数名,Go官方吵了两个月:maps.Same提案近日正式通过 Go 1.28 路线图首度曝光:Cgo 告别C工具链?泛型容器将入标准库? 掌控外环:为什么“循环工程”的边界必须由人类死守? 别再往 Go 里塞 Java 了:拆解 spf13 的 Idiomatic Go 信仰 AI 不在乎代码烂不烂,但你的Token账单在乎:一项660次实验揭示的编程新常识 10倍速 TypeScript 7.0 正式发布,前Go产品经理:Go才是AI智能体时代的“天选语言” Bun 重写为 Rust 后,Zig 之父罕见开炮:“我们早就等着看你重写” 全新 AI 技术栈:模型、Harness、Loop 与自我进化的智能体 AI 重写 Bun 为Rust全过程揭秘:101万行代码、11天、64个Claude并行开工 MCP Server 架构模式全解析:5 种模式、4 个反模式,与那条不能越过的“工具数量红线” 从手动 govanityurls + Nginx 迁移到 gvu:一次真实迁移记录 Go 私有模块拉取全解:凭据配置 + Vanity URL,个人与组织全覆盖 从“切歌小工具”到“零人工代码”:Claude Code 的诞生史,比科幻还科幻 如何使用 Claude Code 构建 AI 循环系统(Loops) 5 分钟上手 gvu:把 vanity import path 这件事,从“半天运维”变成一条命令 Go 对语言演化的保守态度,在未来 5 年是否仍然正确呢? 五年,三篇文章,一个我一直没真正解决的问题 别把“容易”当“简单”:Gin 框架作者撰文揭秘 88k Star 背后的架构哲学 每个 AI 工程师都应该知道的 20 个循环设计模式 cc-switch-cli:专为终端控与远程开发打造的 Claude Code 多模型切换工具! Andrej Karpathy 解析 Loop Engineering:构建“数日级”长程 Agent 的 9 条黄金法则 HashiCorp 创始人:AI 时代,我们为什么越来越需要有“品味”的程序员? HashiCorp 创始人:AI 时代,我们为什么越来越需要有“品味”的程序员? 一个 Rust 项目吃掉 75GB 硬盘?聊聊 Go 与 Rust 的“缓存焦虑”与拯救指南 折腾过各种语言后,我为什么总是回到 Go 语言? YC 揭秘 AI 原生组织:打造一家在睡梦中自我进化的公司 从 WordPress 到 Hugo:一个 20 年技术博客的迁移实录 偿还十年技术债:深度拆解 Go 1.27 的 GODEBUG 强力清理计划 浏览器里的“安全阴谋”:为什么 Go 1.27 的 UUIDv7 会离奇丧失随机性? Go 1.27新特性前瞻:泛型方法落地,标准库内建 UUID - Tony Bai AI 正在撕裂研发团队:狂欢的“托管派”与心碎的“守夜人” - Tony Bai 屠榜 CNCF!为什么在云原生时代,Go 语言能把 Java、C++ 和 Rust 堵在门外? 上千程序员自爆 AI 的“卧槽时刻”:是推开神界大门,还是跌入黑盒地狱? - Tony Bai 大模型正在见顶!传奇架构师:欢迎来到“平坦曲线时代” - Tony Bai Anthropic 40万大样本揭秘:AI 时代为什么“专家”身价暴涨? - Tony Bai 在 AI 编码时代,为什么我们依然选择 Go 而不是 Rust? DeepMind 亮出王炸:别再手写 Agent Harness 了,AI 已经学会自己写了! 为什么说“编译通过,就能运行”?Google 专家 Alice 揭秘 Rust 的工程美学与底层逻辑 谷歌 SRE 重磅白皮书:当 AI 自动写出 10 倍代码,谁来阻止系统崩溃? 别再省 Token 了!硅谷新共识:浪费算力才是唯一捷径 - Tony Bai Linux 内核顶级维护者:写了 35 年 C,是 Rust 让我重新找回了编程的乐趣 拒领上亿、封杀 AI:Zig 之父为什么 10 年不发 1.0? 写地道的 Go 语言,是否能让你成为了一个更好的开发者? - Tony Bai RSA 将死?Let’s Encrypt 押注 MTCs 迎战后量子时代 C++ 的权力游戏:一部关于妥协、背叛与重生的“史诗神剧” - Tony Bai 终结十年纠结:Go 新提案允许 Example 支持任意函数签名 - Tony Bai 2026年,大厂重构核心系统为何集体投向 Go? - Tony Bai “辛辛苦苦考上985,却发现AI能替代我90%的工作”:今天的高考,我们还在为什么而战? - Tony Bai 传奇黑客 Geohot 炮轰 AI Agent:这是软件工程史上代价最昂贵的灾难! 别把 Go 写成 Java:毁掉项目从过度架构开始 - Tony Bai 开源维护者的困境 - Tony Bai AI 时代如何真正掌握一门新技术?这份非主流学习指南建议永久收藏 - Tony Bai Go 生态17年大浪淘沙:2026年最值得引入的10个“神仙级”QoL工具包 - Tony Bai 再见样板代码!Go 官方新提案:函数一键转接口 - Tony Bai 写代码快 10 倍,不等于研发快 10 倍!Google 揭秘 AI 系统级瓶颈 Google I/O 2026:Jeff Dean 携 DeepMind 众神宣告,AI Agent 正在终结“标准化软件”时代 AI 优化 1.5ms,手写 0.02ms!Ghostty 作者痛批 AI 编程“平庸陷阱” Redis 之父吐槽现代前端的复杂性:我们到底是在解决问题,还是在制造问题? - Tony Bai 无痛消灭技术债:Google I/O 2026 开启 Go 自动重构时代 省下 10% CPU!Uber 揭秘 Go 栈扩容的隐秘代价 从 Go 迁移到 Rust - Tony Bai 悄悄用 Go 重写 AI 基础设施:NVIDIA 的 GPU 云平台为何选择 Go? Shopify 23,000 名工程师背后的 Claude Code 配置方案(你可以直接复刻的完整配置) Google 开源 AX 与 Agent Substrate:构建以 Agent 为核心的云原生计算底座 十年难题终获突破:揭秘 Go 1.27 接口逃逸分析优化 - Tony Bai
171个“已批准”却迟迟未实现的提案:Go语言的十年“欠账清单”
Tony Bai · 2026-07-14 · via Tony Bai

题图

本文永久链接https://tonybai.com/2026/07/14/171-accepted-unimplemented-go-proposals-a-decade-of-technical-debt

大家好,我是Tony Bai。

Go 语言的提案(Proposal)机制,一直被认为是开源社区治理的范本之一:任何人都可以在 golang/go 仓库提交提案,经过公开讨论、每周例会审阅,最终由核心团队给出 Accepted(接受)/ Declined(拒绝)的结论。这套流程运行了十几年,外界普遍评价是“慢,但运行还算正常”。

不过,如果你打开 GitHub 上golang仓库的这条筛选链接:

state:open label:"Proposal-Accepted"

会看到一个略显尴尬的数字——171

也就是说,有 171 个提案已经被官方明确“批准通过”,却因为迟迟没有代码实现和代码合入,Issue 仍然挂在“未关闭”状态。其中年纪最大的一个,编号 #5901encoding/json:支持按 Encoder/Decoder 注册自定义的 marshal/unmarshal 规则),提交于 2013 年 7 月——距今已经 13 年。

“被批准”不等于“被实现”,这在任何工程体系里都不新鲜。但 Go 的特殊之处在于,它的提案库是完全公开、有据可查的,这让我们第一次可以完整地把这堆“技术欠账”翻出来,看看它到底欠了多久、欠在哪、以及官方最近有没有在还。

先做一次“体检”:171个Issue的画像

我们抓取了全部 171 条 Accepted 状态的 Issue,按创建时间、里程碑(Milestone)、涉及的包/工具做了统计。

先看年龄分布,以 2026 年 7 月为基准:

提案年龄 数量 占比
不到 1 年 9 5%
1–2 年 15 9%
2–3 年 22 13%
3–5 年 40 23%
5–8 年 44 26%
8–10 年 32 19%
10 年以上 9 5%

超过一半(约 50%)的已接受提案,积压时间在 5 年以上。这不是个案,是常态。

再看官方给它们排的"档期"(Milestone):

Milestone 数量 含义
Backlog 107 已批准,但暂无明确排期
Unreleased 22 已有代码但尚未随版本发布
Unplanned 21 已批准,明确说"暂不计划"
Go1.28 8 已排入下一个大版本
Go1.27 6 已排入即将发布的版本
Proposal 7 流程状态待整理

近 63% 的提案挂在 Backlog——这是 Go 团队一个相对诚实的做法:与其假装“很快就做”,不如明确标注“暂无人力,欢迎社区认领^_^”。

分类来看,欠账最多的是这几块:

  • x/* 扩展仓库(x/net、x/crypto、x/tools 等):31 个
  • 标准库综合类(无固定包前缀,多为语言/工具链层面):26 个
  • cmd/go 命令本身:22 个
  • 密码学相关(crypto/*x/crypto/*):22 个
  • 其他命令行工具(cmd/vetcmd/compilecmd/asm 等):19 个
  • net / net/http:13 个
  • testing / runtime:各 8 个

一个有意思的规律是:越“边缘”的仓库和越依赖社区贡献的领域,积压越严重x/* 系列仓库本来就不在 Go 核心团队的 KPI 里,crypto 相关提案往往涉及大量向后兼容的谨慎评估,天然就慢。

几个值得展开讲的“钉子户”故事

数据背后,每一个长期未落地的提案都有自己的故事。挑几个有代表性的说一说。

1. 十年之后,它真的要来了:类型推断的复合字面量

#12854spec: type inferred composite literals)创建于 2015 年 10 月,讨论热度极高——279 条评论,是 171 个提案里讨论最激烈的第二名。它想解决的问题很朴素:写 []*Point{{1, 2}, {3, 4}} 这种嵌套复合字面量时,能不能让编译器自动推断出内层的类型,而不用每次都写全 &Point{1, 2}

这个提案在漫长的拉锯之后被正式接受,而根据最新的里程碑标记,它已经被排进了 Go 1.28——也就是说,一个十年前提出的语法改进,很可能会在明年正式落地。这或许是本轮梳理里最好的"欠账终于要还"的例子。

2. 已经实现,却卡在"要不要默认打开":压缩包路径穿越漏洞

#55356archive/tar, archive/zip: add ErrInsecurePath)是个安全类提案,创建于 2022 年 9 月,背后关联了 CVE-2018-25046、CVE-2020-36560 等多个真实漏洞编号——archive/tararchive/zip 长期以来会原样返回压缩包里的路径,如果调用方不加处理直接落盘,就可能被"路径穿越"攻击写到任意目录。

有意思的是,这个提案早在 CL 449937 就已经写好代码合入了,但默认是关闭的,需要显式设置 GODEBUG=zipinsecurepath=1 才能拿到旧行为、=0 才是新的安全检查。原因是社区反馈发现大量 Docker 镜像里的 tar 文件本身就包含绝对路径,贸然把安全检查设为默认开启会大面积破坏现有程序。于是这个 Issue 至今仍然挂着 NeedsDecision 标签——代码已经写完,卡住的是"什么时候把开关默认打开"这个产品决策。这提醒我们:一个提案被标记 Accepted、甚至代码已经合并,也不代表它已经在你的程序里生效。

3. 被讨论了8年,至今没人交作业:go build -static

#26492 创建于 2018 年 7 月,标题很简单:给 go build 加一个 -static 参数,把现在那一长串魔法参数(-ldflags '-extldflags "-fno-PIC -static"' -buildmode pie -tags 'osusergo netgo static_build')封装起来。

八年过去,Issue 底下积累了 42 条评论,几乎全是社区用户在互相传授各种手写的静态编译参数组合,甚至还衍生出了 Windows、macOS、Alpine/musl 下各不相同的坑。核心维护者 Ian Lance Taylor 很早就说过,这个提案本身技术难度不大,缺的是有人愿意投入时间做跨平台测试,标签也一直是 help wanted。这是一个典型的"共识早已达成、代码却始终无人认领"的案例——它比拼的不是技术方案,而是谁愿意花时间去啃这块难啃的边角料。

4. 三年拉锯战:该不该允许"重试"一个测试

#62244cmd/go: add support for dealing with flaky tests),来自前Go核心成员、现Tailscale 工程师 Brad Fitzpatrick,想给 testing.T 加一个 Retry() 方法,让"偶发失败"的测试可以标记后自动重跑。

这条 Issue 引发了标准库维护者 Bryan Mills 等人长达数十条评论的细节争论——重试该发生在哪一层?子测试失败后父测试还能重试吗?会不会掩盖真正的数据竞争 Bug?最终提案在争论中被接受,目前标签里挂着 FixPending(修复代码正在流程中)。它的价值在于告诉我们:哪怕是一个看起来"该有"的功能,Go 团队也会为 API 的每一个语义细节较真到底,这也是为什么积压清单里有大量提案在"接受"和"落地"之间隔着好几年的讨论期。

5. 早就实现了大半,只是"迟迟关不掉":寄存器传参

#40724cmd/compile: switch to a register-based calling convention for Go functions)是本次梳理里讨论最激烈的提案,292 条评论。它提议把 Go 函数调用从"栈传参"改成"寄存器传参",预期能带来 5%–10% 的整体性能提升。

这个提案其实早在 Go 1.17(2021 年)就已经在 amd64、arm64 上落地,是过去几年 Go 运行时最重要的性能优化之一。但 Issue 至今没关——因为其他架构(386、MIPS 等)的寄存器 ABI 还没做完。这类"大提案"往往会被拆成几十个 CL 分批合入,“未关闭"不代表"没有进展”,反而可能是进展最快的那一批。

为什么会攒下这么多"欠账"?

把这些故事放在一起看,会发现"171"这个数字背后其实有几层原因,而不是简单的"Go团队拖延":

第一,“Accepted"从来只是共识,不是排期。

官方的表态非常明确——一旦提案通过,Issue 的定位就从"要不要做"变成"记录实现进度”,但具体谁来做、什么时候做,取决于是否有核心团队成员认领,或者是否有社区贡献者提交 CL。Backlog 里 107 个提案,本质上就是"没人认领"的状态。

第二,很多提案依赖社区,而不是 Google 内部资源。

打上 help wanted 标签的提案(比如 -static 标志),核心团队默认把它当作"欢迎外部贡献"的任务,如果没人主动提交实现,它可以在 Backlog 里一直放着。

第三,涉及行为变更的提案,往往要经过漫长的"软着陆"周期。

ErrInsecurePath 的故事说明,哪怕代码写完了,一旦涉及默认行为的改变,Go 团队宁愿先做成 GODEBUG 开关观察几个版本的兼容性反馈,也不愿贸然强推——这是 Go 1 兼容性承诺决定的谨慎风格,代价就是 Issue 长期挂着不关。

第四,x/* 扩展仓库和密码学模块本身优先级更低。

这两块加起来占了 171 个里的 53 个,接近三分之一,恰恰是因为它们不属于标准库的"必须维护"范围,或者涉及密码学安全审查,天然节奏更慢。

但迹象显示:官方正在"加速消化"

如果只看历史积压,容易得出"Go 提案机制正在失速"的悲观结论。但把镜头拉近到最近几周,会看到一些不一样的信号。

以文章开头提到的三个 Issue 为例,截至发稿(2026 年 7 月上旬),它们全部处于近一周内刚被更新的状态:

  • #62244(flaky test 重试):标签已更新为 FixPending,意味着修复代码正在评审队列中;
  • #55356(压缩包路径安全):近期仍有维护者在讨论默认行为切换的时间表;
  • #26492go build -static):社区在最近一周内仍有新的实践反馈提交。

再结合前面统计到的里程碑分布——Go 1.27(预计 2026 年 8 月发布)已明确排入 6 个历史遗留提案,Go 1.28 排入 8 个,其中就包括那个十年前的"类型推断复合字面量"提案。再往前看这几年的版本节奏:Go 1.26(2026 年 2 月发布)把 gotypesaliastlsunsafeekm 等好几个拖了多个版本的 GODEBUG 开关正式清理转正;Go 1.27 又计划继续清理一批遗留的兼容性开关。

这背后隐约能看到一种工作方式的转变:与其无限期地让一个"默认关闭的新行为"停留在 GODEBUG 里,Go 团队近几个版本明显加快了把这些历史开关"转正"或者"清理"的节奏,某种意义上也是在替多年前的提案"还账"。

如果你是 Go 用户或者贡献者,这份"171个已接受未实现"的清单其实很有实用价值:

  • 如果你正在等待某个 Go 新特性,先查一下它是不是已经"Accepted"却卡在 Backlog。这意味着共识早已达成,缺的只是实现者——如果你有能力,这可能是一个比"从零提案"低得多的贡献门槛。
  • 不要把"Accepted"等同于"即将发布"。一个提案从接受到真正随版本发布,中位数大概率要横跨好几个 Go 大版本,涉及兼容性的改动尤其如此。
  • 关注 Milestone 标签,而不是只看 Accepted 标签。挂着 Go1.27Go1.28 这类具体版本号的提案,才是短期内真正会落地的那一批;BacklogUnplanned 更像是一份"愿望清单"。

Go 的提案机制之所以被认为运行良好,恰恰是因为它把这些"没做完"的事情摆在明面上,而不是悄悄雪藏。

171 这个数字看起来触目惊心,但换个角度看,它也是一份公开、透明、随时可以被验证进度的路线图——这在很多闭源语言和框架里,是完全看不到的。


数据来源:GitHub golang/go 仓库 Issue 检索(state:open label:"Proposal-Accepted"),统计时间为 2026 年 7 月。文中提及的版本发布时间以 Go 官方发布说明为准,如有更新以官方信息为准。


还在为写 Agent 框架频频死循环、上下文爆炸而束手无策?我的新专栏 从0 开始构建 Agent Harness 将带你:

  • 抛弃臃肿框架,回归“驾驭工程 (Harness Engineering)”的第一性原理
  • 用 Go 语言手写 ReAct 循环、并发拦截与上下文压缩引擎等,复刻极简OpenClaw
  • 构建坚不可摧的 Safety Middleware 与飞书人工审批防线
  • 在底层实现 Token 成本审计、链路追踪与自动化跑分评估
  • 从“调包侠”进化为掌控大模型边界的“AI 操作系统架构师”

扫描下方二维码,开启从 0 开始构建Agent Harness 的实战之旅。


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。