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

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

このコミットは、Go言語の公式ドキュメントである doc/go1.html および doc/go1.tmpl に、image/bmp および image/tiff パッケージのインポートパス変更に関する情報を追加するものです。これは、Go 1リリースに向けた標準ライブラリの整理の一環として、一部のパッケージがGoプロジェクトの外部リポジトリへ移動されたことを反映しています。

コミット

commit ceb1ca6b41e0dc2fae4fddf5f06533a0c55c8786
Author: Nigel Tao <nigeltao@golang.org>
Date:   Tue Jan 31 12:29:00 2012 +1100

    doc: add image/{bmp,tiff} renames to go1.tmpl.
    
    R=r
    CC=golang-dev
    https://golang.org/cl/5598052

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

https://github.com/golang/go/commit/ceb1ca6b41e0dc2fae4fddf5f06533a0c55c8786

元コミット内容

doc: add image/{bmp,tiff} renames to go1.tmpl.

このコミットは、image/bmp および image/tiff パッケージのインポートパスが変更されたことを示す情報を、Go 1のドキュメントテンプレートに追加するものです。

変更の背景

Go言語は、2012年3月に初の安定版であるGo 1をリリースしました。Go 1の目標の一つは、言語と標準ライブラリの安定性を提供し、将来のバージョンとの互換性を保証することでした。この安定化プロセスの一環として、標準ライブラリに含まれていた一部のパッケージが、Goプロジェクトのメインリポジトリから分離され、code.google.com/p/go.* のような外部リポジトリへ移動されました。

image/bmpimage/tiff パッケージもこの対象となり、Go 1リリース前に標準ライブラリから code.google.com/p/go.image/bmp および code.google.com/p/go.image/tiff へと移動されました。この変更は、標準ライブラリのコア部分をよりスリムに保ちつつ、特定の機能(この場合は画像フォーマットのサポート)を必要とするユーザーが、必要に応じて外部パッケージとしてインポートできるようにするためのものでした。

このコミットは、Go 1のリリースノートや移行ガイドとなる go1.html およびそのテンプレート go1.tmpl に、この重要な変更を明記することで、既存のGoユーザーがGo 1へ移行する際に混乱しないようにするためのドキュメンテーションの更新です。

前提知識の解説

  • Go 1リリース: Go言語の最初の安定版リリースであり、言語仕様と標準ライブラリの互換性が保証されるようになった重要なマイルストーンです。これ以降、Goのバージョンアップは後方互換性を維持する方針が採られています。
  • Goのパッケージ管理: Go言語では、パッケージはインポートパスによって識別されます。初期のGoでは、標準ライブラリのパッケージはGoのソースツリー内に存在していました。しかし、Go 1の準備段階で、一部のパッケージは標準ライブラリの「コア」から外され、code.google.com/p/go.* のような外部の「サブリポジトリ」へと移動されました。これにより、Goの配布サイズを抑え、コアライブラリの保守性を高める狙いがありました。
  • go1.htmlgo1.tmpl: これらはGo 1のリリースに関する公式ドキュメントの一部です。go1.tmpl はテンプレートファイルであり、そこから go1.html が生成されます。これらのファイルは、Go 1への移行ガイドや、Go 1で導入された変更点、特にインポートパスの変更などについて記述されています。
  • image/bmp および image/tiff パッケージ: これらはGoの標準ライブラリの一部として、それぞれBMPおよびTIFF画像フォーマットのエンコード/デコード機能を提供していました。Go 1のリリースに伴い、これらは標準ライブラリから分離され、Goのサブプロジェクトとして独立したリポジトリに移動されました。

技術的詳細

このコミットの技術的詳細は、Go 1におけるパッケージの再編成と、それに対応するドキュメンテーションの更新にあります。

Go 1のリリースでは、標準ライブラリの肥大化を防ぎ、よりコアな機能に焦点を当てるために、一部のパッケージがGoのメインリポジトリから分離されました。これらのパッケージは、code.google.com/p/go.imagecode.google.com/p/go.net のような、Goプロジェクトが管理する別のリポジトリ(当時はGoogle Code上でホストされていた)に移動されました。

具体的には、image/bmpcode.google.com/p/go.image/bmp へ、image/tiffcode.google.com/p/go.image/tiff へとインポートパスが変更されました。これは、これらの画像フォーマットのサポートが、Goのコアな画像処理機能(image パッケージ)とは別に、必要に応じて追加でインポートされるべき「拡張機能」と位置づけられたためです。

このコミットは、このインポートパスの変更をユーザーに明確に伝えるため、Go 1の公式ドキュメントに以下のHTMLテーブルエントリを追加しています。

<tr><td>image/bmp</td> <td>code.google.com/p/go.image/bmp</tr>
<tr><td>image/tiff</td> <td>code.google.com/p/go.image/tiff</tr>

これにより、Go 1に移行する開発者は、既存のコードでこれらのパッケージを使用している場合、インポートパスを新しいものに更新する必要があることを容易に認識できるようになります。これは、Go 1が後方互換性を重視する一方で、一部の非互換な変更(特にパッケージの移動)が発生したことを示す重要な例の一つです。

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

変更は doc/go1.htmldoc/go1.tmpl の2つのファイルに対して行われています。両ファイルで同様の変更が、既存のインポートパス変更リストのセクションに追加されています。

--- a/doc/go1.html
+++ b/doc/go1.html
@@ -673,6 +673,11 @@ This table lists the old and new import paths:
 <tr>
 <td colspan="2"><hr></td>
 </tr>
+<tr><td>image/bmp</td> <td>code.google.com/p/go.image/bmp</tr>
+<tr><td>image/tiff</td> <td>code.google.com/p/go.image/tiff</tr>
+<tr>
+<td colspan="2"><hr></td>
+</tr>
 <tr><td>net/dict</td> <td>code.google.com/p/go.net/dict</tr>
 <tr><td>net/websocket</td> <td>code.google.com/p/go.net/websocket</tr>
 <tr><td>exp/spdy</td> <td>code.google.com/p/go.net/spdy</tr>
--- a/doc/go1.tmpl
+++ b/doc/go1.tmpl
@@ -597,6 +597,11 @@ This table lists the old and new import paths:
 <tr>
 <td colspan="2"><hr></td>
 </tr>
+<tr><td>image/bmp</td> <td>code.google.com/p/go.image/bmp</tr>
+<tr><td>image/tiff</td> <td>code.google.com/p/go.image/tiff</tr>
+<tr>
+<td colspan="2"><hr></td>
+</tr>
 <tr><td>net/dict</td> <td>code.google.com/p/go.net/dict</tr>
 <tr><td>net/websocket</td> <td>code.google.com/p/go.net/websocket</tr>
 <tr><td>exp/spdy</td> <td>code.google.com/p/go.net/spdy</tr>

コアとなるコードの解説

上記の変更箇所は、HTMLのテーブル行 (<tr>) を追加しています。このテーブルは、Go 1でインポートパスが変更されたパッケージのリストを示しています。

  • <tr><td>image/bmp</td> <td>code.google.com/p/go.image/bmp</tr>
    • この行は、以前 image/bmp というパスでインポートされていたパッケージが、Go 1以降は code.google.com/p/go.image/bmp という新しいパスでインポートする必要があることを示しています。
  • <tr><td>image/tiff</td> <td>code.google.com/p/go.image/tiff</tr>
    • 同様に、この行は image/tiff パッケージが code.google.com/p/go.image/tiff へと移動したことを示しています。

これらの行は、既存の net/dictnet/websocket といった他の移動済みパッケージのエントリの間に挿入されており、ドキュメントの一貫性を保っています。doc/go1.tmpl はテンプレートであるため、この変更は最終的に生成される doc/go1.html にも反映され、Go 1の公式リリースノートの一部となります。

関連リンク

  • Go 1リリースに関する公式ブログ記事 (当時の情報源): https://go.dev/blog/go1 (Go 1の発表に関する一般的な情報)
  • Go 1ドキュメント (現在のGo公式サイト): https://go.dev/doc/go1 (このコミットが変更したドキュメントの現在のバージョン)
  • Goのパッケージ管理に関する歴史的背景 (Go Modules以前): https://go.dev/blog/go-modules-part01-background (Go Modules以前のパッケージ管理の課題と背景について触れられている可能性のある記事)

参考にした情報源リンク

  • GitHub上のコミットページ: https://github.com/golang/go/commit/ceb1ca6b41e0dc2fae4fddf5f06533a0c55c8786
  • Go CL 5598052: https://golang.org/cl/5598052 (Goのコードレビューシステムにおけるこの変更のレビューページ)
  • Go 1 Release Notes (当時の情報源を基にした一般的な知識)
  • Go言語のパッケージとモジュールの進化に関する一般的な知識
  • Google Codeのアーカイブ情報 (code.google.com/p/go.image のようなリポジトリがかつて存在したことの確認)
  • Go言語の公式ドキュメント (go.dev)
  • Go言語のブログ (go.dev/blog)