[インデックス 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言語は以下のような状況でした:
- プラットフォーム対応の拡充期: FreeBSD、Linux、OS X(Darwin)に加えて、他のUnix系OSへの対応を進めていた
- クロスコンパイル機能の強化: GOOSとGOARCH環境変数を用いたクロスコンパイル機能を整備中
- 安定性の向上: 実験的な機能から本格的な言語仕様への移行期
このコミットは、Joel SingによるOpenBSDポートの実装作業の一環として、公式ドキュメントにOpenBSD対応を記載した変更です。単なるドキュメント更新ではなく、実際のOpenBSDサポートが実装された証拠でもあります。
前提知識の解説
Go言語のクロスコンパイル機能
Go言語の大きな特徴の一つが、異なるプラットフォーム向けのバイナリを簡単に生成できるクロスコンパイル機能です。この機能は以下の環境変数によって制御されます:
- GOOS: ターゲットのオペレーティングシステム(linux、windows、darwin、freebsd、openbsdなど)
- GOARCH: ターゲットのアーキテクチャ(386、amd64、armなど)
OpenBSDとは
OpenBSDは、セキュリティと正確性を重視したUnix系オペレーティングシステムです。主な特徴:
- セキュリティファースト: デフォルトで安全な設定、定期的なコード監査
- 移植性: 多様なハードウェアアーキテクチャをサポート
- 厳格なライセンス: BSDライセンスの厳格な適用
- プロアクティブセキュリティ: 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言語の以下の設計哲学を反映しています:
- 広範なプラットフォーム対応: 主要なUnix系OSでの動作を保証
- 明確なドキュメント化: サポート状況を公式文書で明確に記載
- 段階的な実装: 実装と並行してドキュメントを更新
コアとなるコードの変更箇所
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ポートのメンテナーとして活動