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

[インデックス 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 パッケージは、オペレーティングシステムからのシグナル(例: SIGINTSIGTERM)を処理するための機能を提供します。このパッケージは、プログラムが外部からのイベントに適切に反応するために不可欠ですが、そのAPI設計にはまだ改善の余地があると考えられていました。

コミットメッセージにある Fixes #2816 は、この変更がGoのIssue 2816に関連していることを示しています。Issue 2816は「os/signalexp に移動する」という内容であり、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 パッケージの物理的なファイルパスの変更と、それに伴うドキュメントの更新です。

  1. パッケージの移動:

    • src/pkg/os/signal/signal.gosrc/pkg/exp/signal/signal.go にリネームされました。
    • src/pkg/os/signal/signal_test.gosrc/pkg/exp/signal/signal_test.go にリネームされました。 このリネームは、Gitの similarity index 100% が示すように、ファイルの内容は変更されずに、単にディレクトリ構造が変更されたことを意味します。これにより、パッケージのインポートパスが os/signal から exp/signal に変わります。
  2. ドキュメントの更新:

    • doc/go1.htmldoc/go1.tmpl は、Go 1のリリースノートやドキュメントのテンプレートファイルです。
    • これらのファイル内で、Go 1のリリース時に exp に移動したパッケージのリストが更新され、http/spdy の代わりに os/signal が追加されました。 このドキュメントの変更は、Go 1のユーザーに対して、os/signal が実験的なパッケージとして扱われるようになったことを明示的に通知する役割を果たします。これは、Go 1の安定性保証の範囲外であることを示す重要な情報です。

この変更は、Go 1のリリース戦略の一部であり、GoのAPIの安定性に対する厳格なアプローチを反映しています。exp ディレクトリへの移動は、そのパッケージのAPIがまだ最終的な形ではないことを開発者に警告し、将来の変更に備えるよう促します。

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

このコミットにおけるコアとなるコードの変更は、以下のファイルの移動とドキュメントの修正です。

  1. ファイルのリネーム:

    • 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
  2. ドキュメントの修正:

    • 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.gosrc/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.htmldoc/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言語の標準ライブラリの一部である 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 パッケージは、オペレーティングシステムからのシグナル(例: SIGINTSIGTERM)を処理するための機能を提供します。このパッケージは、プログラムが外部からのイベントに適切に反応するために不可欠ですが、そのAPI設計にはまだ改善の余地があると考えられていました。

コミットメッセージにある Fixes #2816 は、この変更がGoのIssue 2816に関連していることを示しています。Issue 2816は「os/signalexp に移動する」という内容であり、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 パッケージの物理的なファイルパスの変更と、それに伴うドキュメントの更新です。

  1. パッケージの移動:

    • src/pkg/os/signal/signal.gosrc/pkg/exp/signal/signal.go にリネームされました。
    • src/pkg/os/signal/signal_test.gosrc/pkg/exp/signal/signal_test.go にリネームされました。 このリネームは、Gitの similarity index 100% が示すように、ファイルの内容は変更されずに、単にディレクトリ構造が変更されたことを意味します。これにより、パッケージのインポートパスが os/signal から exp/signal に変わります。この変更は、Go 1の互換性保証の対象外となることを明確に示しています。
  2. ドキュメントの更新:

    • doc/go1.htmldoc/go1.tmpl は、Go 1のリリースノートやドキュメントのテンプレートファイルです。
    • これらのファイル内で、Go 1のリリース時に exp に移動したパッケージのリストが更新され、http/spdy の代わりに os/signal が追加されました。 このドキュメントの変更は、Go 1のユーザーに対して、os/signal が実験的なパッケージとして扱われるようになったことを明示的に通知する役割を果たします。これは、Go 1の安定性保証の範囲外であることを示す重要な情報です。

この変更は、Go 1のリリース戦略の一部であり、GoのAPIの安定性に対する厳格なアプローチを反映しています。exp ディレクトリへの移動は、そのパッケージのAPIがまだ最終的な形ではないことを開発者に警告し、将来の変更に備えるよう促します。

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

このコミットにおけるコアとなるコードの変更は、以下のファイルの移動とドキュメントの修正です。

  1. ファイルのリネーム:

    • 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
  2. ドキュメントの修正:

    • 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.gosrc/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.htmldoc/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へのリンク)

参考にした情報源リンク