Go Wiki:移植策略

简介

本文档介绍了将新端口添加到 Go 主存储库的策略。端口是指操作系统 + 架构组合,例如 linux/386。

此策略的目标是阐明 Go 项目试图为端口承诺的内容,并避免积累不完整或损坏的端口。

新端口的要求

在将与端口相关的任何代码添加到 Go 主存储库之前,必须完成以下所有操作

一旦满足这些条件,Go 团队就可以接受端口并开始合并 CL。提交所有 CL 后,all.bash 必须通过,以便构建器在仪表板中报告“ok”。

其他存储库

尽管它不是核心存储库的一部分,但 x/sys 存储库应在发布之前添加对新端口的支持,因为它是在添加新系统调用的官方位置。在处理主存储库之前,在 x/sys 存储库中添加对新端口的支持是可以的。

一等端口

某些端口被认为是一等端口。区别主要在于版本发布。

一等端口具有以下属性

将端口升级为“一等”由 Google 的 Go 团队自行决定,并且需要一个已接受的提案。

当前的一等端口为

所有 Linux 一等端口仅适用于使用 glibc 的系统。使用其他 C 库的 Linux 系统不受完全支持,也不被视为一等端口。

维护端口

一般来说,更改 Go 工具和标准库的人员不得破坏上面列出的任何一等端口。破坏一等端口的更改必须修复或回滚。

破坏辅助端口的更改不一定需要回滚。如果存在破坏辅助端口的合理可能性,鼓励开发人员确保端口继续工作(例如,通过运行特定于端口的 trybots)。还鼓励开发人员通知辅助端口维护人员任何可能的特定于端口的问题,他们可以通过联系相应的GitHub 团队来做到这一点。也就是说,最终端口维护人员负责保持其端口的工作状态。

损坏的端口

这里的目标不是从代码树中删除端口;如果人们正在积极地处理该端口,则应尽可能地让他们有自由修复它。删除以前工作的端口应该是最后的选择。找到新的维护人员总是更好的。

删除旧的操作系统和架构版本

为了使开发工作能够专注于 Go 用户广泛使用的系统,随着时间的推移,我们可能会删除对旧的操作系统和架构的支持,尤其是旧的操作系统版本和架构修订版。

决定是否删除对旧操作系统或架构版本的支持时,需要考虑的重要事项是

当这些考虑因素有利于删除端口并且提案被接受时,Go 1.N 的发行说明将宣布 Go 1.(N+1) 中将删除对给定操作系统或架构的支持。

入门

请参阅https://groups.google.com/forum/#!topic/golang-dev/SRUK7yJVA0c,了解有关如何编写新端口的一些讨论。

评论和问题

有关此策略的评论或问题应发送到 golang-dev。


此内容是Go Wiki的一部分。