[インデックス 11546] ファイルの概要
このコミットは、Go言語の標準ライブラリの一部である os/signal
パッケージを exp/signal
へ移動させるものです。これは、Go 1のリリース準備の一環として行われ、パッケージの安定性に関する方針変更を反映しています。
コミット
- コミットハッシュ:
b68d947b91780644801ad591e123a1583de29fc9
- Author: David Symonds dsymonds@golang.org
- Date: Thu Feb 2 09:08:50 2012 +1100
- コミットメッセージ:
os/signal: move to exp/signal. Fixes #2816. R=golang-dev, r CC=golang-dev https://golang.org/cl/5609048
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/b68d947b91780644801ad591e123a1583de29fc9
元コミット内容
commit b68d947b91780644801ad591e123a1583de29fc9
Author: David Symonds <dsymonds@golang.org>
Date: Thu Feb 2 09:08:50 2012 +1100
os/signal: move to exp/signal.
Fixes #2816.
R=golang-dev, r
CC=golang-dev
https://golang.org/cl/5609048
---
doc/go1.html | 2 +-\
doc/go1.tmpl | 2 +-\
src/pkg/{os => exp}/signal/signal.go | 0
src/pkg/{os => exp}/signal/signal_test.go | 0
4 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/doc/go1.html b/doc/go1.html
index 4c118e0a9b..38a0faa398 100644
--- a/doc/go1.html
+++ b/doc/go1.html
@@ -558,7 +558,7 @@ Several packages have moved under <code>exp</code> at the time of Go 1\'s release
<ul>
<li><code>ebnf</code></li>
<li><code>go/types</code></li>
-<li><code>http/spdy</code></li>
+<li><code>os/signal</code></li>
</ul>
<p>
diff --git a/doc/go1.tmpl b/doc/go1.tmpl
index 940f2d75c0..1e317446bf 100644
--- a/doc/go1.tmpl
+++ b/doc/go1.tmpl
@@ -482,7 +482,7 @@ Several packages have moved under <code>exp</code> at the time of Go 1\'s release
<ul>
<li><code>ebnf</code></li>
<li><code>go/types</code></li>
-<li><code>http/spdy</code></li>
+<li><code>os/signal</code></li>
</ul>
<p>
diff --git a/src/pkg/os/signal/signal.go b/src/pkg/exp/signal/signal.go
similarity index 100%
rename from src/pkg/os/signal/signal.go
rename to src/pkg/exp/signal/signal.go
diff --git a/src/pkg/os/signal/signal_test.go b/src/pkg/exp/signal/signal_test.go
similarity index 100%
rename from src/pkg/os/signal/signal_test.go
rename to src/pkg/exp/signal/signal_test.go
変更の背景
このコミットは、Go 1のリリースを控えた時期に行われた重要な変更の一つです。Go 1では、言語と標準ライブラリの安定したAPIを提供することが目標とされていました。しかし、一部のパッケージはまだAPIが十分に安定していない、あるいは将来的に変更される可能性が高いと判断されました。
os/signal
パッケージは、オペレーティングシステムからのシグナル(例: SIGINT
、SIGTERM
)を処理するための機能を提供します。このパッケージは、プログラムが外部からのイベントに適切に反応するために不可欠ですが、そのAPI設計にはまだ改善の余地があると考えられていました。
コミットメッセージにある Fixes #2816
は、この変更がGoのIssue 2816に関連していることを示しています。Issue 2816は「os/signal
を exp
に移動する」という内容であり、os/signal
パッケージのAPIがGo 1の安定性基準を満たしていないため、exp
ディレクトリに一時的に移動し、将来のGoのバージョンで安定化させることを目的としていました。
exp
(experimental) ディレクトリは、Goの標準ライブラリにおいて、まだ安定版として提供するには時期尚早な、実験的なパッケージやAPIを配置するために使用されます。exp
に置かれたパッケージは、将来のGoのバージョンでAPIが変更される可能性があり、後方互換性が保証されないことを意味します。これにより、開発者は実験的な機能を試すことができますが、本番環境での使用には注意が必要であるというシグナルを送ります。
この移動は、Go 1のリリースにおけるAPIの安定性への強いコミットメントを示すものであり、ユーザーが安心してGo 1の標準ライブラリを使用できるようにするための重要なステップでした。
前提知識の解説
Go言語のパッケージシステム
Go言語は、コードのモジュール化と再利用のためにパッケージシステムを採用しています。パッケージは、関連する機能を持つコードをまとめたもので、他のパッケージからインポートして利用できます。Goの標準ライブラリは、多くの組み込みパッケージ(例: fmt
, io
, net
, os
など)を提供しており、これらはGoのインストール時に利用可能です。
os
パッケージ
os
パッケージは、オペレーティングシステムと対話するための機能を提供します。これには、ファイルシステム操作、プロセス管理、環境変数へのアクセス、そしてシグナル処理などが含まれます。os/signal
は、os
パッケージのサブパッケージとして、シグナル処理に特化した機能を提供していました。
シグナル処理
シグナルは、オペレーティングシステムがプロセスに送信する非同期通知です。例えば、ユーザーがCtrl+Cを押すと、OSはプロセスに SIGINT
シグナルを送信します。プログラムはこれらのシグナルを捕捉し、特定の処理(例: クリーンアップ、シャットダウン)を実行することができます。
exp
(experimental) ディレクトリ
Goの標準ライブラリには、exp
という特別なディレクトリが存在します。このディレクトリに配置されたパッケージは「実験的」であることを意味し、以下の特徴を持ちます。
- APIの不安定性:
exp
パッケージのAPIは、将来のGoのバージョンで変更される可能性があり、後方互換性が保証されません。 - 本番環境での非推奨: 通常、本番環境での使用は推奨されません。
- フィードバックの収集: Goチームは、
exp
パッケージを通じて新しいAPIや機能を試行し、コミュニティからのフィードバックを収集します。 - 将来の標準ライブラリへの昇格: 十分に成熟し、安定したと判断された場合、
exp
パッケージは標準ライブラリの他の部分に昇格されることがあります。
このコミットが行われた2012年当時、Go 1のリリースに向けて、どのパッケージを「安定版」として提供し、どのパッケージを「実験版」として扱うかの厳密な選定が行われていました。
技術的詳細
このコミットの技術的な核心は、os/signal
パッケージの物理的なファイルパスの変更と、それに伴うドキュメントの更新です。
-
パッケージの移動:
src/pkg/os/signal/signal.go
がsrc/pkg/exp/signal/signal.go
にリネームされました。src/pkg/os/signal/signal_test.go
がsrc/pkg/exp/signal/signal_test.go
にリネームされました。 このリネームは、Gitのsimilarity index 100%
が示すように、ファイルの内容は変更されずに、単にディレクトリ構造が変更されたことを意味します。これにより、パッケージのインポートパスがos/signal
からexp/signal
に変わります。
-
ドキュメントの更新:
doc/go1.html
とdoc/go1.tmpl
は、Go 1のリリースノートやドキュメントのテンプレートファイルです。- これらのファイル内で、Go 1のリリース時に
exp
に移動したパッケージのリストが更新され、http/spdy
の代わりにos/signal
が追加されました。 このドキュメントの変更は、Go 1のユーザーに対して、os/signal
が実験的なパッケージとして扱われるようになったことを明示的に通知する役割を果たします。これは、Go 1の安定性保証の範囲外であることを示す重要な情報です。
この変更は、Go 1のリリース戦略の一部であり、GoのAPIの安定性に対する厳格なアプローチを反映しています。exp
ディレクトリへの移動は、そのパッケージのAPIがまだ最終的な形ではないことを開発者に警告し、将来の変更に備えるよう促します。
コアとなるコードの変更箇所
このコミットにおけるコアとなるコードの変更は、以下のファイルの移動とドキュメントの修正です。
-
ファイルのリネーム:
src/pkg/os/signal/signal.go
->src/pkg/exp/signal/signal.go
src/pkg/os/signal/signal_test.go
->src/pkg/exp/signal/signal_test.go
-
ドキュメントの修正:
doc/go1.html
--- a/doc/go1.html +++ b/doc/go1.html @@ -558,7 +558,7 @@ Several packages have moved under <code>exp</code> at the time of Go 1\'s release <ul> <li><code>ebnf</code></li> <li><code>go/types</code></li> -<li><code>http/spdy</code></li> +<li><code>os/signal</code></li> </ul> <p>
doc/go1.tmpl
--- a/doc/go1.tmpl +++ b/doc/go1.tmpl @@ -482,7 +482,7 @@ Several packages have moved under <code>exp</code> at the time of Go 1\'s release <ul> <li><code>ebnf</code></li> <li><code>go/types</code></li> -<li><code>http/spdy</code></li> +<li><code>os/signal</code></li> </ul> <p>
コアとなるコードの解説
ファイルのリネーム
src/pkg/os/signal/signal.go
と src/pkg/os/signal/signal_test.go
のリネームは、Goのパッケージパスがファイルシステムのパスに直接対応しているため、パッケージのインポートパスが変更されることを意味します。
- 変更前:
import "os/signal"
- 変更後:
import "exp/signal"
この変更により、既存の os/signal
を使用しているGoプログラムは、コンパイルエラーを避けるためにインポートパスを exp/signal
に更新する必要があります。これは、Go 1のリリース時に、os/signal
のAPIが安定版として保証されないことを開発者に強制的に認識させるための措置です。
ドキュメントの修正
doc/go1.html
と doc/go1.tmpl
の変更は、Go 1の公式ドキュメントにこのパッケージ移動を反映させるためのものです。これらのファイルは、Go 1のリリース時に exp
ディレクトリに移動したパッケージのリストを保持しています。
- 以前は
http/spdy
がリストに含まれていましたが、このコミットでos/signal
に置き換えられました。これは、http/spdy
がGo 1のリリースまでに安定版として扱われるか、あるいは別の理由でexp
リストから除外されたことを示唆しています。 - このドキュメントの更新は、Go 1のユーザーがどのパッケージが安定しており、どのパッケージが実験的であるかを明確に理解できるようにするために不可欠です。
これらの変更は、Go 1のリリースにおけるAPIの安定性に関するGoチームの厳格な方針を明確に示しています。
関連リンク
- Gerrit Change-ID:
https://golang.org/cl/5609048
(GoプロジェクトのコードレビューシステムであるGerritの変更リストへのリンク) - Go Issue 2816:
https://github.com/golang/go/issues/2816
(このコミットが解決したGitHub Issueへのリンク)
参考にした情報源リンク
- Go 1 Release Notes (Go 1.0) - Go 1の公式リリースノート。
exp
パッケージに関する情報が含まれている可能性があります。 - Go Wiki: Go 1 and the Future of Go Programs - Go 1の互換性に関する詳細な情報。
- Go Wiki: Packages - Goのパッケージシステムに関する一般的な情報。
- Go Wiki: Standard Library - Go標準ライブラリの概要。
- Go Wiki: Exp -
exp
ディレクトリに関する情報。# [インデックス 11546] ファイルの概要
このコミットは、Go言語の標準ライブラリの一部である os/signal
パッケージを exp/signal
へ移動させるものです。これは、Go 1のリリース準備の一環として行われ、パッケージの安定性に関する方針変更を反映しています。
コミット
- コミットハッシュ:
b68d947b91780644801ad591e123a1583de29fc9
- Author: David Symonds dsymonds@golang.org
- Date: Thu Feb 2 09:08:50 2012 +1100
- コミットメッセージ:
os/signal: move to exp/signal. Fixes #2816. R=golang-dev, r CC=golang-dev https://golang.org/cl/5609048
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/b68d947b91780644801ad591e123a1583de29fc9
元コミット内容
commit b68d947b91780644801ad591e123a1583de29fc9
Author: David Symonds <dsymonds@golang.org>
Date: Thu Feb 2 09:08:50 2012 +1100
os/signal: move to exp/signal.
Fixes #2816.
R=golang-dev, r
CC=golang-dev
https://golang.org/cl/5609048
---
doc/go1.html | 2 +-\
doc/go1.tmpl | 2 +-\
src/pkg/{os => exp}/signal/signal.go | 0
src/pkg/{os => exp}/signal/signal_test.go | 0
4 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/doc/go1.html b/doc/go1.html
index 4c118e0a9b..38a0faa398 100644
--- a/doc/go1.html
+++ b/doc/go1.html
@@ -558,7 +558,7 @@ Several packages have moved under <code>exp</code> at the time of Go 1\'s release
<ul>
<li><code>ebnf</code></li>
<li><code>go/types</code></li>
-<li><code>http/spdy</code></li>
+<li><code>os/signal</code></li>
</ul>
<p>
diff --git a/doc/go1.tmpl b/doc/go1.tmpl
index 940f2d75c0..1e317446bf 100644
--- a/doc/go1.tmpl
+++ b/doc/go1.tmpl
@@ -482,7 +482,7 @@ Several packages have moved under <code>exp</code> at the time of Go 1\'s release
<ul>
<li><code>ebnf</code></li>
<li><code>go/types</code></li>
-<li><code>http/spdy</code></li>
+<li><code>os/signal</code></li>
</ul>
<p>
diff --git a/src/pkg/os/signal/signal.go b/src/pkg/exp/signal/signal.go
similarity index 100%
rename from src/pkg/os/signal/signal.go
rename to src/pkg/exp/signal/signal.go
diff --git a/src/pkg/os/signal/signal_test.go b/src/pkg/exp/signal/signal_test.go
similarity index 100%
rename from src/pkg/os/signal/signal_test.go
rename to src/pkg/exp/signal/signal_test.go
変更の背景
このコミットは、Go 1のリリースを控えた時期に行われた重要な変更の一つです。Go 1では、言語と標準ライブラリの安定したAPIを提供することが目標とされていました。しかし、一部のパッケージはまだAPIが十分に安定していない、あるいは将来的に変更される可能性が高いと判断されました。
os/signal
パッケージは、オペレーティングシステムからのシグナル(例: SIGINT
、SIGTERM
)を処理するための機能を提供します。このパッケージは、プログラムが外部からのイベントに適切に反応するために不可欠ですが、そのAPI設計にはまだ改善の余地があると考えられていました。
コミットメッセージにある Fixes #2816
は、この変更がGoのIssue 2816に関連していることを示しています。Issue 2816は「os/signal
を exp
に移動する」という内容であり、os/signal
パッケージのAPIがGo 1の安定性基準を満たしていないため、exp
ディレクトリに一時的に移動し、将来のGoのバージョンで安定化させることを目的としていました。
exp
(experimental) ディレクトリは、Goの標準ライブラリにおいて、まだ安定版として提供するには時期尚早な、実験的なパッケージやAPIを配置するために使用されます。exp
に置かれたパッケージは、将来のGoのバージョンでAPIが変更される可能性があり、後方互換性が保証されないことを意味します。これにより、開発者は実験的な機能を試すことができますが、本番環境での使用には注意が必要であるというシグナルを送ります。
この移動は、Go 1のリリースにおけるAPIの安定性への強いコミットメントを示すものであり、ユーザーが安心してGo 1の標準ライブラリを使用できるようにするための重要なステップでした。
前提知識の解説
Go言語のパッケージシステム
Go言語は、コードのモジュール化と再利用のためにパッケージシステムを採用しています。パッケージは、関連する機能を持つコードをまとめたもので、他のパッケージからインポートして利用できます。Goの標準ライブラリは、多くの組み込みパッケージ(例: fmt
, io
, net
, os
など)を提供しており、これらはGoのインストール時に利用可能です。
os
パッケージ
os
パッケージは、オペレーティングシステムと対話するための機能を提供します。これには、ファイルシステム操作、プロセス管理、環境変数へのアクセス、そしてシグナル処理などが含まれます。os/signal
は、os
パッケージのサブパッケージとして、シグナル処理に特化した機能を提供していました。
シグナル処理
シグナルは、オペレーティングシステムがプロセスに送信する非同期通知です。例えば、ユーザーがCtrl+Cを押すと、OSはプロセスに SIGINT
シグナルを送信します。プログラムはこれらのシグナルを捕捉し、特定の処理(例: クリーンアップ、シャットダウン)を実行することができます。
exp
(experimental) ディレクトリ
Goの標準ライブラリには、exp
という特別なディレクトリが存在します。このディレクトリに配置されたパッケージは「実験的」であることを意味し、以下の特徴を持ちます。
- APIの不安定性:
exp
パッケージのAPIは、将来のGoのバージョンで変更される可能性があり、後方互換性が保証されません。これは、golang.org/x/exp
リポジトリと同様に、新しいアイデアや機能を試すためのテストグラウンドとして機能します。 - 本番環境での非推奨: 通常、本番環境での使用は推奨されません。
- フィードバックの収集: Goチームは、
exp
パッケージを通じて新しいAPIや機能を試行し、コミュニティからのフィードバックを収集します。 - 将来の標準ライブラリへの昇格: 十分に成熟し、安定したと判断された場合、
exp
パッケージは標準ライブラリの他の部分に昇格されることがあります。
このコミットが行われた2012年当時、Go 1のリリースに向けて、どのパッケージを「安定版」として提供し、どのパッケージを「実験版」として扱うかの厳密な選定が行われていました。
技術的詳細
このコミットの技術的な核心は、os/signal
パッケージの物理的なファイルパスの変更と、それに伴うドキュメントの更新です。
-
パッケージの移動:
src/pkg/os/signal/signal.go
がsrc/pkg/exp/signal/signal.go
にリネームされました。src/pkg/os/signal/signal_test.go
がsrc/pkg/exp/signal/signal_test.go
にリネームされました。 このリネームは、Gitのsimilarity index 100%
が示すように、ファイルの内容は変更されずに、単にディレクトリ構造が変更されたことを意味します。これにより、パッケージのインポートパスがos/signal
からexp/signal
に変わります。この変更は、Go 1の互換性保証の対象外となることを明確に示しています。
-
ドキュメントの更新:
doc/go1.html
とdoc/go1.tmpl
は、Go 1のリリースノートやドキュメントのテンプレートファイルです。- これらのファイル内で、Go 1のリリース時に
exp
に移動したパッケージのリストが更新され、http/spdy
の代わりにos/signal
が追加されました。 このドキュメントの変更は、Go 1のユーザーに対して、os/signal
が実験的なパッケージとして扱われるようになったことを明示的に通知する役割を果たします。これは、Go 1の安定性保証の範囲外であることを示す重要な情報です。
この変更は、Go 1のリリース戦略の一部であり、GoのAPIの安定性に対する厳格なアプローチを反映しています。exp
ディレクトリへの移動は、そのパッケージのAPIがまだ最終的な形ではないことを開発者に警告し、将来の変更に備えるよう促します。
コアとなるコードの変更箇所
このコミットにおけるコアとなるコードの変更は、以下のファイルの移動とドキュメントの修正です。
-
ファイルのリネーム:
src/pkg/os/signal/signal.go
->src/pkg/exp/signal/signal.go
src/pkg/os/signal/signal_test.go
->src/pkg/exp/signal/signal_test.go
-
ドキュメントの修正:
doc/go1.html
--- a/doc/go1.html +++ b/doc/go1.html @@ -558,7 +558,7 @@ Several packages have moved under <code>exp</code> at the time of Go 1\'s release <ul> <li><code>ebnf</code></li> <li><code>go/types</code></li> -<li><code>http/spdy</code></li> +<li><code>os/signal</code></li> </ul> <p>
doc/go1.tmpl
--- a/doc/go1.tmpl +++ b/doc/go1.tmpl @@ -482,7 +482,7 @@ Several packages have moved under <code>exp</code> at the time of Go 1\'s release <ul> <li><code>ebnf</code></li> <li><code>go/types</code></li> -<li><code>http/spdy</code></li> +<li><code>os/signal</code></li> </ul> <p>
コアとなるコードの解説
ファイルのリネーム
src/pkg/os/signal/signal.go
と src/pkg/os/signal/signal_test.go
のリネームは、Goのパッケージパスがファイルシステムのパスに直接対応しているため、パッケージのインポートパスが変更されることを意味します。
- 変更前:
import "os/signal"
- 変更後:
import "exp/signal"
この変更により、既存の os/signal
を使用しているGoプログラムは、コンパイルエラーを避けるためにインポートパスを exp/signal
に更新する必要があります。これは、Go 1のリリース時に、os/signal
のAPIが安定版として保証されないことを開発者に強制的に認識させるための措置です。
ドキュメントの修正
doc/go1.html
と doc/go1.tmpl
の変更は、Go 1の公式ドキュメントにこのパッケージ移動を反映させるためのものです。これらのファイルは、Go 1のリリース時に exp
ディレクトリに移動したパッケージのリストを保持しています。
- 以前は
http/spdy
がリストに含まれていましたが、このコミットでos/signal
に置き換えられました。これは、http/spdy
がGo 1のリリースまでに安定版として扱われるか、あるいは別の理由でexp
リストから除外されたことを示唆しています。 - このドキュメントの更新は、Go 1のユーザーがどのパッケージが安定しており、どのパッケージが実験的であるかを明確に理解できるようにするために不可欠です。
これらの変更は、Go 1のリリースにおけるAPIの安定性に関するGoチームの厳格な方針を明確に示しています。
関連リンク
- Gerrit Change-ID:
https://golang.org/cl/5609048
(GoプロジェクトのコードレビューシステムであるGerritの変更リストへのリンク) - Go Issue 2816:
https://github.com/golang/go/issues/2816
(このコミットが解決したGitHub Issueへのリンク)
参考にした情報源リンク
- Go 1 Release Notes (Go 1.0) - Go 1の公式リリースノート。
exp
パッケージに関する情報が含まれている可能性があります。 - Go Wiki: Go 1 and the Future of Go Programs - Go 1の互換性に関する詳細な情報。
- Go Wiki: Packages - Goのパッケージシステムに関する一般的な情報。
- Go Wiki: Standard Library - Go標準ライブラリの概要。
- Go Wiki: Exp -
exp
ディレクトリに関する情報。 - golang.org/x/exp - GoDoc -
golang.org/x/exp
リポジトリのドキュメント。exp
パッケージの一般的な意味合いを理解するのに役立ちます。