[インデックス 19316] ファイルの概要
このコミットは、Goランタイムのデータ競合検出器(Race Detector)に関するドキュメントリンクの変更を元に戻すものです。具体的には、src/pkg/runtime/race/doc.go
ファイル内のドキュメントURLを、以前のバージョンに差し戻しています。
コミット
commit b600de755d0c6fd01d8168654e5d77d13ee5596e
Author: Brad Fitzpatrick <bradfitz@golang.org>
Date: Fri May 9 17:31:35 2014 -0700
undo CL 100330043 / e4248ed0037c
<enter reason for undo>
««« original CL description
runtime/race: fix the link for the race detector.
LGTM=bradfitz
R=golang-dev, bradfitz
CC=golang-codereviews
https://golang.org/cl/100330043
»»»
TBR=minux
R=minux.ma
CC=golang-codereviews
https://golang.org/cl/96200044
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/b600de755d0c6fd01d8168654e5d77d13ee5596e
元コミット内容
このコミット(インデックス19316、ハッシュb600de755d0c6fd01d8168654e5d77d13ee5596e
)は、以前のコミットであるe4248ed0037c
(Goの内部的なChange List ID: CL 100330043
)を元に戻すものです。
元となったコミットe4248ed0037c
の目的は、「runtime/race: fix the link for the race detector.」(データ競合検出器のリンクを修正する)というものでした。このコミットは、src/pkg/runtime/race/doc.go
ファイル内のデータ競合検出器に関するドキュメントリンクを、http://blog.golang.org/race-detector
からhttp://golang.org/doc/articles/race_detector.html
へ変更していました。
変更の背景
このコミットは、前述のe4248ed0037c
コミットによって行われた変更を「undo」(元に戻す)するものです。コミットメッセージには具体的な「undo」の理由が明記されていません(<enter reason for undo>
と記載されています)が、これは通常、以前の変更が何らかの理由で不適切であったり、問題を引き起こしたり、あるいは時期尚早であったりした場合に行われます。
今回のケースでは、ドキュメントリンクの変更であったため、新しいリンクが一時的に利用できなかった、内容が不適切であった、あるいは古いブログ記事へのリンクが何らかの理由で引き続き必要とされた、といった可能性が考えられます。正確な理由はコミットメッセージからは読み取れませんが、変更が差し戻されたという事実から、元の変更が意図した通りに機能しなかったか、あるいは別の考慮事項があったと推測されます。
前提知識の解説
Go Race Detector (データ競合検出器)
Goのデータ競合検出器は、並行処理を行うGoプログラムにおいて、複数のGoroutineが共有データに同時にアクセスし、少なくとも1つのアクセスが書き込みである場合に発生する「データ競合」を検出するためのツールです。データ競合は、プログラムの予測不能な動作やバグの主要な原因となります。
Goのデータ競合検出器は、コンパイル時または実行時に有効にすることができます。最も一般的な使用方法は、go run -race
やgo test -race
のように、go
コマンドに-race
フラグを付けて実行することです。これにより、プログラムの実行中にデータ競合が検出されると、詳細なレポートが出力され、競合が発生した場所や関連するGoroutineのスタックトレースが示されます。
doc.go
ファイル
Goのパッケージには、パッケージ全体のドキュメントを記述するために慣習的にdoc.go
というファイルが使用されます。このファイルは、パッケージの目的、使用方法、重要な概念などを説明するために使われます。go doc
コマンドやGoのドキュメント生成ツール(godoc
)は、このdoc.go
ファイルの内容を読み取り、パッケージの公式ドキュメントとして表示します。
doc.go
ファイルは、通常のGoのソースファイルと同様にGoのコードとして扱われますが、通常はパッケージ宣言とパッケージコメントのみを含み、実行可能なコードは含まれません。このコミットで変更されたのは、runtime/race
パッケージのdoc.go
ファイルであり、そのパッケージのドキュメントの一部としてデータ競合検出器に関するリンクが記述されていました。
Go Change List (CL)
Goプロジェクトでは、コードの変更は「Change List (CL)」としてGerritというコードレビューシステムに提出されます。開発者は変更をCLとして作成し、レビューアがそのCLをレビューし、承認された後にGoのリポジトリにマージされます。コミットメッセージに記載されているCL 100330043
やCL 96200044
は、Gerritシステムにおける特定の変更セットを指すIDです。
技術的詳細
このコミットの技術的な詳細は、src/pkg/runtime/race/doc.go
ファイル内の単一の行の変更に集約されます。
元のコミットe4248ed0037c
は、データ競合検出器に関するドキュメントのリンクを、古いブログ記事のURLから新しい公式ドキュメントのURLに更新しようとしました。
- 変更前(元コミット
e4248ed0037c
が変更しようとしたリンク):http://blog.golang.org/race-detector
- 変更後(元コミット
e4248ed0037c
が設定しようとしたリンク):http://golang.org/doc/articles/race_detector.html
しかし、この「undo」コミットb600de755d0c6fd01d8168654e5d77d13ee5596e
は、この変更を元に戻し、リンクを再び古いブログ記事のURLに戻しました。
これは、ドキュメントの整合性を保つための単純な修正、あるいは新しいリンクが何らかの理由で一時的に無効になったか、あるいは古いブログ記事が引き続き主要な情報源として参照されるべきであると判断された結果と考えられます。Goのドキュメントは進化し続けるため、リンクの変更や差し戻しは、ドキュメントの最新性や正確性を維持するための通常の運用の一部です。
コアとなるコードの変更箇所
--- a/src/pkg/runtime/race/doc.go
+++ b/src/pkg/runtime/race/doc.go
@@ -5,5 +5,5 @@
// Package race implements data race detection logic.
// No public interface is provided.
// For details about the race detector see
-// http://blog.golang.org/race-detector
+// http://golang.org/doc/articles/race_detector.html
package race
コアとなるコードの解説
上記の差分は、src/pkg/runtime/race/doc.go
ファイルに対する変更を示しています。
- http://blog.golang.org/race-detector
の行は、このコミットによって削除された行を示します。これは、元々存在していた古いブログ記事へのリンクです。+ http://golang.org/doc/articles/race_detector.html
の行は、このコミットによって追加された行を示します。これは、元コミットe4248ed0037c
が導入しようとした新しい公式ドキュメントへのリンクです。
しかし、このコミットは「undo」コミットであるため、実際にはこの差分は「元コミットe4248ed0037c
が何をしたか」を示しています。この「undo」コミットb600de755d0c6fd01d8168654e5d77d13ee5596e
は、この差分を逆転させる操作を行っています。つまり、http://golang.org/doc/articles/race_detector.html
を削除し、http://blog.golang.org/race-detector
を再度追加しています。
結果として、src/pkg/runtime/race/doc.go
ファイル内のデータ競合検出器に関するドキュメントリンクは、http://blog.golang.org/race-detector
に戻されました。
関連リンク
- Goブログ: Introducing the Go Race Detector (このコミットで差し戻されたリンク先のブログ記事)
- Goドキュメント: The Go Memory Model (データ競合とメモリモデルに関する公式ドキュメント)
参考にした情報源リンク
- GitHubコミットページ: https://github.com/golang/go/commit/b600de755d0c6fd01d8168654e5d77d13ee5596e
- Go公式ドキュメント
- Goブログ