[インデックス 16244] ファイルの概要
コミット
このコミット e2b2e0d8d19e747ffe2059ed8426f5b12b77ff0f
は、Go 1.1 のリリースノート doc/go1.1.html
から、go run
コマンドに関する変更点の記述を削除するものです。具体的には、go run
コマンドの動作変更(引数なしで現在のディレクトリ内のファイルをすべて実行するようになった点、テストファイルを指定するとエラーになる点)についての説明が削除されています。
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/e2b2e0d8d19e747ffe2059ed8426f5b12b77ff0f
元コミット内容
commit e2b2e0d8d19e747ffe2059ed8426f5b12b77ff0f
Author: Andrew Gerrand <adg@golang.org>
Date: Tue Apr 30 09:47:23 2013 -0400
doc/go1.1: remove discussion of "go run" change
Update #5164
R=golang-dev, dave
CC=golang-dev
https://golang.org/cl/9049043
---
doc/go1.1.html | 10 ----------
1 file changed, 10 deletions(-)
diff --git a/doc/go1.1.html b/doc/go1.1.html
index 5e99820d59..20c7d36447 100644
--- a/doc/go1.1.html
+++ b/doc/go1.1.html
@@ -398,16 +398,6 @@ To update pre-Go 1 code to Go 1.1, use a Go 1.0 tool chain
to convert the code to Go 1.0 first.
</p>
-<h3 id=\"gorun\">Changes to the go run command</h3>
-
-<p>
-The <a href=\"/cmd/go/#hdr-Compile_and_run_Go_program\"><code>go run</code></a>
-command now runs all files in the current working
-directory if no file arguments are listed. Also, the <code>go run</code>
-command now returns an error if test files are provided on the command line. In
-this sense, \"<code>go run</code>\" replaces \"<code>go run *.go</code>\".
-</p>
-
<h3 id=\"tags\">Build constraints</h3>
<p>
変更の背景
このコミットは、Go 1.1 のリリースノートから go run
コマンドに関する記述を削除しています。これは、Go の issue #5164 に関連しています。issue #5164 は、go run
コマンドが go test
と異なり、引数なしで現在のディレクトリ内のファイルを処理できないという一貫性のない動作を指摘していました。この問題の解決策として、go run
コマンドは引数なしで実行された場合に現在のディレクトリ内の package main
をスキャンし、コンパイルして実行するように変更されました。もし package main
が見つからない場合はエラーメッセージを出力して終了します。
このコミットは、この go run
コマンドの変更がリリースノートに記載されたものの、最終的にその記述が不要になった、あるいは別の形でドキュメント化されることになったため削除されたと考えられます。リリースノートは、ユーザーが新しいバージョンに移行する際に重要な変更点を把握するためのものですが、詳細な挙動の変更は、より専門的なドキュメントやコマンドのヘルプに任せるという判断があったのかもしれません。
前提知識の解説
Go 言語
Go(Golang)は、Googleによって開発されたオープンソースのプログラミング言語です。静的型付け、コンパイル型言語でありながら、動的型付け言語のような簡潔な記述を可能にし、並行処理を強力にサポートしています。システムプログラミング、Webサービス、ネットワークプログラミングなどで広く利用されています。
go
コマンド
go
コマンドは、Go 言語のソースコードのコンパイル、実行、テスト、パッケージ管理などを行うための公式ツールです。Go 開発における中心的な役割を担っています。
go run
コマンド
go run
コマンドは、Go のソースファイルをコンパイルし、その場で実行するためのコマンドです。通常、一時的なスクリプトの実行や、開発中のプログラムの動作確認に利用されます。
go test
コマンド
go test
コマンドは、Go のテストコードを実行するためのコマンドです。テストファイル(通常 _test.go
で終わるファイル)を自動的に検出し、テストを実行します。
package main
Go 言語において、実行可能なプログラムのエントリポイントとなるパッケージは main
パッケージです。main
パッケージには、プログラムの実行開始点となる main
関数が含まれている必要があります。
リリースノート
ソフトウェアの新しいバージョンがリリースされる際に、そのバージョンで追加された新機能、修正されたバグ、変更された動作、非推奨になった機能などをまとめた文書です。ユーザーが新しいバージョンにスムーズに移行できるよう、重要な情報が記載されます。
Git コミット
Git におけるコミットは、リポジトリへの変更の記録単位です。各コミットは、特定の時点でのプロジェクトの状態をスナップショットとして保存し、変更履歴を追跡するために使用されます。コミットには、変更内容、作者、日時、コミットメッセージなどが含まれます。
技術的詳細
このコミットは、doc/go1.1.html
ファイルから特定の HTML セクションを削除する単純な変更です。削除されたセクションは、go run
コマンドの変更点について説明していました。
削除された内容は以下の通りです。
<h3 id="gorun">Changes to the go run command</h3>
<p>
The <a href="/cmd/go/#hdr-Compile_and_run_Go_program"><code>go run</code></a>
command now runs all files in the current working
directory if no file arguments are listed. Also, the <code>go run</code>
command now returns an error if test files are provided on the command line. In
this sense, "<code>go run</code>" replaces "<code>go run *.go</code>".
</p>
このセクションは、Go 1.1 で導入された go run
コマンドの新しい挙動を説明していました。具体的には、以下の2点が挙げられています。
- 引数なしでの実行:
go run
コマンドがファイル名を指定せずに実行された場合、現在の作業ディレクトリ内のすべての Go ファイル(.go
拡張子を持つファイル)を対象として実行されるようになったこと。これは、以前のgo run *.go
と同等の動作を意味します。 - テストファイルの扱い:
go run
コマンドにテストファイル(_test.go
ファイルなど)がコマンドライン引数として渡された場合、エラーを返すようになったこと。これは、テストの実行はgo test
コマンドの役割であり、go run
は通常のプログラム実行に特化するという意図を示しています。
この記述が削除された背景には、Go の issue #5164 の解決があります。issue #5164 は、go run
が go test
と異なり、引数なしで現在のディレクトリ内のファイルを処理できないという一貫性のない動作を指摘していました。この問題の解決策として、go run
コマンドは引数なしで実行された場合に現在のディレクトリ内の package main
をスキャンし、コンパイルして実行するように変更されました。もし package main
が見つからない場合はエラーメッセージを出力して終了します。
このコミットは、この go run
コマンドの変更がリリースノートに記載されたものの、最終的にその記述が不要になった、あるいは別の形でドキュメント化されることになったため削除されたと考えられます。リリースノートは、ユーザーが新しいバージョンに移行する際に重要な変更点を把握するためのものですが、詳細な挙動の変更は、より専門的なドキュメントやコマンドのヘルプに任せるという判断があったのかもしれません。
コアとなるコードの変更箇所
変更は doc/go1.1.html
ファイルのみです。
具体的には、以下の10行が削除されています。
--- a/doc/go1.1.html
+++ b/doc/go1.1.html
@@ -398,16 +398,6 @@ To update pre-Go 1 code to Go 1.1, use a Go 1.0 tool chain
to convert the code to Go 1.0 first.
</p>
-<h3 id="gorun">Changes to the go run command</h3>
-
-<p>
-The <a href="/cmd/go/#hdr-Compile_and_run_Go_program"><code>go run</code></a>
-command now runs all files in the current working
-directory if no file arguments are listed. Also, the <code>go run</code>
-command now returns an error if test files are provided on the command line. In
-this sense, "<code>go run</code>" replaces "<code>go run *.go</code>".
-</p>
-
<h3 id="tags">Build constraints</h3>
<p>
コアとなるコードの解説
このコミットは、Go 1.1 のリリースノートから go run
コマンドに関する特定のセクションを削除するものです。コードの機能的な変更ではなく、ドキュメントの変更に当たります。
削除された HTML コードは、go run
コマンドの挙動変更について説明していました。
<h3 id="gorun">Changes to the go run command</h3>
:go run
コマンドの変更点に関する見出しです。<p>...</p>
: 変更点の詳細を説明する段落です。The <a href="/cmd/go/#hdr-Compile_and_run_Go_program"><code>go run</code></a> command now runs all files in the current working directory if no file arguments are listed.
- これは、
go run
が引数なしで実行された場合に、現在のディレクトリ内のすべての Go ファイルを対象とするようになったことを示しています。
- これは、
Also, the <code>go run</code> command now returns an error if test files are provided on the command line.
- これは、
go run
にテストファイルが渡された場合にエラーを返すようになったことを示しています。
- これは、
In this sense, "<code>go run</code>" replaces "<code>go run *.go</code>".
- これは、引数なしの
go run
がgo run *.go
と同等の機能を持つようになったことを強調しています。
- これは、引数なしの
このセクションが削除された理由は、Go の issue #5164 の解決により、go run
の挙動がさらに洗練され、このリリースノートの記述が不適切になったか、あるいはより適切な場所(例えば go run
コマンド自体のヘルプメッセージや、より詳細なドキュメント)で説明されることになったためと考えられます。リリースノートは簡潔であるべきであり、詳細な挙動は別の場所で管理されるのが一般的です。
関連リンク
- Go issue #5164: https://github.com/golang/go/issues/5164 (直接のリンクは見つかりませんでしたが、検索結果から存在が確認できます)
- Go 1.1 Release Notes (公式ドキュメント): https://go.dev/doc/go1.1 (このコミットが適用された後の状態のドキュメント)