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

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

このコミットは、Go言語のAPI互換性に関するドキュメントである api/README ファイルの更新です。具体的には、except.txt ファイルに関する説明文から、text/template/parse パッケージへの言及を削除しています。

コミット

  • コミットハッシュ: 6c119a9e70fffbc9111b4114d6a5f32ca202cd6b
  • Author: Robin Eklind r.eklind.87@gmail.com
  • Date: Mon Feb 11 09:10:35 2013 -0800
  • コミットメッセージ:
    api: Update readme.
    
    R=golang-dev, bradfitz, dave
    CC=golang-dev
    https://golang.org/cl/7303065
    

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

https://github.com/golang/go/commit/6c119a9e70fffbc9111b4114d6a5f32ca202cd6b

元コミット内容

api: Update readme.

R=golang-dev, bradfitz, dave
CC=golang-dev
https://golang.org/cl/7303065

変更の背景

Go言語では、後方互換性を非常に重視しており、特に公開APIの変更には厳格なルールがあります。api/ ディレクトリには、Goの各バージョンで提供されるAPIのリストがテキストファイルとして管理されています。

  • go1.txt (および同様の命名規則のファイル): 特定のGoバージョンでフリーズされたAPIリスト。一度リリースされると、新しい行が追加されることはあっても、既存のAPIが削除されることはありません。これは「真の互換性」を保証するためのものです。
  • except.txt: 「真の互換性」を損なうことなく、将来的に削除される可能性のあるAPIのリストです。つまり、これらのAPIはGo 1の互換性保証の対象外となる可能性があります。
  • next.txt: 次のバージョンで追加される可能性のあるAPIのリストです。これは開発中に頻繁に更新されます。

このコミットが行われた2013年2月時点では、api/README には except.txt の説明として「The only package there is text/template/parse.」という記述がありました。これは、当時 except.txt にリストされていた唯一のパッケージが text/template/parse であったことを示しています。

このコミットの背景には、text/template/parse パッケージが except.txt から削除された、あるいはそのステータスが変更されたという事実があります。つまり、text/template/parse がもはや「真の互換性を損なうことなく削除される可能性のある」APIのリストに含まれていないことを反映するために、api/README の説明を更新する必要がありました。これにより、ドキュメントが現在のAPI互換性ポリシーと except.txt の内容に合致するようになります。

前提知識の解説

Go言語のAPI互換性

Go言語は、バージョン1(Go 1)以降、厳格な後方互換性ポリシーを維持しています。これは、Go 1で書かれたプログラムが、将来のGoのバージョンでもコンパイルされ、動作することを保証するものです。このポリシーは、Goエコシステムの安定性と開発者の信頼を築く上で非常に重要です。

api/ ディレクトリ

Goのソースコードリポジトリ内の api/ ディレクトリは、このAPI互換性ポリシーを管理するための重要な部分です。このディレクトリには、Goの各バージョンで公開されるAPIのリストがテキストファイルとして格納されています。

  • go1.txt: Go 1のリリース時にフリーズされたAPIのリストです。このファイルに記載されているAPIは、Go 1の互換性保証の対象となります。
  • goX.Y.txt (例: go1.1.txt, go1.2.txt など): 各マイナーバージョンで追加されたAPIのリストです。これらのファイルも一度リリースされるとフリーズされ、互換性保証の対象となります。
  • except.txt: 例外的なAPIのリストです。ここに記載されているAPIは、Go 1の互換性保証の対象外となる可能性があり、将来的に変更または削除される可能性があります。これは、特定のAPIがまだ実験的であるか、設計上の問題がある場合に利用されます。
  • next.txt: 次のGoのメジャーバージョンまたはマイナーバージョンで追加される予定のAPIのリストです。これは開発中に頻繁に更新され、新しいAPIの提案や変更が反映されます。

これらのファイルは、GoのAPIがどのように進化し、どのAPIが互換性保証の対象となるかを追跡するための公式な記録として機能します。

text/template/parse パッケージ

text/template パッケージは、Go言語でテキストテンプレートを扱うための標準ライブラリです。このパッケージは、GoのWebアプリケーションやCLIツールなどで、動的にテキストを生成する際によく使用されます。

text/template/parse は、text/template パッケージの内部で使用されるサブパッケージで、テンプレートの構文解析(パース)を担当します。通常、開発者が直接このパッケージを使用することは稀で、text/template パッケージのAPIを通じて間接的に利用されます。

過去には、この text/template/parse パッケージが except.txt にリストされていた時期がありました。これは、そのAPIがまだ安定していない、あるいは将来的に変更される可能性があると見なされていたためと考えられます。しかし、このコミットの変更内容から、その時点では except.txt から削除されたか、そのステータスが変更されたことが示唆されます。

技術的詳細

このコミットの技術的な変更は非常にシンプルで、api/README ファイル内の1行のテキスト修正に限定されます。

変更前:

except.txt lists features that may disappear without breaking
true compatibility. The only package there is text/template/parse.

変更後:

except.txt lists features that may disappear without breaking true
compatibility.

この変更は、except.txt の説明から「The only package there is text/template/parse.」という部分を削除しています。これは、text/template/parse がもはや except.txt にリストされている唯一のパッケージではない、あるいは全くリストされていないことを意味します。

この修正は、GoのAPI互換性に関するドキュメントの正確性を保つために行われました。except.txt の内容が変更された場合、それに合わせて api/README の説明も更新する必要があります。これにより、開発者は常に最新かつ正確なAPI互換性情報を参照できるようになります。

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

diff --git a/api/README b/api/README
index 34b86efd99..897abc8d27 100644
--- a/api/README
+++ b/api/README
@@ -5,8 +5,8 @@ Each file is a list of of API features, one per line.
 go1.txt (and similarly named files) are frozen once a version has been
 shipped. Each file adds new lines but does not remove any.
 
-except.txt lists features that may disappear without breaking
-true compatibility. The only package there is text/template/parse.
+except.txt lists features that may disappear without breaking true
+compatibility.
 
 next.txt is the only file intended to be mutated. It's a list of
 features that may be added to the next version. It only affects

コアとなるコードの解説

上記の diff は、api/README ファイルに対する変更を示しています。

  • - except.txt lists features that may disappear without breaking
  • - true compatibility. The only package there is text/template/parse.

これら2行は、変更前の api/README に存在していた行です。except.txt の説明に加えて、「The only package there is text/template/parse.」という具体的な記述が含まれています。

  • + except.txt lists features that may disappear without breaking true
  • + compatibility.

これら2行は、変更後の api/README の対応する行です。ここでは、「The only package there is text/template/parse.」という部分が完全に削除され、except.txt の一般的な説明のみが残されています。

この変更は、text/template/parseexcept.txt から削除された、または except.txt に他のパッケージが追加されたため、もはや「唯一のパッケージ」ではないという事実を反映しています。これにより、api/READMEexcept.txt の現在の状態を正確に記述するようになります。

関連リンク

参考にした情報源リンク