Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

[インデックス 12483] ファイルの概要

このコミットは、Go言語の公式ドキュメントにおいて、macOS (旧称 OS X) のサポート対象バージョンに関する記述を更新するものです。具体的には、OS X Leopard (10.5) のサポートを終了し、Snow Leopard (10.6) 以降をサポート対象とすることを明記する変更です。

コミット

commit a6ce691bd4d59dbf36f5672881d1a37c8fe78375
Author: Russ Cox <rsc@golang.org>
Date:   Wed Mar 7 13:57:57 2012 -0500

    doc: give up on OS X Leopard
    
    Fixes #3206.
    
    R=golang-dev, gri, bradfitz
    CC=golang-dev
    https://golang.org/cl/5769046

GitHub上でのコミットページへのリンク

https://github.com/golang/go/commit/a6ce691bd4d59dbf36f5672881d1a37c8fe78375

元コミット内容

doc: give up on OS X Leopard

Fixes #3206.

R=golang-dev, gri, bradfitz
CC=golang-dev
https://golang.org/cl/5769046

変更の背景

この変更の背景には、Go言語がOS X Leopard (バージョン 10.5) のサポートを断念したという事実があります。コミットメッセージにある Fixes #3206 は、GoのIssueトラッカーにおける問題3206番に関連していることを示しています。

当時のGo言語の開発において、OS X Leopard環境でのビルドや実行に継続的な問題が発生していたと考えられます。古いOSバージョンをサポートし続けることは、新しい機能の開発やパフォーマンス改善の足かせとなることがあります。特に、OSのバージョンアップに伴い、コンパイラやシステムライブラリの挙動が変化したり、利用可能なAPIが異なったりするため、古いバージョンへの対応は開発コストを増大させます。

Goチームは、Leopardでの問題を解決するよりも、より新しいOSバージョン(Snow Leopard以降)に焦点を当てることを決定したと推測されます。これにより、開発リソースを効率的に配分し、より多くのユーザーが利用している新しい環境での安定性とパフォーマンスを向上させることを目指したと考えられます。

前提知識の解説

macOS (旧称 OS X) のバージョン

  • OS X Leopard (10.5): 2007年10月にリリースされたmacOSのバージョン。このコミットが作成された2012年時点では、すでに数世代前のOSとなっていました。
  • OS X Snow Leopard (10.6): 2009年8月にリリース。Leopardの後継で、主にパフォーマンス改善とバグ修正に重点が置かれました。
  • OS X Lion (10.7): 2011年7月にリリース。iOSの機能がmacOSに導入され始めたバージョンです。

Go言語は、これらのOS上で動作するためのバイナリを生成したり、ソースからビルドしたりすることが可能です。

Go言語の環境変数 GOOSGOARCH

Go言語のクロスコンパイル機能は、GOOSGOARCH という環境変数によって制御されます。

  • GOOS (Go Operating System): ターゲットとするオペレーティングシステムを指定します。例えば、darwin はmacOS、linux はLinux、windows はWindowsを指します。
  • GOARCH (Go Architecture): ターゲットとするプロセッサアーキテクチャを指定します。例えば、amd64 は64ビットx86、386 は32ビットx86を指します。

これらの変数を設定することで、開発環境とは異なるOSやアーキテクチャ向けのGoプログラムをビルドできます。このコミットでは、GOOS=darwin の場合のサポート対象バージョンが変更されています。

技術的詳細

このコミットの技術的詳細は、Go言語のビルドシステムやランタイムが、特定のOSバージョンに依存するシステムコール、ライブラリ、またはコンパイラの挙動に影響を受けるという点にあります。

OS X Leopardのサポートを断念するという決定は、以下のような技術的課題が背景にあった可能性があります。

  1. システムライブラリの互換性: Goのランタイムや標準ライブラリは、OSが提供するシステムコールや共有ライブラリに依存しています。LeopardとSnow Leopard以降では、これらのAPIのバージョンや挙動に互換性のない変更があった可能性があり、Leopardでの安定した動作を保証することが困難になったと考えられます。
  2. コンパイラツールチェーンのサポート: Goのコンパイラ自体が、特定のバージョンのXcode (Appleの開発ツール) やその中に含まれるClang/GCCなどのコンパイラツールチェーンに依存している場合があります。古いOSバージョンでは、最新のGoコンパイラが要求するツールチェーンのバージョンが利用できない、または互換性の問題がある可能性があります。
  3. バグ修正とメンテナンスのコスト: Leopard固有のバグや問題が発生した場合、それを修正するためのデバッグやテストに多大なリソースが必要となります。ユーザーベースが減少している古いOSバージョンに対して、継続的にリソースを割くことは非効率的です。
  4. 新しい機能の利用: Snow Leopard以降で導入された新しいOS機能やパフォーマンス改善をGoが活用しようとした場合、Leopardとの互換性を維持することが足かせとなることがあります。サポート対象を絞ることで、より新しいOSの機能を積極的に利用できるようになります。

このコミット自体はコードの変更ではなく、ドキュメントの変更に過ぎませんが、その背後には上記のような技術的な判断と、Go言語の進化の方向性が示唆されています。Goチームは、より新しい、より広く使われている環境に焦点を当てることで、開発効率とユーザー体験の向上を図ったと言えます。

コアとなるコードの変更箇所

このコミットでは、以下の2つのドキュメントファイルが変更されています。

  1. doc/install-source.html
  2. doc/install.html

それぞれの変更箇所は以下の通りです。

doc/install-source.html の変更

--- a/doc/install-source.html
+++ b/doc/install-source.html
@@ -321,7 +321,7 @@ These default to the values of <code>$GOHOSTOS</code> and
 
 <p>
 Choices for <code>$GOOS</code> are
-<code>darwin</code> (Mac OS X 10.5 and above), <code>freebsd</code>,
+<code>darwin</code> (Mac OS X 10.6 and above), <code>freebsd</code>,
 <code>linux</code>, <code>netbsd</code>, <code>openbsd</code>, 
 <code>plan9</code>, and <code>windows</code>.
 Choices for <code>$GOARCH</code> are

変更点:

  • - <code>darwin</code> (Mac OS X 10.5 and above), <code>freebsd</code>,
  • + <code>darwin</code> (Mac OS X 10.6 and above), <code>freebsd</code>,

Mac OS X 10.5Mac OS X 10.6 に変更されています。

doc/install.html の変更

--- a/doc/install.html
+++ b/doc/install.html
@@ -35,7 +35,7 @@ your operating system and processor architecture.
 
 <p>
 Official binary distributions are available
-for the FreeBSD, Linux, Mac OS X, and Windows operating systems
+for the FreeBSD, Linux, Mac OS X (Snow Leopard/Lion), and Windows operating systems
 and the 32-bit (<code>386</code>) and 64-bit (<code>amd64</code>)
 x86 processor architectures.
 </p>

変更点:

  • - for the FreeBSD, Linux, Mac OS X, and Windows operating systems
  • + for the FreeBSD, Linux, Mac OS X (Snow Leopard/Lion), and Windows operating systems

Mac OS X の後に (Snow Leopard/Lion) という具体的なバージョンが追記されています。

コアとなるコードの解説

これらの変更は、Go言語のインストールに関する公式ドキュメントを更新し、GoがサポートするmacOSの最小バージョンを明確にすることにあります。

  • doc/install-source.html: このファイルは、Goをソースコードからビルドする際のインストール手順に関するドキュメントです。GOOS 環境変数の darwin オプションの説明において、「Mac OS X 10.5 以降」から「Mac OS X 10.6 以降」へと記述が変更されました。これは、ソースからのビルドにおいてもLeopardのサポートが終了したことを明示しています。
  • doc/install.html: このファイルは、Goの公式バイナリディストリビューションの利用に関する一般的なインストール手順のドキュメントです。利用可能なOSのリストにおいて、「Mac OS X」という一般的な記述から、「Mac OS X (Snow Leopard/Lion)」という具体的なバージョン名が追記されました。これにより、公式バイナリがどのmacOSバージョン向けに提供されているかが、より明確になりました。

これらのドキュメントの変更は、Go言語のユーザーに対して、Leopard環境ではGoの利用が推奨されない、あるいはサポートされないという重要な情報を提供します。これにより、ユーザーはサポート対象外の環境でGoをセットアップしようとして問題に直面するのを避けることができます。また、Goチームがどの環境に注力しているかを示す指標ともなります。

関連リンク

参考にした情報源リンク

  • Go言語のコミット情報 (提供された commit_data/12483.txt の内容)
  • macOSのバージョン履歴に関する一般的な知識
  • Go言語の GOOS および GOARCH 環境変数に関する一般的な知識
  • Go言語のIssueトラッカーの一般的な構造に関する知識