Go Wiki:PortingPolicy

引言

本文檔說明新增 port 到 Go 主要存放庫的政策。port 指的是一個作業系統 + 架構組合,例如 linux/386。

本政策的目標是釐清 Go 計畫對於 port 保證的範圍,並避免累積不完整或損毀的 port。

新增 port 的要求

在將與 port 相關的程式碼新增到 Go 主要存放庫之前,必須先完成以下所有事項:

只要符合這些條件,Go 團隊便可以接受該移植並開始合併這些 CL。一旦所有 CL 都已提交,all.bash 就必須通過,讓建構器在面板中回報「正常」。

其他儲存庫

雖然 x/sys 儲存庫並非核心儲存庫的一部分,它應在發佈前新增對新移植的支援,因為它是新增系統呼叫的官方地方。在處理主儲存庫之前,先在 x/sys 儲存庫中新增對新移植的支援是可以接受的。

一流移植

某些移植被視為「一流」。此區別主要在於版本。

一流移植具有下列屬性

移植升級為「一流」須視 Google 的 Go 團隊裁量,並需要一份已接受的提案。

目前的「一流」移植為

所有 Linux 一流埠僅供使用 glibc 的系統使用。使用其他 C 函式庫的 Linux 系統不受完全支援,且不會被視為一流埠。

維護埠

一般來說,變更 Go tool 和標準函式庫的人員不得中斷上述所列的任一流埠。中斷一流埠的變更必須修正或回滾。

中斷次要埠的變更並不一定會回滾。如果存在中斷次要埠的某種合理可能性,建議開發人員確保埠持續運作(例如,透過執行特定於埠的嘗試機器人)。也建議開發人員將任何可能的特定於埠的問題通知次要埠維護人員,他們可以透過與適當GitHub 團隊聯繫來這麼做。儘管如此,最終而言,埠維護人員有責任使他們的埠持續運作。

損壞的埠

此處的目的不是從樹中移除埠;如果有人積極處理該埠,他們應該有儘可能多的修正緯度。移除先前運作的埠應該是最後手段。尋找新的維護人員總是很理想的。

移除舊作業系統和架構版本

隨著時間推移,為讓開發工作重點放在廣泛提供給 Go 使用者的系統上,我們可能會移除對舊作業系統和架構的支持,特別是舊作業系統版本和架構修訂。

決定是否移除對舊作業系統或架構版本的支援時,重要的考量因素包括

在考慮移除埠之後,若提案通過,Go 1.N 的版本說明會公告,在 Go 1.(N+1) 中移除對特定作業系統或架構的支援。

開始

有關如何撰寫新埠的一些說明,請參閱https://groups.google.com/forum/#!topic/golang-dev/SRUK7yJVA0c

評論和問題

關於政策的評論或問題應傳送至 golang-dev。


此內容是Go Wiki的一部分。