
2026/01/12 22:32
Go‑Legacy‑WinXP:Windows XP 用に Golang 1.24 コードをコンパイルする ---
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
要約
go‑legacy‑win7 は、Goプログラミング言語のフォークであり、Windows 7 および Windows Server 2008 R2 のサポートを復元しつつ、
go get コマンドへの変更をロールバックします。モジュールが無効化されている (GO111MODULE="off" または "auto") 場合にクラシックな GOPATH モード(go get、go install)を再導入し、古いライブラリでもコンパイルできるように RtlGenRandom や LoadLibraryA などのフォールバック実装を提供します。
このフォークは意図的に特定の上流変更をロールバックしてレガシー互換性を保持しています:
- Windows の乱数生成を
によって復元。RtlGenRandom
、LoadLibraryA
およびコンソールハンドル作業回避策のフォールバックを有効化。sysSocket
内の 5 ms のスリープを削除。(*Process).Wait- 非推奨となった
の動作を再導入。go get
バイナリ配布は Windows 用に
.zip ファイル、macOS/Linux 用に .tar.gz アーカイブとして提供されています。インストール手順:
- アーカイブを抽出:任意の場所(例:Windows では
、macOS/Linux ではC:\go‑legacy‑win7
)に展開します。/usr/local/go‑legacy‑win7 - 環境変数を設定:
→ 抽出したディレクトリへのパス(例:GOROOT
またはC:\go‑legacy‑win7
)。/usr/local/go‑legacy‑win7
→ ワークスペース(例:Windows ではGOPATH
、macOS/Linux では%USERPROFILE%\go
)。$HOME/go
- バイナリフォルダを
に追加:PATH- Windows:
を追加。C:\go‑legacy‑win7\bin - macOS/Linux:
(または選択したパス)が/usr/local/go‑legacy‑win7/bin
に含まれていることを確認。$PATH
- Windows:
- シェル設定をソースまたはリロードし、新しいターミナルを開く。
でインストールを検証。go version
制限事項: Windows 7/2008 R2 上では一部の新しい Go 機能が完全に動作しない場合があります。ユーザーはこれらの制約を認識する必要があります。
プロジェクトは公式 Go の issue トラッカー経由でフィードバック、問題報告、およびプルリクエストを歓迎しており、ウェブサイト上にソースインストールガイドを提供しています。一般的な Go 言語の質問については https://go.dev/wiki/Questions を参照してください。
本文
Goプログラミング言語 – go‑legacy‑win7
go-legacy-win7 は、Windows 7 と Windows Server 2008 R2 のサポートを維持しつつ、非推奨となった go get の挙動を再導入した Go 言語のフォークです。レガシーな Windows 環境で安定した Go 実行環境が必要なユーザーや、従来のワークフローを好む方に最適です。
Gopher の画像は Renee French が制作し、Creative Commons 4.0 Attribution ライセンス(CC‑BY)で提供されています。
Upstream Go と比較した違い
Windows 7 および Windows Server 2008 R2 のサポート
公式の Go プロジェクトはこれらのシステムへのサポートを終了していますが、今回のフォークでは完全に互換性を保っています。
伝統的な go get
の挙動
go get
がGO111MODULE
または"off"
に設定されている場合:"auto"
内で実行すると、GOPATH/src
とgo get
は GOPATH モードで動作します。go install
の外では、必要に応じてモジュール対応モードが使用されます。GOPATH/src
互換性の注意点
一部の新しい Go 機能は Windows 7 や Windows Server 2008 R2 と完全には互換しない可能性があります。機能維持を目指していますが、制限が存在する場合があります。
各リリースでの変更点
すべてのリリースでは以下のような修正が含まれます:
からProcessPrng
に戻し、Win7/2008R2 を破壊する変更を元に戻しました(コミット 693def1)。RtlGenRandom- システムライブラリをロードするための
フォールバックを追加(コミット a17d959)。LoadLibraryA - ソケットシステムコール用の
フォールバックを追加(コミット 7c1157f)。sysSocket - Windows 7 のコンソールハンドル作業回避策を復元(コミット 48042aa)。
で Windows 7/8 用に 5 ms のスリープを追加(コミット f0894a0)。(*Process).Wait- モジュール外での使用時に非推奨の
挙動を復元(コミット de4d503)。go get - 上記以外にも、対応する upstream Go リリースからすべての改善点とバグ修正が含まれます。
このバイナリは Windows 7 と Windows Server 2008 R2 でも動作します。
ダウンロードとインストール
バイナリディストリビューション
バイナリ配布物はリリースページで入手できます。
Windows のインストール
をダウンロード。go-legacy-win7‑<version>.windows_<arch>.zip
(または好きな場所)に展開 →C:\
フォルダーが作成されます。go-legacy-win7
システム環境変数
(あるいは選択したパス)をシステム PATH に追加。C:\go-legacy-win7\bin
をGOROOT
に設定。C:\go-legacy-win7
ユーザー環境変数
をユーザーパスに追加。%USERPROFILE%\go\bin
をGOPATH
に設定。%USERPROFILE%\go
macOS と Linux のインストール
-
該当するアーカイブをダウンロード:
- macOS –
go-legacy-win7‑<version>.darwin_<arch>.tar.gz - Linux –
go-legacy-win7‑<version>.linux_<arch>.tar.gz
- macOS –
-
に展開:/usr/local
sudo tar -C /usr/local -xzf go-legacy-win7‑<version>.<os>_<arch>.tar.gz
- シェル設定ファイルに次を追加:
- Bash –
または~/.bash_profile~/.bashrc - Zsh –
~/.zshrc
- Bash –
export GOROOT=/usr/local/go-legacy-win7 export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
- 変更を反映:
# Bash source ~/.bash_profile # または source ~/.bashrc # Zsh source ~/.zshrc
備考
- macOS Catalina 以降では
がデフォルトシェルです。zsh- 多くの Linux ディストリビューションでは
がデフォルトシェルです。bash
- ターミナルを新規に開き、次を実行して確認:
go version
ソースからのインストール
ソースからビルドする場合は公式サイトの手順に従ってください(Go ドキュメントに詳細があります)。
コントリビューション
フィードバック、バグ報告、およびプルリクエストを歓迎します。
Go プロジェクトはバグレポートと提案専用に issue トラッカーを使用しています。言語全般の質問については go.dev/wiki/Questions をご覧ください。