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

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

このコミットは、Go言語の歴史における重要なマイルストーンであるGo 1のリリースに関連するドキュメントの更新と、バージョン管理タグの整理を目的としています。具体的には、Go 1のリリース情報を公式のリリース履歴ドキュメントに追加し、週次スナップショットの履歴にGo 1リリースに繋がる最終週の変更点を詳細に記録しています。また、Mercurialタグファイルから古い汎用タグを削除し、新しいリリース管理体制への移行を示唆しています。

コミット

commit 3895b5051df256b442d0b0af50debfffd8d75164
Author: Andrew Gerrand <adg@golang.org>
Date:   Wed Mar 28 23:41:03 2012 +1100

    weekly.2012-03-27

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

https://github.com/golang/go/commit/3895b5051df256b442d0b0af50debfffd8d75164

元コミット内容

    weekly.2012-03-27

変更の背景

このコミットの最も重要な背景は、Go言語の最初のメジャー安定版リリースであるGo 1の発表です。Go 1は、Go言語の将来の互換性を保証し、長期的な安定性を提供するというコミットメントを示すものでした。それまでのGoは、活発な開発が続けられ、APIや言語仕様が頻繁に変更される「週次スナップショット」として提供されていました。Go 1のリリースは、この不安定な開発フェーズから、より予測可能で信頼性の高いプラットフォームへの移行を意味しました。

このコミットは、Go 1リリースに伴う公式ドキュメントの更新の一環として行われました。具体的には、リリース履歴ページにGo 1の情報を追加し、Go 1がどの週次スナップショットに対応するかを明確にすることで、ユーザーがGo 1の変更内容を追跡しやすくすることを目的としています。また、バージョン管理システム(当時はMercurial)におけるタグの管理方法も、Go 1の安定性という新しいパラダイムに合わせて調整されています。

前提知識の解説

  • Go言語のリリースサイクル(2012年当時): Go言語は、Go 1リリース以前は「週次スナップショット」という形で開発版が公開されていました。これは、毎週最新の開発状況を反映したビルドが提供される形式で、ユーザーは常に最新の機能やバグ修正を試すことができましたが、APIの変更や後方互換性のない変更も頻繁に発生しました。Go 1は、この週次スナップショットとは一線を画す、長期的な安定性と互換性を保証する最初のメジャーリリースでした。
  • Mercurial (hg): Go言語のプロジェクトは、Gitに移行する以前はMercurialという分散型バージョン管理システムを使用していました。MercurialはGitと同様にリポジトリのクローン、コミット、ブランチ、タグなどの機能を提供します。
  • .hgtags ファイル: Mercurialリポジトリでは、.hgtagsファイルはリポジトリ内のタグ(特定のコミットに付けられた名前)を管理するために使用されます。このファイルには、コミットハッシュとそれに対応するタグ名が記述されています。
  • Go 1の互換性保証: Go 1の最も画期的な特徴の一つは、その「互換性保証」でした。これは、Go 1で書かれたプログラムは、将来のGo 1.xリリースでも変更なしにコンパイルおよび実行できることを意味します。これにより、Go言語はエンタープライズ環境や長期プロジェクトでの採用が促進されました。

技術的詳細

このコミットは、主にGo言語の公式ドキュメントとMercurialのタグ管理ファイルに対する変更を含んでいます。

  1. .hgtags の変更:

    • c1702f36df0397c19fc333571a771666029aa37e release
    • bce220d0377405146527ab9478867cbc572a6886 weekly これらの行が削除されています。これは、Go 1のリリースに伴い、従来の汎用的なreleaseweeklyというタグの管理方法が見直され、より具体的なバージョンタグ(例: go1weekly.YYYY-MM-DD)に移行したことを示唆しています。これにより、タグの意図がより明確になり、混乱を避けることができます。
  2. doc/devel/release.html の変更:

    • HTMLコメントに"Title": "Release History"が追加され、ドキュメントのメタデータが整備されました。
    • リリースを更新するためのMercurialコマンドの指示が、hg update release.r<i>NN</i>から汎用的なhg update <i>tag</i>に変更されました。これは、Go 1以降のリリースが必ずしもrelease.rNNという命名規則に従わない可能性を考慮した変更です。
    • 最も重要な変更は、Go 1 (released 2012/03/28) という新しいセクションが追加されたことです。このセクションでは、Go 1が長期的に安定したメジャーリリースであること、Go 1リリースノート (/doc/go1.html) とGo 1互換性ドキュメント (/doc/go1compat.html) へのリンクが提供されています。また、Go 1リリースがweekly.2012-03-27に対応することが明記されています。
  3. doc/devel/weekly.html の変更:

    • HTMLコメントに"Title": "Weekly Snapshot History"が追加され、ドキュメントのメタデータが整備されました。
    • 2012-03-27 (Go 1) という新しいセクションが追加され、この週次スナップショットに含まれる多数の変更点が詳細にリストアップされています。これには、cmd/distcmd/gocmd/godoccrypto/tlsdocexp/typesgo/buildgodocmisc/distmisc/emacsmisc/goplaynetospath/filepathrun.bashruntimetext/templatewindowsなど、Go言語の様々なコンポーネントにおけるバグ修正、機能改善、ドキュメント更新が含まれています。このリストは、Go 1リリース直前の最終調整と品質向上の取り組みを示しています。

これらの変更は、Go 1という画期的なリリースを公式に記録し、ユーザーがその内容と影響を理解するための重要な情報を提供することを目的としています。

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

このコミットで変更されたファイルは以下の通りです。

  • .hgtags
  • doc/devel/release.html
  • doc/devel/weekly.html

具体的な変更内容は以下の通りです。

diff --git a/.hgtags b/.hgtags
index ef8f73ccd1..9845868d79 100644
--- a/.hgtags
+++ b/.hgtags
@@ -85,7 +85,6 @@ d7322ae4d055a4cf3efaf842d0717a41acd85bac weekly.2011-09-21
 32a5db19629897641b2d488de4d1b998942ef80e release.r60.2
 3bdabf483805fbf0c7ef013fd09bfd6062b9d3f2 weekly.2011-10-06
 c1702f36df0397c19fc333571a771666029aa37e release.r60.3
-c1702f36df0397c19fc333571a771666029aa37e release
 acaddf1cea75c059d19b20dbef35b20fb3f38954 release.r58.2
 6d7136d74b656ba6e1194853a9486375005227ef weekly.2011-10-18
 941b8015061a0f6480954821dd589c60dfe35ed1 weekly.2011-10-25
@@ -109,4 +108,3 @@ b4a91b6933748db1a7150c06a1b55ad506e52906 weekly.2011-11-18
 f4470a54e6dbcdd52d8d404e12e4754adcd2c948 weekly.2012-03-04
 3cdba7b0650c6c906ef3e782654f61701abd7dd2 weekly.2012-03-13
 bce220d0377405146527ab9478867cbc572a6886 weekly.2012-03-22
-bce220d0377405146527ab9478867cbc572a6886 weekly
diff --git a/doc/devel/release.html b/doc/devel/release.html
index 984e674935..65946e31f9 100644
--- a/doc/devel/release.html
+++ b/doc/devel/release.html
@@ -1,4 +1,6 @@
-<!-- Release History -->
+<!--{
+	"Title": "Release History"
+}-->
  
 <p>This page summarizes the changes between official stable releases of Go.
 Between releases we issue less stable
@@ -11,9 +13,28 @@ has full details.</p>
  
 <pre>
 hg pull
-hg update release.r<i>NN</i>
+hg update <i>tag</i>
 </pre>
  
+<h2 id="go1">go1 (released 2012/03/28)</h2>
+
+<p>
+Go 1 is a major release of Go that will be stable in the long term.
+Read the <a href="/doc/go1.html">Go 1 Release Notes</a> for more information.
+</p>
+
+<p>
+It is intended that programs written for Go 1 will continue to compile and run
+correctly, unchanged, under future versions of Go 1.
+Read the <a href="/doc/go1compat.html">Go 1 compatibility document</a> for more
+about the future of Go 1.
+</p>
+
+<p>
+The go1 release corresponds to 
+<code><a href="weekly.html#2012-03-27">weekly.2012-03-27</a></code>.
+</p>
+
 <h2 id="r60">r60 (released 2011/09/07)</h2>
  
 <p>
diff --git a/doc/devel/weekly.html b/doc/devel/weekly.html
index 4c4b52e44a..46efe41edd 100644
--- a/doc/devel/weekly.html
+++ b/doc/devel/weekly.html
@@ -1,4 +1,6 @@
-<!-- Weekly Snapshot History -->
+<!--{
+	"Title": "Weekly Snapshot History"
+}-->
  
 <p>This page summarizes the changes between tagged weekly snapshots of Go.
 For full details, see the <a href="http://code.google.com/p/go/source/list">Mercurial change log</a>.</p>
@@ -14,6 +16,47 @@ hg pull
 hg update weekly.<i>YYYY-MM-DD</i>
 </pre>
  
+<h2 id="2012-03-27">2012-03-27 (<a href="release.html#go1">Go 1</a>)</h2>
+
+<pre>
+* cmd/dist: fix detection of go1 version.
+* cmd/go: add missing error check (thanks Evan Shaw),
+	allow underscores in tool name (thanks Shenghou Ma),
+	bug fixes,
+	copy tag_test.go from goinstall,
+	explain versions better,
+	respect $GOBIN always,
+	update for go1 tag format.
+* cmd/godoc: canonicalize custom path redirects,
+	fix app engine version,
+	use virtual filesystem to implement -templates flag.
+* codewalk/sharemem.xml: fix references to files.
+* crypto/tls: don't select ECC ciphersuites with no mutual curve.
+* doc: add JSON-RPC: a tale of interfaces article (thanks Francisco Souza),
+	describe the Windows MSI installer as experimental,
+	link to Go Project Dashboard from package list,
+	update wiki tutorial templates and template discussion,
+	and many minor fixes.
+* exp/types: generalized GCImporter API.
+* go/build: cgoEnabled is not known to cmd/dist anymore (thanks Shenghou Ma),
+	fix import check.
+* godoc: make 'Overview' section collapsible.
+* misc/dist: many fixes and tweaks.
+* misc/emacs: fix indentation bug.
+* misc/goplay: fix error on IE8 (thanks Yasuhiro Matsumoto).
+* net: ignore ECONNABORTED from syscall.Accept (thanks Devon H. O'Dell).
+* os: add missing byte to FileMode buffer (thanks Stefan Nilsson).
+* path/filepath: convert drive letter to upper case in windows EvalSymlinks (thanks Alex Brainman),
+	correct comment in EvalSymlinks (thanks Alex Brainman),
+	use windows GetShortPathName api to force GetLongPathName to do its work (thanks Alex Brainman),
+	windows drive letter cannot be a digit (thanks Alex Brainman).
+* run.bash: compile the codewalks.
+* runtime: restore deadlock detection in the simplest case (thanks Rémy Oudompheng),
+	work around false negative in deadlock detection.
+* text/template: fix typo in package comment.
+* windows: installer fixes (thanks Joe Poirier).
+</pre>
+
 <h2 id="2012-03-22">2012-03-22 (Go 1 Release Candidate 2)</h2>
  
 <pre>

コアとなるコードの解説

  • .hgtags: このファイルからのreleaseweeklyという汎用タグの削除は、Go 1という安定版の登場により、従来の開発版のタグ付け慣習が変更されたことを示しています。今後は、より具体的なバージョン番号や日付を含むタグが使用されるようになり、タグの管理がより厳密になったと考えられます。

  • doc/devel/release.html: このドキュメントはGoの公式リリース履歴をまとめたものです。Go 1に関する新しいセクションの追加は、Go 1がGo言語の歴史において非常に重要な節目であることを明確に示しています。Go 1の安定性、長期的な互換性保証、そして関連するドキュメントへのリンクが提供されることで、ユーザーはGo 1の意義と詳細を容易に理解できるようになります。hg updateコマンドの汎用化は、将来のリリースにおけるタグ命名規則の柔軟性に対応するための変更です。

  • doc/devel/weekly.html: このドキュメントはGoの週次スナップショットの履歴をまとめたものです。2012-03-27 (Go 1)というセクションの追加は、Go 1リリースに直接繋がる最終週の開発状況を詳細に記録しています。このリストには、Go言語の様々なサブシステムにおける多数の修正と改善が含まれており、Go 1がリリースされるまでにどれだけの作業が行われたかを示しています。これは、Go 1が単なるバージョンアップではなく、広範な品質向上と安定化の努力の結晶であることを裏付けています。

これらの変更は全体として、Go 1のリリースを公式にアナウンスし、その重要性を強調し、ユーザーがGo 1への移行をスムーズに行えるようにするための情報提供を強化するものです。

関連リンク

  • Go 1 Release Notes: https://go.dev/doc/go1 (コミット当時のリンクは/doc/go1.htmlでしたが、現在の公式ドキュメントのパスに合わせています)
  • Go 1 Compatibility Document: https://go.dev/doc/go1compat (コミット当時のリンクは/doc/go1compat.htmlでしたが、現在の公式ドキュメントのパスに合わせています)

参考にした情報源リンク