Go Wiki:最小要件
オペレーティングシステム
Linux
カーネルバージョン 2.6.32 以降。[これはアーキテクチャに依存しますが、これには特定のビルダーが必要です。] Linux/ARMv5 は、少なくとも v3.1(__kuser_cmpxchg64
のため)のはるかに新しいカーネルが必要です。
CentOS 5 はサポートしていません。カーネルが古すぎます(2.6.18)。
リトルエンディアン MIPS64 の場合、カーネルバージョン 4.1 は失敗することが知られており、4.8 は動作します。
組み込みシステムに tinyconfig(例:make tinyconfig)を使用している場合、カーネルで printk とコンソールを有効にする可能性が非常に高くなります。ここでは、これらの一般的なオプションは含めません。Go の場合は、CONFIG_FUTEX と CONFIG_EPOLL も有効にする必要があります。
arm64 では、古い(バージョン 2.33 より古い)ld.gold によって共有ライブラリテストが失敗する可能性があります(https://github.com/golang/go/issues/28334) を参照)。
Windows
Go 1.10 の場合:Windows XP(Service Pack 3 付き)以降。
Go 1.11 以降の場合:Windows 7 以降または Windows Server 2008 R2 以降。Windows Server 2008 R2、2012 R2、および 2016(それぞれ Windows 7、Windows 8.1、および Windows 10 にほぼ相当)でテストしています。
Go 1.21 以降の場合: Windows 10 以降または Windows Server 2016 以降。
macOS(旧 OS X、別名 Darwin)
macOS Sierra 10.12 以降には、Go 1.7.1 以降が必要です。
macOS Monterey 12 以降には、Go 1.11 以降が必要です。
Go 1.15 以降は macOS Sierra 10.12 以降のみをサポートします。 https://go.dokyumento.jp/doc/go1.15#darwin を参照してください。
Go 1.17 以降は macOS High Sierra 10.13 以降のみをサポートします。 https://go.dokyumento.jp/doc/go1.17#darwin を参照してください。
Go 1.21 以降は macOS Catalina 10.15 以降をサポートします。 https://go.dokyumento.jp/doc/go1.20#darwin を参照してください。
2023年5月31日現在、macOS 10.14 から macOS 13 用のビルダーがあります。
OpenBSD
現在公式にサポートされている -stable バージョンのみ。
DragonFly BSD
一般的に最新のリリースバージョンのみ。ビルダーはありますが、最も安定したポートではありません。
FreeBSD
サポートされている FreeBSD/アーキテクチャ/Go バージョンのマトリックスについては、FreeBSD 上の Go を参照してください。
NetBSD
現在の NetBSD 7.1 までは、既知の NetBSD バグ(カーネルクラッシュを含む)があります。NetBSD 7.1.1 で修正が報告されていますが、2017年7月10日現在、ビルダーをまだ再実行していないため、検証されていません。 https://tip.golang.org/doc/go1.9#known_issues と https://github.com/golang/go/issues/20852 を参照してください。
Solaris
illumos(旧 OpenSolaris 10)ベースのディストリビューションまたは Oracle Solaris 11+。
iOS
iOS 12 以降。
アーキテクチャ
マイクロアーキテクチャのサポート
一部のアーキテクチャでは、Go は環境変数(例:go1.18 以降の GOAMD64)を使用して特定のマイクロアーキテクチャへのコンパイルをサポートしています。バイナリは起動時に、要求されたマイクロアーキテクチャレベルがサポートされているかどうかを確認します。たとえば、GOAMD64=v3
でビルドされたバイナリは、LZCNT をサポートしていない CPU では失敗します。
さまざまなマイクロアーキテクチャレベルと、それらを選択するために使用される環境変数は、各アーキテクチャで説明されています。
ビルドキャッシュはマイクロアーキテクチャ環境変数を理解しており、変更してもクリーンアップする必要はありません。
最小マイクロアーキテクチャを高く設定するとパフォーマンスが向上すると予想されますが、これはすべての場合に当てはまるとは限りません。パフォーマンスの向上を確認するには、パフォーマンスに重要なコードをベンチマークしてください。
amd64
Go 1.17 までは、Go コンパイラは常に、64 ビット x86 プロセッサで実行できる x86 バイナリを生成していました。
Go 1.18 は、AMD64 用に 4 つのアーキテクチャレベル を導入しました。各レベルは、コンパイラが生成されたバイナリに含めることができる x86 命令のセットが異なります。
- GOAMD64=v1(デフォルト):ベースライン。すべての 64 ビット x86 プロセッサが実行できる命令のみを生成します。
- GOAMD64=v2:すべての v1 命令に加えて、CMPXCHG16B、LAHF、SAHF、POPCNT、SSE3、SSE4.1、SSE4.2、SSSE3。
- GOAMD64=v3:すべての v2 命令に加えて、AVX、AVX2、BMI1、BMI2、F16C、FMA、LZCNT、MOVBE、OSXSAVE。
- GOAMD64=v4:すべての v3 命令に加えて、AVX512F、AVX512BW、AVX512CD、AVX512DQ、AVX512VL。
たとえば、GOAMD64=v3 を設定すると、Go コンパイラは生成されたバイナリで AVX2 命令を使用できるようになります(場合によってはパフォーマンスが向上する可能性があります)。ただし、これらのバイナリは、AVX2 をサポートしていない古い x86 プロセッサでは実行されません。
Go ツールチェーンは、より新しい命令を生成することもありますが、対応するプロセッサでのみ実行されるように動的チェックによって保護されています。たとえば、GOAMD64=v1 の場合、math/bits.OnesCount は、CPUID が使用可能であることを報告した場合でも、POPCNT 命令を使用します。そうでない場合は、一般的な実装にフォールバックします。
Go ツールチェーンは現在、AVX512 命令を生成していません。
SSE3 を提供していないプラットフォームでは、レースディテクターはサポートされていません。
このコンテキストでは、*プロセッサ* は単純化されていることに注意してください。実際には、システム全体(ファームウェア、ハイパーバイザー、カーネル)からのサポートが必要です。
GOAMD64 などのマイクロアーキテクチャ環境変数の使用方法については、マイクロアーキテクチャのサポート セクションを参照してください。
386
https://go.dokyumento.jp/doc/install/source#environment を参照してください。
- GO386=sse2(デフォルト):SSE2 以降を搭載したプロセッサ
- GO386=softfloat:すべての Pentium MMX 以降のプロセッサ(ソフトウェア浮動小数点エミュレーションを使用)
arm
https://go.dokyumento.jp/doc/install/source#environment を参照してください。
- GOARM=5:CPU に VFP コプロセッサがない場合にソフトウェア浮動小数点を使用します
- GOARM=6:VFPv1 のみを使用します。クロスコンパイル時のデフォルト。通常は ARM11 以降のコア(VFPv2 以降もサポートされています)
- GOARM=7:VFPv3 を使用します。通常は Cortex-A コア
arm64
Go 1.23 までは、Go コンパイラは常に、ARMv8-A プロセッサで実行できる ARM64 バイナリを生成していました.
Go 1.23 では、コンパイル時に ARM64 アーキテクチャの最小ターゲットバージョンを指定する新しい `GOARM64` 環境変数が導入されました。許可される値は `v8.{0-9}` と `v9.{0-5}` です。この後に、ターゲットハードウェアによって実装される拡張機能を指定するオプションが続く場合があります。有効なオプションは `,lse` と `,crypto` です.
たとえば、`GOARM64=v8.0,lse` を設定すると、Go コンパイラは生成されたバイナリで LSE 命令を使用できるようになります(場合によってはパフォーマンスが向上する可能性があります)。ただし、これらのバイナリは、LSE をサポートしていない古い ARM64 プロセッサでは実行されません.
Go ツールチェーンは、より新しい命令を生成することもありますが、対応するプロセッサでのみ実行されるように動的チェックによって保護されています.
`GOARM64` 環境変数のデフォルト値は `v8.0` です.
ppc64(ビッグエンディアン)
POWER5 以降。Go 1.9 以降では、POWER8 以降のみがサポートされています。
ppc64le(リトルエンディアン)
POWER8 以降。
mips64(ビッグエンディアン)
MIPS III 以降。ビルダーは MIPS64r2 を使用しています。
mips64le(リトルエンディアン)
リトルエンディアンモードの MIPS III 以降。
s390x
z13
mips(ビッグエンディアン)と mipsle(リトルエンディアン)
MIPS32r1
riscv64
rv64g (rv64imafd)
cgo
cgo を使用するプログラムでは、gcc 4.6 以降が必要です。
このコンテンツは Go Wiki の一部です。