cover of episode 第 10 期:2023 年 Go 贡献者峰会的所见所闻

第 10 期:2023 年 Go 贡献者峰会的所见所闻

2024/1/26
logo of podcast Go 夜聊

Go 夜聊

AI Deep Dive AI Insights AI Chapters Transcript
People
杨文
欧长坤
潘少(Andy)
Topics
欧长坤:参与了Go贡献者峰会,并对会议内容进行了总结和分享。 潘少(Andy):主要参与了WebAssembly和Go运行时性能相关的两个圆桌讨论,对WebAssembly的讨论主要集中在32位和64位支持的优化,以及编译器如何提供支持,但最终没有明确结论;在Go运行时性能讨论中,提出了NUMA-aware scheduler和io_uring networking的改进建议,但Go团队目前没有计划实施,因为他们对NUMA调度最佳实践和收益不确定,并且对基于现有架构的改造难度和性能提升的可能性表示怀疑,并担心破坏向后兼容性。 Keith Randall:在WebAssembly圆桌讨论中分享了Go编译器早期设计的一些原因,解释了当前对WebAssembly支持的不足,但没有给出明确的解决方案。 Dmitry Vyukov:Go运行时调度器的设计者,其设计对Go的性能有重大影响。 rsc:在Go运行时性能讨论中,其关于coroutine的观点被提及。 Ian:在Github issue上对io_uring networking的改进方案提出了质疑。 Michael:Go运行时团队成员,参与了性能相关的圆桌讨论。 欧长坤:Go团队倾向于解决80%的需求,将剩余部分留给社区,并更关注企业服务的需求;Go团队目前更关注Go runtime的profiling、tracing等工具链的改进,而不是性能的大幅提升,这可能导致Go在性能方面落后于其他语言。 潘少(Andy):Go标准库新增的slog日志库对Go的日志生态会有很大影响,但其未来发展和对现有第三方库的影响尚不明确;在为Go贡献零拷贝功能,但Go团队的代码审核流程较慢,且对外部开发者不够友好。

Deep Dive

Key Insights

为什么Go团队在2023年的贡献者峰会上没有明确的计划去实现NUMA-aware scheduler?

Go团队对NUMA调度的最佳实践并不十分了解,也不确定实现后是否能带来预期的性能提升。此外,没有其他编程语言有明确的NUMA调度经验可供参考。

Go团队在2023年贡献者峰会上对IO_uring的支持态度如何?

Go团队对IO_uring的支持表示怀疑,认为即使实现了也可能不会比现有的同步非阻塞IO方案性能更好。他们还担心这可能会打破Go网络编程的向后兼容性。

为什么Go团队倾向于挖一个大坑而不是渐进式地优化?

Go团队更倾向于解决80%的需求,倾向于做一些能够带来大量影响的事情,如PGO、泛型和并发GC。他们更倾向于将边边角角的事情留给社区来做。

Go团队在2023年贡献者峰会上主要关注哪些方面?

Go团队目前更关注profiling、tracing等工具链的开发,以帮助开发者更好地分析程序的性能瓶颈。他们似乎没有特别大的愿景或计划在Runtime中进行大规模的变动。

Go在2023年贡献者峰会上新增了什么日志库?

Go在标准库中新增了一个结构化日志库,名为slog(structuring log),这是社区长期呼吁的结果,旨在提供更好的日志记录和调试支持。

为什么Go团队在处理外部开发者的proposal时可能会显得不够重视?

Go团队可能更优先处理内部成员的proposal,外部开发者的proposal有时可能会被延迟处理或不被重视。这种区别对待在许多组织中都存在,但希望未来能有所缓解。

Andy在2023年贡献者峰会上最大的收获是什么?

Andy最大的收获是看到了一个健康的开源社区如何运作,外部贡献者基于自身业务需求反哺上游,推动语言的发展。此外,他也意识到Go团队目前更倾向于做一些工具链的优化,而不是大规模的Runtime变动。

为什么Go团队目前更倾向于做一些工具链的优化而不是大规模的Runtime变动?

Go团队目前更倾向于做一些外围的工具链优化,如profiling和tracing,以帮助开发者更好地分析程序性能。他们可能没有特别大的愿景或计划在Runtime中进行大规模的变动。

Go团队在2023年贡献者峰会上对WebAssembly的支持态度如何?

Go团队在WebAssembly的支持上没有明确的结论,讨论主要集中在32位和64位的支持优化上,但最终没有达成明确的解决方案,留下了开放式的结局。

为什么Go团队在2023年贡献者峰会上没有明确的计划去实现IO_uring?

Go团队对IO_uring的支持表示怀疑,认为即使实现了也可能不会比现有的同步非阻塞IO方案性能更好。他们还担心这可能会打破Go网络编程的向后兼容性。

Chapters
Go 夜聊第 10 期,嘉宾分享了在 Go 贡献者峰会上关于 WebAssembly 的讨论。讨论主要集中在 32 位和 64 位的支持,以及编译器如何更好地支持 WebAssembly。讨论没有明确的结论,但提出了许多有价值的观点。
  • 讨论集中在 32 位和 64 位 WebAssembly 支持
  • Keith Randall 分享了 Go 编译器设计的历史原因,解释了当前支持 WebAssembly 的难点
  • 讨论没有得出明确结论,问题留待后续解决

Shownotes Transcript

第 10 期:2023 年 Go 贡献者峰会的所见所闻

本期摘要:这是 Go 夜聊的第十期节目,也是我们第九期的续集,是由 Go 语言峰会参与者欧长坤和潘少(Andy)一起为我们带来的一些他们在 Go 语言峰会上的所见所闻。让我们有机会能参与其中,了解其中的故事和过程。虽然仅仅只是很短的时间,但是你听过之后一定会觉得这个会议应该不止开那么短吧。信息密度非常大,建议大家反复收听。

时间线

  • 00:21 开场

  • 01:20 欧长坤和潘少(Andy)参加 Go 语言贡献者峰会

  • 01:55 第一个圆桌讨论:WebAssembly

  • 03:15 Keith Randall 大佬被提及

  • 05:00 Go runtime 圆桌讨论话题一:NUMA-aware scheduler for Go

  • 06:00 Dmitry Vyukov 大佬被提及

  • 11:40 Go runtime 圆桌讨论话题一:io_uring networking for Go

  • 16:18 Coroutine for Go by rsc

  • 20:37 Go runtime 渐进式改造

  • 23:33 Go 团队倾向于挖一个大坑

  • 26:00 Go 标准库新加了一个 log 库:slog

  • 32:10 推荐环节

录制时间: 2023-09-28

相关链接

📝 联系我们