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

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

このコミットは、Go言語のツールチェインにおけるドキュメント参照の更新に関するものです。具体的には、cmd/5a, cmd/5c, cmd/6a, cmd/6c, cmd/8a, cmd/8c, cmd/ldといった各コマンドのdoc.goファイル内で参照されているPlan 9ツールのドキュメントURLが変更されています。これは、68020プロセッサに関するドキュメントがオフラインになったため、代わりに80386プロセッサのコンパイラドキュメントを参照するように更新されたものです。

コミット

  • コミットハッシュ: 47568c747d3a407f390045310c3e843b439904f0
  • Author: Carl Shapiro cshapiro@google.com
  • Date: Fri Jan 18 13:39:53 2013 -0800

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

https://github.com/golang/go/commit/47568c747d3a407f390045310c3e843b439904f0

元コミット内容

cmd/5a, cmd/5c, cmd/6a, cmd/6c, cmd/8a, cmd/8c, cmd/ld: update reference

Reference the 80386 compiler documentation now that the
documentation for the 68020 is offline.

R=golang-dev, minux.ma, rsc
CC=golang-dev
https://golang.org/cl/7127053

変更の背景

この変更の主な背景は、Go言語のツールチェインが参照していたPlan 9の68020プロセッサに関するドキュメントが利用できなくなったことです。Goの初期のツールチェインは、Plan 9の設計思想とツール(アセンブラ、Cコンパイラ、リンカなど)に強く影響を受けていました。これらのツールは、異なるアーキテクチャ(ARM, x86-64, x86/386など)向けに移植され、Goのビルドプロセスの一部として機能していました。

ドキュメントがオフラインになったことで、既存の参照リンクが機能しなくなり、ユーザーが関連情報を参照できなくなる問題が発生しました。そのため、代替として利用可能な80386プロセッサ向けのコンパイラドキュメントへの参照に更新する必要が生じました。これは、ドキュメントの可用性を維持し、ユーザーがGoツールチェインの基盤となっているPlan 9ツールの理解を深めるための情報源を提供し続けるための措置です。

前提知識の解説

Plan 9 from Bell Labs

Plan 9は、ベル研究所で開発された分散オペレーティングシステムです。Unixの後継として設計され、"Everything is a file"(すべてはファイルである)という哲学を徹底しています。Go言語の設計者の一部(Rob Pike, Ken Thompsonなど)はPlan 9の開発にも深く関わっており、Goのツールチェインや設計思想にはPlan 9の影響が色濃く見られます。

Plan 9のツールチェイン

Plan 9には、独自のコンパイラ、アセンブラ、リンカなどのツールチェインが存在します。これらは特定のアーキテクチャ向けに命名規則を持っていました。

  • *a: アセンブラ (e.g., 5a for ARM assembler, 6a for amd64 assembler, 8a for 386 assembler)
  • *c: Cコンパイラ (e.g., 5c for ARM C compiler, 6c for amd64 C compiler, 8c for 386 C compiler)
  • *l: リンカ (e.g., 5l, 6l, 8l)

Go言語のツールチェインは、これらのPlan 9ツールの概念を継承し、Goのソースコードをコンパイル・リンクするために使用されていました。例えば、cmd/5aはARMアーキテクチャ用のアセンブラ、cmd/8cはx86(386)アーキテクチャ用のCコンパイラといった具合です。

doc.goファイル

Go言語のプロジェクトでは、パッケージやコマンドのドキュメントをdoc.goというファイルに記述する慣習があります。このファイルは、go docコマンドなどで参照される公式ドキュメントの一部となります。このコミットで変更されたのは、これらのdoc.goファイル内に記述されていた、関連するPlan 9ツールの詳細を説明する外部ドキュメントへのリンクです。

アーキテクチャの識別子

  • ARM: 5で始まるツール(例: 5a, 5c)が対応。
  • x86-64 (amd64): 6で始まるツール(例: 6a, 6c)が対応。
  • x86 (386): 8で始まるツール(例: 8a, 8c)が対応。歴史的な理由から386と呼ばれることが多いです。

技術的詳細

このコミットは、Go言語のビルドシステムが内部的に使用するPlan 9由来のツール(アセンブラ、Cコンパイラ、リンカ)に関するドキュメントリンクを更新するものです。具体的には、src/cmd/以下の各ツールのdoc.goファイル内のURLが変更されています。

変更前は、http://plan9.bell-labs.com/magic/man2html/1/2ahttp://plan9.bell-labs.com/magic/man2html/1/2cといった形式のURLが参照されていました。これらのURLは、Plan 9のmanページ(マニュアルページ)をHTML形式で提供するサービスへのリンクです。

変更のポイントは以下の通りです。

  1. 2aから8aへの変更: アセンブラのドキュメントリンクが、汎用的な2a(おそらく初期のPlan 9アセンブラのドキュメント)から、8a(80386アーキテクチャ向けアセンブラのドキュメント)へと変更されました。これは、68020のドキュメントが利用不可になったため、より関連性の高い80386のドキュメントに切り替える意図があります。
  2. 2cから8cへの変更: Cコンパイラのドキュメントリンクも同様に、2cから8c(80386アーキテクチャ向けCコンパイラのドキュメント)へと変更されました。
  3. 2lから8lへの変更: リンカのドキュメントリンクも、2lから8l(80386アーキテクチャ向けリンカのドキュメント)へと変更されました。

これらの変更は、Goツールチェインの各コンポーネントが、その基盤となるPlan 9ツールのドキュメントを参照する際に、現在利用可能な最も適切な情報源を指すようにするためのメンテナンス作業です。特に、5a/5c (ARM), 6a/6c (amd64), 8a/8c (386) の各ツールが、それぞれのアセンブラ/Cコンパイラのドキュメントを参照する際に、一貫して8a/8cのドキュメントを参照するように統一されています。これは、特定のアーキテクチャのドキュメントがオフラインになった場合でも、他のアーキテクチャのドキュメントが共通の参照点として機能するようにするためと考えられます。

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

このコミットでは、以下の7つのファイルのdoc.goファイル内のURLが変更されています。

  • src/cmd/5a/doc.go
  • src/cmd/5c/doc.go
  • src/cmd/6a/doc.go
  • src/cmd/6c/doc.go
  • src/cmd/8a/doc.go
  • src/cmd/8c/doc.go
  • src/cmd/ld/doc.go

各ファイルで、http://plan9.bell-labs.com/magic/man2html/1/に続く部分が変更されています。

例: src/cmd/5a/doc.goの変更

--- a/src/cmd/5a/doc.go
+++ b/src/cmd/5a/doc.go
@@ -6,7 +6,7 @@
 
 5a is a version of the Plan 9 assembler.  The original is documented at
 
-	http://plan9.bell-labs.com/magic/man2html/1/2a
+	http://plan9.bell-labs.com/magic/man2html/1/8a
 
 Its target architecture is the ARM, referred to by these tools as arm.

例: src/cmd/5c/doc.goの変更

--- a/src/cmd/5c/doc.go
+++ b/src/cmd/5c/doc.go
@@ -6,7 +6,7 @@
 
 5c is a version of the Plan 9 C compiler.  The original is documented at
 
-	http://plan9.bell-labs.com/magic/man2html/1/2c
+	http://plan9.bell-labs.com/magic/man2html/1/8c
 
 Its target architecture is the ARM, referred to by these tools as arm.

例: src/cmd/ld/doc.goの変更

--- a/src/cmd/ld/doc.go
+++ b/src/cmd/ld/doc.go
@@ -6,7 +6,7 @@
 
 Ld is the portable code for a modified version of the Plan 9 linker.  The original is documented at
 
-	http://plan9.bell-labs.com/magic/man2html/1/2l
+	http://plan9.bell-labs.com/magic/man2html/1/8l
 
 It reads object files (.5, .6, or .8 files) and writes a binary named for the
 architecture (5.out, 6.out, 8.out) by default (if $GOOS is windows, a .exe suffix

コアとなるコードの解説

doc.goファイルは、それぞれのGoツール(アセンブラ、Cコンパイラ、リンカ)がPlan 9のどのツールをベースにしているかを説明し、そのオリジナルのドキュメントへのリンクを提供しています。

変更された行は、以下のパターンに従っています。

  • http://plan9.bell-labs.com/magic/man2html/1/2ahttp://plan9.bell-labs.com/magic/man2html/1/8a に変更。
  • http://plan9.bell-labs.com/magic/man2html/1/2chttp://plan9.bell-labs.com/magic/man2html/1/8c に変更。
  • http://plan9.bell-labs.com/magic/man2html/1/2lhttp://plan9.bell-labs.com/magic/man2html/1/8l に変更。

これは、68020プロセッサに関するドキュメント(おそらく2a, 2c, 2lが指していたもの)がオフラインになったため、代わりに80386プロセッサに関するドキュメント(8a, 8c, 8l)を参照するように更新されたことを意味します。これにより、Goツールチェインのドキュメントが常に有効な情報源を指すように保たれます。

関連リンク

  • Plan 9 from Bell Labs: https://plan9.bell-labs.com/
  • Go言語の歴史とPlan 9の影響: Go言語の公式ドキュメントやブログ記事で、Plan 9からの影響について言及されているものがあります。

参考にした情報源リンク

  • コミット情報: /home/orange/Project/comemo/commit_data/14923.txt
  • GitHubコミットページ: https://github.com/golang/go/commit/47568c747d3a407f390045310c3e843b439904f0
  • Plan 9 from Bell Labs (一般的な情報源として)
  • Go言語の公式ドキュメント (Goツールチェインに関する一般的な情報として)
  • 80386プロセッサおよびPlan 9ツールの一般的な情報 (Web検索を通じて)