golang (GitHub)

RSS: https://github.com/golang.atom
Go 语言 GitHub 官方主页,由 Google 设计的快速、静态类型、编译型开源编程语言。

Go语言正式提议:支持泛型方法

Go核心团队成员Russ Cox等人正式提议在Go语言中添加泛型方法支持。该提案认为,尽管泛型方法不能直接实现接口方法,但作为类型关联函数,它们在代码组织和语法表达上仍有独立价值。提案详细说明了语法变更、向后兼容性、编译器实现思路以及对现有工具链的影响,并指出这不会阻碍未来泛型接口方法的探索。社区反应热烈,支持票远超反对票。
评论点赞收藏80 天前

Go 标准库即将新增 UUID 支持

Go 官方正式接受提案,计划将 UUID 包加入标准库,目标版本 Go 1.27。该提案源于社区长期需求,因为目前 Go 开发者普遍依赖第三方 google/uuid 包。讨论中涉及了 UUID 版本演进(如 v7)、解析必要性以及与其他主流语言标准库的对齐问题。最终决定聚焦于生成 API,解析功能可能暂不包含。
评论点赞收藏162 天前

Go 提案:引入架构特定的 SIMD 内在函数

Go 核心团队提出了一项新提案,旨在通过 GOEXPERIMENT=simd 引入架构特定的 SIMD 内在函数支持。该方案采用两级设计:底层提供类似系统调用的低级 API,直接映射硬件指令以追求极致性能;高层则计划构建可移植的向量 API。目前重点实现了 AMD64 架构下的固定大小向量操作,包括数据类型定义、加载存储、掩码处理及 CPU 特性检测等详细设计规范。此举旨在解决纯手写汇编维护困难的问题,同时避免引入复杂的语言级变更,为高性能计算场景提供更优解。
评论点赞收藏320 天前

Go 语言推出 Green Tea 垃圾回收器:通过内存局部性优化大幅降低多核 GC 开销

Go 核心团队发布了名为 Green Tea 的新型垃圾回收器原型,旨在解决传统三色标记算法在内存局部性上的缺陷。该算法通过扫描连续的内存块(Span)而非单个对象,显著提升了空间和时间局部性。实测数据显示,在多核环境下 GC CPU 开销降低 10-50%,缓存命中率大幅提升。虽然部分特定场景存在回归,但整体代表了 Go 运行时性能优化的重要方向,且为未来的 SIMD 加速奠定了基础。
评论点赞收藏428 天前

Go官方提案:在net/http中新增自动防御CSRF的处理器

Go官方提出在net/http包中增加CrossOriginForgeryHandler,旨在通过Sec-Fetch-Site和Origin头自动防御CSRF攻击,减少开发者手动配置Token的负担。文章详细分析了现有第三方库的缺陷及各类防御机制的优劣,并给出了具体的API设计。这对Go后端开发者是重大利好,直接解决了长期存在的安全痛点,且方案成熟度高,极具讨论价值。
评论点赞收藏461 天前

Go官方提案:增加裸机运行支持,让Go脱离操作系统直接控制硬件

Go官方仓库提出新提案,建议引入类似GOOS=none的目标,支持Go程序在无操作系统环境下直接运行(裸机模式)。该功能目前由Tamago项目实现,已覆盖AMD64、ARM和RISC-V架构。提案详细列出了运行时所需的硬件初始化、随机数生成、中断处理等接口规范,并展示了在KVM、UEFI及嵌入式设备上的实际应用案例。此举旨在将Go从应用层扩展至系统底层和嵌入式领域,引发社区广泛关注和大量点赞。
评论点赞收藏465 天前

自定义实现 slog.Handler 完全指南

Go官方提供的关于如何自定义实现slog.Handler接口的详细指南。文章解释了Logger与Handler的协作机制,并逐一拆解了Enabled、Handle、WithAttrs和WithGroup四个核心方法的实现细节。文中包含大量代码示例,指导开发者如何处理并发安全、性能优化(如预格式化属性)以及属性分组逻辑,适合需要定制日志输出格式或集成外部系统的Go开发者。
评论点赞收藏497 天前

Go官方提案:encoding/json/v2 新API设计

Go官方提出encoding/json/v2的新API提案,计划纳入Go 1.27版本。核心变化是将JSON处理分为语法层(jsontext包,无反射)和语义层(v2包,基于反射)。新API支持流式处理、零分配Token、更严格的类型控制(如Float32)、以及符合RFC标准的格式化选项。v1包将基于v2实现以保持兼容。这是Go标准库历史上最大的修改之一,旨在解决v1性能瓶颈和灵活性不足的问题,对Go开发者影响重大。
评论点赞收藏505 天前

Go编译器在TypeScript-Go项目中的逃逸分析性能瓶颈

TypeScript官方用Go重写的编译器在编译其核心检查模块时,Go编译器逃逸分析耗时过长(单核占用极高,多核利用率差)。作者提供了详细的性能剖析数据和复现步骤,指出这是Go编译器在处理大规模、方法密集的Go代码包时的潜在性能瓶颈。该问题已提交至Go官方仓库,属于编译器底层性能优化议题,对关注Go编译器内部机制及大型项目构建效率的技术读者有较高参考价值。
评论点赞收藏520 天前

Go编译器栈溢出决策失误导致代码变慢14%:底层性能优化实录

Go核心团队成员rsc在GitHub Issue中深入剖析了编译器寄存器分配的一个具体性能陷阱。他发现math/big包中一个微小的代码变动(引入临时变量)竟能让基准测试提速14%。根本原因在于编译器在函数调用前后的栈溢出(spill)决策失误,导致不必要的寄存器交换和死代码加载。作者不仅展示了汇编层面的证据,还手动修复了这些冗余指令,进一步提升了17%的性能。评论区另一位资深开发者也证实这是Go编译器regalloc模块的常见短板,缺乏LLVM那样的多轮清理优化。这是一个极具价值的底层性能调优案例,揭示了编译器内部决策对最终二进制文件效率的巨大影响。
评论点赞收藏539 天前

Go 官方提案:引入 sync/v2 包以实现 Map 和 Pool 的类型安全与泛型化

Go 核心团队成员 ianlancetaylor 正式提出创建 sync/v2 包的提案。旨在解决当前 和 sync.Pool 因诞生于泛型之前,使用 any 类型导致缺乏编译期类型安全及额外内存分配的问题。新包将提供泛型版本的 Map 和 Pool,允许开发者在享受类型安全的同时提升性能。该提案引发了关于具体 API 设计(如 Cond 锁条件变量的泛型策略、CompareAndDelete 的实现机制)的深入技术讨论。
评论点赞收藏556 天前

Steam 启动的 Go 应用在 Windows 上偶发卡死,疑与 Steam 注入钩子冲突

Go 开发者 hajimehoshi 报告了一个在 Windows 上通过 Steam 启动的 Go 应用偶尔会卡死超过 10 秒的问题。经过排查,发现当 GC 暂停时问题消失,且该问题仅在通过 Steam 客户端运行时出现。进一步调试显示,卡死时大部分线程阻塞在 NtWaitForSingleObject,疑似与 Steam Overlay 注入的 hook 函数(如 gameoverlayrenderer64!OverlayHookD3D3)存在交互冲突。这是一个典型的底层运行时与第三方平台注入机制冲突的案例,对开发跨平台游戏或需要高性能渲染的 Go 应用者有重要参考价值。
评论点赞收藏559 天前

Go语言重大提案:引入'?'运算符简化错误处理

Go核心团队成员Ian Lance Taylor发起关于引入'?'运算符简化错误处理的讨论。该提案旨在减少样板代码,让主要逻辑更清晰。文章详细列出了语法规范、优缺点分析及对标准库的影响。这是Go语言历史上罕见的重大语法变更讨论,直接触及开发者日常痛点,极易引发关于语言设计哲学(简洁vs显式)的激烈争论。
评论点赞收藏564 天前

Go语言新提案:使用问号语法简化错误处理

Go核心团队成员提出新提案,建议引入问号(?)语法简化错误处理。该语法允许在函数调用后直接跟?,自动处理错误返回,减少大量样板代码。提案详细对比了传统if err!=nil写法与新语法的差异,分析了潜在优缺点,包括可能带来的控制流混淆和现有代码兼容性问题。这是Go语言近年来最具争议的语法变更提案之一,直接影响开发者日常编码习惯。
评论点赞收藏579 天前

Go 提案:以有限类型集接口实现联合类型

这是一篇关于 Go 语言规范变更的提案。作者提议利用现有的接口语法,引入“有限类型集接口”作为联合类型(Union Type)。与之前被拒绝的方案不同,该提案限制只能使用确切类型(如内置类型、结构体、指针等),排除方法集和底层类型操作符,以确保类型集合是有限的,从而支持编译器的穷举类型检查(exhaustive type switch)。作者认为这能简化语法并增强类型安全,特别是在处理类似 protobuf 生成的代码时。尽管增加了接口语法的歧义性,但该提案被视为 Go 泛型概念的延伸。
评论点赞收藏613 天前

登录芦苇

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