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

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

このコミットは、doc/go1.1.html ファイルに対する変更であり、Go 1.1 リリースノートのドキュメントを更新するものです。具体的には、exp/... および old/... サブツリーが go.exp サブリポジトリに移動されたことについて記述が追加されています。

コミット

commit 5aacf436511d32e43f27fada87681aea2d391a45
Author: Rob Pike <r@golang.org>
Date:   Sat Mar 2 11:55:25 2013 -0800

    doc/go1.1.html: document the moving of exp/... and old/....
    
    R=golang-dev, minux.ma
    CC=golang-dev
    https://golang.org/cl/7445050

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

https://github.com/golang/go/commit/5aacf436511d32e43f27fada87681aea2d391a45

元コミット内容

doc/go1.1.html: document the moving of exp/... and old/....

このコミットメッセージは、exp および old というディレクトリ配下のコードが移動されたことを go1.1.html ドキュメントに記載したことを示しています。

変更の背景

Go言語のプロジェクトでは、実験的なコードや古いコード、あるいはバイナリ配布には含まれないが開発者がアクセスできるべきコードを管理するための仕組みが必要でした。Go 1.1 のリリースに向けて、これらのコードをより適切に管理し、バイナリ配布のプロセスを簡素化するために、exp および old サブツリーをメインのリポジトリから分離し、新しいサブリポジトリ go.exp へ移動するという決定がなされました。

この変更の主な目的は以下の通りです。

  1. バイナリ配布の簡素化: expold に含まれるコードは、通常、Goの標準ライブラリとしてバイナリ配布されるものではありません。これらを別のリポジトリに移動することで、Goの公式バイナリ配布物から不要なコードを除外し、配布物のサイズを削減し、ビルドプロセスを効率化できます。
  2. コードの明確な分離: 実験的なコードや非推奨のコードをメインのGoリポジトリから分離することで、Goのコア開発と実験的な開発の境界を明確にします。これにより、開発者はGoの安定版と実験版のコードを区別しやすくなります。
  3. アクセス性の維持: これらのコードはバイナリ配布には含まれないものの、開発者にとっては引き続きアクセス可能である必要があります。go.exp サブリポジトリとして公開することで、go get コマンドを通じて簡単に取得できるようになります。

このコミットは、この重要な変更をGo 1.1のリリースノートに反映させ、ユーザーが新しいコードの取得方法を理解できるようにするためのものです。

前提知識の解説

  • Go言語のパッケージ管理: Go言語では、go get コマンドを使用してリモートリポジトリからパッケージをダウンロードし、プロジェクトに組み込みます。パッケージは通常、import ステートメントで指定されたパスに基づいて解決されます。
  • Goの標準ライブラリ: Goには豊富な標準ライブラリが付属しており、Goのインストール時に一緒に提供されます。これらのライブラリは、Goプログラムの基本的な機能を提供します。
  • サブリポジトリ (Subrepository): Gitなどのバージョン管理システムにおいて、メインのリポジトリとは別に管理されるが、論理的にはメインプロジェクトの一部とみなされるリポジトリのことです。Goの文脈では、code.google.com/p/go.exp のように、特定の目的のために分離されたリポジトリを指します。
  • exp および old サブツリー: Goプロジェクトの初期段階や開発中に存在した、実験的なコードや古い(非推奨または開発中止された)コードを格納するための慣習的なディレクトリ名です。これらはGoの標準ライブラリには含まれないことが一般的です。
  • go.exp: このコミットで言及されている新しいサブリポジトリの名称です。Goの実験的なパッケージやツールがここに集約されることになります。
  • ssa パッケージ: Static Single Assignment (静的単一割り当て) 形式は、コンパイラの最適化フェーズで中間表現としてよく用いられる形式です。go.exp/ssa パッケージは、GoコンパイラにおけるSSA形式の実験的な実装や関連ツールを提供していたと考えられます。

技術的詳細

このコミットは、Go 1.1 のリリースノートである doc/go1.1.html ファイルに、exp および old サブツリーの移動に関する新しいセクションを追加しています。

変更の核心は、Goのパッケージ管理システムと、Goプロジェクトがどのようにコードを構造化し、配布するかという点にあります。

  1. ドキュメントの更新: doc/go1.1.html は、Goの各バージョンの新機能や変更点をまとめた公式ドキュメントです。このファイルに新しいセクション <h3 id="exp_old">Exp and old subtrees moved to go.exp subrepo</h3> が追加され、ユーザーにこの変更を通知しています。
  2. go.exp サブリポジトリの導入: 以前はGoのメインリポジトリ内にあった expold の内容が、code.google.com/p/go.exp という新しい独立したリポジトリに移動されました。これは、Goのバイナリ配布物からこれらのコードを除外するための戦略的な決定です。
  3. go get によるアクセス: ドキュメントでは、移動されたパッケージにアクセスするための具体的な方法が示されています。例えば、ssa パッケージにアクセスするには、$ go get code.google.com/go.exp/ssa を実行する必要があることが明記されています。これにより、開発者は必要に応じてこれらの実験的なパッケージを個別に取得できるようになります。
  4. import パスの変更: パッケージの移動に伴い、Goソースコード内での import パスも変更されます。以前は import "exp/ssa" のような形式だったものが、import "code.google.com/go.exp/ssa" のように、新しいサブリポジトリの完全なパスを指定する必要があることが示されています。

この変更は、Goのエコシステムにおけるパッケージの組織化と配布戦略の進化を示すものであり、特にGo 1.1のリリースにおける重要な変更点の一つとして位置づけられています。

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

--- a/doc/go1.1.html
+++ b/doc/go1.1.html
@@ -182,4 +182,26 @@
 that can be used to remove precision from a time before passing it to
 external storage.
 </p>
 
-TODO
+<h3 id="exp_old">Exp and old subtrees moved to go.exp subrepo</h3>
+
+<p>
+To make it easier for binary distributions to access them if desired, the <code>exp</code>
+and <code>old</code> source subtrees, which are not included in binary distributions,
+have been moved to the new <code>go.exp</code> subrepository at
+<code>code.google.com/p/go.exp</code>. To access the <code>ssa</code> package,
+for example, run
+</p>
+
+<pre>
+$ go get code.google.com/go.exp/ssa
+</pre>
+
+<p>
+and then in Go source,
+</p>
+
+<pre>
+import "code.google.com/go.exp/ssa"
+</pre>
+
+<h3 id="TODO">TODO</h3>

コアとなるコードの解説

このコミットは、doc/go1.1.html ファイルの変更のみを含んでいます。

  • - TODO の行が削除され、その代わりに新しいHTMLコンテンツが追加されています。これは、以前のドキュメントに「TODO」として残されていた項目が、このコミットで具体的な内容に置き換えられたことを示唆しています。
  • <h3 id="exp_old">Exp and old subtrees moved to go.exp subrepo</h3> という見出しが追加されています。これは、Go 1.1 のリリースノートにおける新しいセクションのタイトルです。id="exp_old" は、このセクションへの内部リンクを可能にします。
  • 新しい段落 <p> が追加され、exp および old サブツリーがバイナリ配布に含まれないこと、そしてそれらが code.google.com/p/go.exp という新しい go.exp サブリポジトリに移動されたことが説明されています。
  • ssa パッケージを例にとり、$ go get code.google.com/go.exp/ssa というコマンドでパッケージを取得できることを示す <pre> ブロックが追加されています。これは、ユーザーが新しい場所からパッケージを取得する方法を具体的に示しています。
  • Goソースコード内で新しい import パスを使用する方法を示す import "code.google.com/go.exp/ssa" という <pre> ブロックも追加されています。
  • 最後に、<h3 id="TODO">TODO</h3> という見出しが残されていますが、これはおそらく別のTODO項目であり、このコミットの範囲外のものです。

この変更は、Go 1.1 のリリースノートを更新し、ユーザーがGoのパッケージ構造の変更を理解し、新しい go.exp サブリポジトリから必要なパッケージを取得できるようにするための重要なドキュメント更新です。

関連リンク

  • Go 1.1 Release Notes: このコミットが変更しているドキュメントの最終版は、Go 1.1の公式リリースノートとして公開されています。
  • go.exp サブリポジトリ:
    • https://pkg.go.dev/golang.org/x/exp (現在の golang.org/x/exp パッケージのドキュメント。code.google.com/p/go.exp はGoプロジェクトがGitHubに移行する前の古いパスです。)

参考にした情報源リンク

  • コミット情報: /home/orange/Project/comemo/commit_data/15558.txt
  • GitHubコミットページ: https://github.com/golang/go/commit/5aacf436511d32e43f27fada87681aea2d391a45
  • Go言語の公式ドキュメントおよびリリースノート
  • Go言語のパッケージ管理に関する一般的な知識
  • Goプロジェクトの歴史とリポジトリ構造の変遷に関する情報 (特に code.google.com/p/go.exp から golang.org/x/exp への移行)