2024.5.22日,Go 1.23 feature冻结!Go团队开始Go 1.23rc1的冲刺,截至发文时,Go 1.23 milestone已经完成59%(https://github.com/golang/go/milestone/212),还有188个open的issue待解决。
Go 1.23有哪些新feature?这个我会在后续撰写一篇文章单独说明。这里简单说说Go 1.23 Release Notes编写方式的改进 (部分由AI总结)。
根据https://github.com/golang/go/blob/master/doc/README.md和Ihttps://github.com/golang/go/issues/64169的内容,Go 1.23新版release notes的编写方式和流程可总结如下:
编写方式
开发人员在相关提交(commit)中添加release note片段文件到doc/next目录
每一个release note片段是一个单独的markdown文件 - 如果提交涉及新增API,需要在api/next和doc/next对应的package目录下添加描述文件
预览流程
可以通过tip.golang.org网站实时预览doc/next目录下所有release note片段的合并结果
也可以在本地通过运行golang.org/x/website/cmd/golangorg命令启动服务器,在localhost:6060/go.dev/doc/next预览
生成最终文件
release团队使用relnote generate工具将doc/next目录下的所有片段合并生成一个完整的Markdown文件
该文件最终会被移动到x/website库,用于正式发布
相比老版本,新版本的主要变化:
去中心化,由开发人员自己维护release note片段
采用多个小文件代替单个大文件,避免合并冲突
新增API需要同步添加release note和文档
可以在开发过程中实时预览release note的合并结果
生成最终文件采用自动化工具,而非手工整合
总的来说,新版本的流程更加分散、自动化,同时对开发人员要求也更高 - 需要及时添加release note片段并保持与代码变更同步。
但最终渲染后的呈现和以往版本的Release Notes似乎差别不大。