Go on ARM 和未來,Apple M1 支援來了
最近業界對非 x86 處理器充滿了熱議,因此我們認為值得寫一篇博文來聊一聊關於 Go 對新架構的支援。
對我們而言,Go 的可移植性一直很重要,而不是使其過度適合任何特定的作業系統或體系結構。Go 的初始開源版本 包括對兩個作業系統(Linux 和 Mac OS X)和三個體系結構(64 位 x86、32 位 x86 和 32 位 ARM)的支援。
多年來,我們增加了對更多作業系統和體系結構組合的支援:
- Go 1(2012 年 3 月)支援原始系統以及 64 位和 32 位 x86 上的 FreeBSD,NetBSD 和 OpenBSD,以及 32 位 x86 上的 Plan 9。
- Go 1.3(2014 年 6 月)新增了對 64 位 x86 上 Solaris 的支援。
- Go 1.4(2014 年 12 月)新增了對 32 位 ARM 上的 Android 和對 64 位 x86 上的 Plan 9 的支援。
- Go 1.5(2015 年 8 月)增加了對在 64 位 ARM 和 64 位 PowerPC 上的 Linux 以及在 32 位和 64 位 ARM 上的 iOS 的支援。
- Go 1.6(2016 年 2 月)新增了對 64 位 MIPS 上的 Linux 以及 32 位 x86 上的 Android 的支援。它還為 32 位 ARM 上的 Linux(主要是 Raspberry Pi 系統)新增了官方二進位制下載。
- Go 1.7(2016 年 8 月)增加了對 z Systems(S390x)上的 Linux 和 32 位 ARM 上的 Plan 9 的支援。
- Go 1.8(2017 年 2 月)增加了對 32 位 MIPS 上的 Linux 的支援,並且增加了 64 位 PowerPC 和 z Systems 上 Linux 的官方二進位制下載。
- Go 1.9(2017 年 8 月)增加了 64 位 ARM 上 Linux 的官方二進位制下載。
- Go 1.12(2018 年 2 月)新增了對 32 位 ARM 上的 Windows 10 IoT 核心的支援,例如 Raspberry Pi3。它還新增了對 64 位 PowerPC 上的 AIX 的支援。
- Go 1.14(2019 年 2 月)新增了對 64 位 RISC-V 上 Linux 的支援。
儘管在 Go 的早期,x86-64 埠得到了大多數關注,但是今天,我們所有基於 SSA 的編譯器後端都很好地支援了所有目標架構並生成出高質量的程式碼。許多貢獻者一直為我們提供幫助,包括來自 Amazon,ARM,Atos,IBM,Intel 和 MIPS 的工程師
Go 支援所有現成系統的交叉編譯,只需最少的工作。例如,要從 64 位 Linux 系統為基於 32 位 x86 的 Windows 構建應用程式:
GOARCH=386 GOOS=windows go build myapp # writes myapp.exe
在過去的一年中,幾家主要供應商宣佈了用於伺服器,膝上型電腦和開發人員機器的新型 ARM64 硬體。Go 已經為此做好了準備,多年來,Go 一直在為 ARM64 Linux 伺服器上的 Docker,Kubernetes 和其餘 Go 生態系統以及 ARM64 Android 和 iOS 裝置上的移動應用程式提供支援。
自從今年夏天蘋果宣佈 Mac 過渡到蘋果晶片以來,蘋果和谷歌一直在努力確保 Go 和更廣泛的 Go 生態系統在它們上執行良好,它們都在 Rosetta 2 下執行 Go x86 二進位制檔案,並執行本機 Go ARM64 二進位制檔案。本週初,我們釋出了第一個 Go 1.16 beta,其中包括對使用 M1 晶片的 Mac 的原生支援。您可以在 Go 下載頁面上下載並試用 M1 Mac 和所有其他系統的 Go 1.16 beta 。(當然,這是一個 beta 版本,並且像所有 beta 一樣,它肯定存在我們不知道的錯誤。如果遇到任何問題,請在 golang.org/issue/new 中報告。)
使用與生產中相同的 CPU 架構進行本地開發總是很高興,以消除兩種環境之間的一種差異。如果部署到 ARM64 生產伺服器,Go 還將使在 ARM64 Linux 和 Mac 系統上的開發也變得容易。但是,當然,無論您是在 x86 系統上工作並部署到 ARM,在 Windows 上工作並部署到 Linux 還是其他組合,在一個系統上工作並交叉編譯以部署到另一個系統仍然像以前一樣容易。。
我們要新增支援的下一個目標是 ARM64 Windows 10 系統。如果您有專業知識並想提供幫助,我們正在 golang.org/issue/36439 上協調工作。
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- 官方 Go Team leader Russ Cox 和 Go 作者之一 Robert 來 GopherChina 大會了,和你一起面對面聊聊 Go 的未來Go
- 微軟Win10 Redstone更新未來可能將會支援ARM64處理器微軟Win10
- Macbook(M1版)的使用者看過來,.net 6 Preview 6支援Apple Silicon for macOSMacViewAPP
- 支援M1晶片的選單欄管理工具來了!Bartender 4 for Mac晶片Mac
- 哪些Apple裝置支援這次系統更新?來看你的舊Apple裝置支援最新系統嗎APP
- 來講講Cortex-M、 ARM、和LinuxLinux
- 更新速度越來越慢,Apple Arcade究竟怎麼了?APP
- 為了未來的使用測試
- Kotlin 新版來了,支援跨平臺!Kotlin
- JavaScript的進化和未來JavaScript
- 好未來有沒有“好未來”?
- 來了來了,國服Steam真的來了
- Go 跨平臺 UI 庫來了 fyneGoUI
- 它來了 它來了。Laravel Reverb 到來了Laravel
- 能救命的Apple Watch和雙卡雙待的iPhone來了,你準備好了嗎?APPiPhone
- Angular、Vue、React和前端的未來AngularVueReact前端
- Serverless 的初心、現狀和未來Server
- Android Kotlin 的現狀和未來AndroidKotlin
- Superedge的新特性和未來之路
- 假期結束了,我相信未來會更好!
- 來了,來了,你們要的Nginx教程來了Nginx
- 來了來了,CSS 版的冰墩墩來了……CSS
- Apple M1 vs. M1 Pro vs. M1 Max:Apple 的新晶片有多快?APP晶片
- 《重返未來1999》,未來的你能撐多久?
- 未來論壇報告:茶葉的未來
- 很久沒來這裡了,居然支援markdown編輯器了
- AIGC時代:未來已來AIGC
- 通過Go來分析和建立XMLGoXML
- 通過Go來分析和建立JSONGoJSON
- SpringAI 她來了,真的來了SpringAI
- 寫部落格是為了和過去以及未來的自己對話
- ARM釋出的A76效能有多強未來搶佔PC市場
- Arm Neoverse是構築未來計算與人工智慧的堅實基石人工智慧
- 和 Google Play 一起展望未來Go
- RTS的過去,現在和未來
- MySQL 5.7 新特性大全和未來展望MySql
- GPT-4的前世、今生和未來!GPT
- Eclipse IDE 2020-06 R(4.16.0)來了支援JaEclipseIDE