Go Wiki: ポート移植ポリシー

はじめに

このドキュメントは、メインのGoリポジトリに新しいポートを追加するためのポリシーについて説明しています。ポートとは、linux/386など、オペレーティングシステムとアーキテクチャの組み合わせを意味します。

このポリシーの目標は、Goプロジェクトがポートに対して何を約束しようとしているかを明確にし、不完全または破損したポートの蓄積を防ぐことです。

新しいポートの要件

ポートに関連するコードをメインのGoリポジトリに追加する前に、次のすべてを実行する必要があります。

これらの条件が満たされると、Goチームはポートを受け入れ、CLのマージを開始できます。すべてのCLが提出されると、all.bashはパスする必要があり、ビルダーはダッシュボードに「ok」と報告します。

その他のリポジトリ

コアリポジトリの一部ではありませんが、x/sysリポジトリは、新しいシステムコールを追加する公式の場所であるため、リリースが行われる前に新しいポートのサポートを追加する必要があります。メインリポジトリで作業する前に、x/sysリポジトリに新しいポートのサポートを追加しても問題ありません。

ファーストクラスポート

一部のポートは「ファーストクラス」と見なされます。その違いは主にリリースに関するものです。

ファーストクラスポートには、次の特性があります。

ポートを「ファーストクラス」に昇格させるかどうかは、GoogleのGoチームの裁量に委ねられており、承認された提案が必要です。

現在のファーストクラスポートは次のとおりです。

すべてのLinuxファーストクラスポートは、glibcのみを使用するシステム用です。他のCライブラリを使用するLinuxシステムは完全にサポートされておらず、ファーストクラスとして扱われません。

ポートの維持

一般的に、Goツールと標準ライブラリを変更する人は、上記のファーストクラスポートを壊してはなりません。ファーストクラスポートを壊す変更は、修正するかロールバックする必要があります。

セカンダリポートを壊す変更は、必ずしもロールバックされません。セカンダリポートを壊す可能性がある場合、開発者はポートが引き続き機能することを確認することをお勧めします(たとえば、ポート固有のトライボットを実行することにより)。開発者は、適切なGitHubチームに連絡することで、考えられるポート固有の問題についてセカンダリポートメンテナーに通知することもお勧めします。ただし、最終的には、ポートメンテナーが自分のポートの動作を維持する責任を負います。

破損したポート

ここでの目標は、ツリーからポートを取り除くことではありません。人々がポートで積極的に作業している場合は、それを修正するために可能な限り多くの自由度を与える必要があります。以前は機能していたポートを削除することは、最後の手段とする必要があります。新しいメンテナーを見つける方が常に優先されます。

古いオペレーティングシステムとアーキテクチャのバージョンの削除

Goユーザーが広く利用できるシステムに開発努力を集中できるようにするために、時間の経過とともに、特に古いオペレーティングシステムのバージョンとアーキテクチャのリビジョンについては、古いオペレーティングシステムとアーキテクチャのサポートを削除することがあります。

古いオペレーティングシステムまたはアーキテクチャのバージョンに対するサポートを削除するかどうかを決定する際の重要な考慮事項は次のとおりです。

考慮事項がポートの削除を支持し、提案が承認された場合、Go 1. *N*のリリースノートには、特定のオペレーティングシステムまたはアーキテクチャのサポートがGo 1.(*N* + 1)で削除されることが発表されます。

はじめに

新しいポートの作成方法に関する議論については、https://groups.google.com/forum/#!topic/golang-dev/SRUK7yJVA0cを参照してください。

コメントと質問

ポリシーに関するコメントや質問は、golang-devに送信してください。


このコンテンツはGo Wikiの一部です。