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

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

このコミットは、Go言語のドキュメントにOpenBSDプラットフォームサポートを追加した歴史的な変更です。2011年時点でGo言語がクロスプラットフォーム対応を強化していく中で、OpenBSD対応を正式にドキュメント化した重要なマイルストーンです。

コミット

  • コミットハッシュ: 6687e52ab16a5af31f4e861e4f43773a534e04d4
  • 作者: Joel Sing jsing@google.com
  • 日付: 2011年11月14日 7:52:36 (PST)
  • タイトル: doc/install: add openbsd
  • 説明: Add openbsd to the $GOOS list.
  • レビュー情報: R=golang-dev, r, rsc
  • コードレビューURL: https://golang.org/cl/4964053

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

https://github.com/golang/go/commit/6687e52ab16a5af31f4e861e4f43773a534e04d4

元コミット内容

commit 6687e52ab16a5af31f4e861e4f43773a534e04d4
Author: Joel Sing <jsing@google.com>
Date:   Mon Nov 14 07:52:36 2011 -0800

    doc/install: add openbsd
    
    Add openbsd to the $GOOS list.
    
    R=golang-dev, r, rsc
    CC=golang-dev
    https://golang.org/cl/4964053
---
 doc/install.html | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/doc/install.html b/doc/install.html
index 4b5a50b9a0..819164c5c2 100644
--- a/doc/install.html
+++ b/doc/install.html
@@ -61,7 +61,7 @@ support for segmented stacks, and a strong goroutine implementation.
 </p>
 
 <p>
-The compilers can target the FreeBSD, Linux,
+The compilers can target the FreeBSD, Linux, OpenBSD
 and OS X (a.k.a. Darwin) operating systems.
 (A port to Microsoft Windows is in progress but incomplete.  See the 
 <a href="http://code.google.com/p/go/wiki/WindowsPort">Windows Port</a>
@@ -373,9 +373,9 @@ to override the defaults.
 	<code>$GOHOSTARCH</code> respectively (described below).
 
 	<p>
-	Choices for <code>$GOOS</code> are <code>linux</code>,
-	<code>freebsd</code>,
+	Choices for <code>$GOOS</code> are
 	<code>darwin</code> (Mac OS X 10.5 or 10.6),
+	<code>freebsd</code>, <code>linux</code>, <code>openbsd</code>,
 	and <code>windows</code> (Windows, an incomplete port).
 	Choices for <code>$GOARCH</code> are <code>amd64</code> (64-bit x86, the most mature port),
 	<code>386</code> (32-bit x86), and
@@ -407,6 +407,12 @@ to override the defaults.
 	<td></td><td><code>linux</code></td> <td><code>arm</code></td> <td><i>incomplete</i></td>
 	</tr>
 	<tr>
+	<td></td><td><code>openbsd</code></td> <td><code>386</code></td>
+	</tr>
+	<tr>
+	<td></td><td><code>openbsd</code></td> <td><code>amd64</code></td>
+	</tr>
+	<tr>
 	<td></td><td><code>windows</code></td> <td><code>386</code></td> <td><i>incomplete</i></td>
 	</tr>
 	</table>

変更の背景

2011年時点のGo言語は、Go 1.0リリース(2012年3月)に向けて急速に開発が進んでいた時期でした。当時のGo言語は以下のような状況でした:

  1. プラットフォーム対応の拡充期: FreeBSD、Linux、OS X(Darwin)に加えて、他のUnix系OSへの対応を進めていた
  2. クロスコンパイル機能の強化: GOOSとGOARCH環境変数を用いたクロスコンパイル機能を整備中
  3. 安定性の向上: 実験的な機能から本格的な言語仕様への移行期

このコミットは、Joel SingによるOpenBSDポートの実装作業の一環として、公式ドキュメントにOpenBSD対応を記載した変更です。単なるドキュメント更新ではなく、実際のOpenBSDサポートが実装された証拠でもあります。

前提知識の解説

Go言語のクロスコンパイル機能

Go言語の大きな特徴の一つが、異なるプラットフォーム向けのバイナリを簡単に生成できるクロスコンパイル機能です。この機能は以下の環境変数によって制御されます:

  • GOOS: ターゲットのオペレーティングシステム(linux、windows、darwin、freebsd、openbsdなど)
  • GOARCH: ターゲットのアーキテクチャ(386、amd64、armなど)

OpenBSDとは

OpenBSDは、セキュリティと正確性を重視したUnix系オペレーティングシステムです。主な特徴:

  1. セキュリティファースト: デフォルトで安全な設定、定期的なコード監査
  2. 移植性: 多様なハードウェアアーキテクチャをサポート
  3. 厳格なライセンス: BSDライセンスの厳格な適用
  4. プロアクティブセキュリティ: W^X(Write XOR Execute)、スタックプロテクション、乱数化機能など

2011年のGo言語開発状況

  • 開発期間: Goは2009年に公開され、2011年は1.0リリースに向けた重要な時期
  • プラットフォーム対応: 主要なUnix系OSへの対応を積極的に進めていた
  • 実験的な機能: 多くの機能がまだ実験的段階だった

技術的詳細

変更されたファイル: doc/install.html

このコミットでは、Go言語のインストールドキュメント(doc/install.html)を更新しています。具体的な変更内容:

1. コンパイラのターゲットOS説明の更新

変更前:

The compilers can target the FreeBSD, Linux,
and OS X (a.k.a. Darwin) operating systems.

変更後:

The compilers can target the FreeBSD, Linux, OpenBSD
and OS X (a.k.a. Darwin) operating systems.

この変更により、Goコンパイラが公式にOpenBSDをターゲットプラットフォームとしてサポートすることが明文化されました。

2. GOOS環境変数の選択肢の追加

変更前:

Choices for <code>$GOOS</code> are <code>linux</code>,
<code>freebsd</code>,
<code>darwin</code> (Mac OS X 10.5 or 10.6),
and <code>windows</code> (Windows, an incomplete port).

変更後:

Choices for <code>$GOOS</code> are
<code>darwin</code> (Mac OS X 10.5 or 10.6),
<code>freebsd</code>, <code>linux</code>, <code>openbsd</code>,
and <code>windows</code> (Windows, an incomplete port).

この変更では、openbsdがGOOS環境変数の有効な値として追加され、同時にリストがアルファベット順に再編成されました。

3. サポート対象プラットフォーム表の拡張

新たに以下のエントリが追加されました:

<tr>
<td></td><td><code>openbsd</code></td> <td><code>386</code></td>
</tr>
<tr>
<td></td><td><code>openbsd</code></td> <td><code>amd64</code></td>
</tr>

これにより、OpenBSDで以下のアーキテクチャがサポートされることが明示されました:

  • openbsd/386: 32ビットx86アーキテクチャ
  • openbsd/amd64: 64ビットx86アーキテクチャ

Go言語のプラットフォーム対応戦略

このコミットは、Go言語の以下の設計哲学を反映しています:

  1. 広範なプラットフォーム対応: 主要なUnix系OSでの動作を保証
  2. 明確なドキュメント化: サポート状況を公式文書で明確に記載
  3. 段階的な実装: 実装と並行してドキュメントを更新

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

doc/install.html:24-26 (コンパイラターゲットの説明)

-The compilers can target the FreeBSD, Linux,
+The compilers can target the FreeBSD, Linux, OpenBSD
 and OS X (a.k.a. Darwin) operating systems.

この変更により、OpenBSDがGoコンパイラの正式なターゲットプラットフォームとして認知されました。

doc/install.html:33-37 (GOOS環境変数の説明)

-	Choices for <code>$GOOS</code> are <code>linux</code>,
-	<code>freebsd</code>,
+	Choices for <code>$GOOS</code> are
 	<code>darwin</code> (Mac OS X 10.5 or 10.6),
+	<code>freebsd</code>, <code>linux</code>, <code>openbsd</code>,
 	and <code>windows</code> (Windows, an incomplete port).

GOOS環境変数の有効な値としてopenbsdが追加され、リストがアルファベット順に整理されました。

doc/install.html:44-50 (プラットフォームサポート表)

 	<tr>
 	<td></td><td><code>linux</code></td> <td><code>arm</code></td> <td><i>incomplete</i></td>
 	</tr>
 	<tr>
+	<td></td><td><code>openbsd</code></td> <td><code>386</code></td>
+	</tr>
+	<tr>
+	<td></td><td><code>openbsd</code></td> <td><code>amd64</code></td>
+	</tr>
+	<tr>
 	<td></td><td><code>windows</code></td> <td><code>386</code></td> <td><i>incomplete</i></td>
 	</tr>

OpenBSD用の2つのアーキテクチャ(386とamd64)がサポート対象として追加されました。

コアとなるコードの解説

1. ドキュメント構造の改善

この変更では、単純にOpenBSDを追加するだけでなく、ドキュメントの構造も改善されています:

  • 明確な分類: OSとアーキテクチャの組み合わせを表形式で整理
  • 状態の明示: 不完全なポート(incomplete)の明示的な表記
  • アルファベット順の配置: 一貫した並び順でユーザビリティを向上

2. クロスコンパイル環境の拡張

OpenBSDサポートの追加により、開発者は以下のようなクロスコンパイルが可能になりました:

# Linux上でOpenBSD 386バイナリを生成
GOOS=openbsd GOARCH=386 go build myprogram.go

# Linux上でOpenBSD amd64バイナリを生成  
GOOS=openbsd GOARCH=amd64 go build myprogram.go

3. 実装の完成度表示

注目すべき点は、OpenBSDのエントリに「incomplete」の表記がないことです。これは以下を意味します:

  • 完全な実装: OpenBSDポートが完全に実装されている
  • 安定性: プロダクション環境での使用に耐える品質
  • テスト済み: 十分なテストが完了している

対照的に、Windowsポートには「incomplete」の表記があり、2011年時点ではまだ開発中だったことがわかります。

4. Joel Singの貢献

Joel Singは OpenBSD コミュニティで著名な開発者であり、このコミットは彼の以下の専門性を反映しています:

  • OpenBSDの深い知識: システムレベルでのOpenBSD理解
  • Goランタイムの理解: Go言語のランタイム実装への貢献
  • 長期的なメンテナンス: その後もOpenBSDポートのメンテナーとして活動

関連リンク

参考にした情報源リンク