Go 開發團隊正式發布 Go 模組鏡像網站、索引以及校驗和資料庫功能,而官方也預告,在即將推出的 Go 1.13 中,將會預設啟用模組鏡像網站以及校驗和資料庫。
模組鏡像網站是一個特殊的模組代理,會將元資料和原始碼快取在自己的儲存系統中,即便未來模組原始碼已經在原始位置消失,模組鏡像網站仍可以繼續提供這些消失的模組,因此其除了可以加速使用者模組下載的速度外,模組鏡像網站還能保護開發者的專案,持續擁有相依項目支援。Go 開發團隊表示,模組鏡像網站在 proxy.golang.org 上提供,Go 1.13 的上的指令將預設使用鏡像網站,而對於使用較舊版本的開發者,也能透過配置代理,使用模組鏡像網站。
而模組擁有一個稱為 go.sum 的檔案,Go 指令可以使用其中包含的雜湊,偵測原始伺服器或是代理的錯誤行為,像是為同一個版本模組提供不同的程式碼。開發團隊提到,go.sum 檔案機制的侷限,在於其運作完全仰賴開發者第一次使用,當開發者將新的相依項目添加進模組的時候,Go 指令會擷取程式碼,並動態地在 go.sum 檔案中新增。
但問題在於,在 go.sum 中新增的內容沒有被檢查過,因此 Go指 令新增的內容可能與為其他人產生的內容不同,而這可能是因為代理故意針對開發者產生的惡意程式碼。Go 團隊為了解決這個問題,現在推出了校驗和資料庫功能,以確保 Go 指令總是為所有人的 go.sum 檔案,產生相同的內容。當 Go 指令收到新的原始碼的時候,可以根據全域資料庫驗證原始碼的雜湊,驗證確保所有人在特定版本模組都擁有相同的原始碼。
模組索引功能由 index.golang.org 提供,並且為模組鏡像網站上的新模組版本公開饋給(Feed),能方便地讓工具開發者,在 proxy.golang.org 中快取可用的內容,或是隨時取得模組更新的資訊。