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

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

このコミットは、Go言語プロジェクトの週次開発ノートの更新と、関連するバージョン管理タグの整理を目的としています。具体的には、doc/devel/weekly.html ファイルにその週のGoプロジェクトにおける様々な変更点や進捗が追記され、同時にMercurialのリポジトリタグファイルである.hgtagsから古い週次タグが削除されています。

コミット

このコミットは、Go言語のドキュメントとバージョン管理タグの更新を行っています。主な目的は、開発の進捗をコミュニティに伝えるための週次ノートを最新の状態に保ち、同時に過去の週次タグを整理することです。

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

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

元コミット内容

doc: update weekly notes, untag weekly

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/5783093

変更の背景

Go言語プロジェクトでは、開発の透明性を保ち、コミュニティに最新の進捗を共有するために、定期的に「週次ノート (weekly notes)」を公開していました。これは、その週に行われた主要な変更点、バグ修正、新機能追加などをまとめたもので、doc/devel/weekly.htmlというHTMLファイルで管理されていました。

このコミットが行われた2012年3月は、Go言語がバージョン1.0のリリースを控えていた、あるいはリリース直後の非常に重要な時期でした。Go 1.0はGo言語にとって最初の安定版リリースであり、後方互換性の保証が開始されるマイルストーンでした。このような時期には、開発のペースが速く、多くの変更が頻繁に行われていたため、週次ノートによる情報共有は特に重要でした。

また、Goプロジェクトは当初Mercurialという分散型バージョン管理システムを使用していました。Mercurialでは、特定のコミットに「タグ」を付けることで、リリースバージョンや重要なスナップショットをマークします。.hgtagsファイルは、これらのタグ情報を管理するためのものでした。このコミットでは、古い「weekly」タグを削除することで、タグの整理と最新の週次スナップショットへのポインタの更新を行っています。これは、継続的な開発サイクルにおいて、常に最新の「weekly」タグが最新の週次ビルドを指すようにするための運用上の慣習であったと考えられます。

前提知識の解説

  • Go言語の週次ノート (Weekly Notes): Go言語の初期開発段階において、開発チームがコミュニティに対して毎週の進捗を報告するために作成していたドキュメントです。doc/devel/weekly.htmlというファイルにまとめられ、Go言語のウェブサイトで公開されていました。これは、Go 1.0リリース前の活発な開発状況を反映しており、多くの新機能、バグ修正、パフォーマンス改善などが毎週のように行われていたことを示しています。
  • Mercurial (.hgtags): MercurialはGitと同様の分散型バージョン管理システムです。Go言語プロジェクトは、2014年にGitに移行するまでMercurialを主要なバージョン管理システムとして使用していました。.hgtagsファイルは、Mercurialリポジトリにおいて、特定のコミットに付けられたタグ(例: release-go1, weekly.2012-03-12など)とそのハッシュ値を記録するための特殊なファイルです。このファイルはリポジトリのルートに存在し、タグの追加や削除が行われるたびに更新されます。
  • Go 1.0リリース前後の開発: Go 1.0は、Go言語にとって最初の安定版リリースであり、言語仕様と標準ライブラリの安定性が保証される重要な節目でした。このリリースに向けて、多くの機能が追加され、既存のコードが洗練され、パフォーマンスが最適化されました。このコミットが行われた時期は、まさにその最終調整段階、あるいはGo 1.0リリース直後の活発な開発が続いていた時期に当たります。

技術的詳細

このコミットは、主に以下の2つの側面で技術的な変更を含んでいます。

  1. doc/devel/weekly.html の更新:

    • このファイルは、Goプロジェクトの様々なサブシステム(archive/zip, build, cmd/dist, cmd/go, cmd/godoc, net/http, os, runtime, testなど)におけるその週の変更点を詳細に記述しています。
    • 変更内容には、バグ修正(例: archive/zipのCRC32検証、net/httpのクラッシュ修正)、新機能追加(例: cmd/goenvコマンド、go getのURLサポート、cmd/godocのテンプレートサポート)、パフォーマンス改善、ドキュメントの追加・修正などが含まれています。
    • 特に注目すべきは、cmd/go(Goコマンドラインツール)やcmd/godoc(Goドキュメントツール)といったGo開発の基盤となるツールの機能強化が多く含まれている点です。例えば、go getがSSHトンネル経由のBazaar, Git, SVNリポジトリをサポートするようになったり、godoc$GOPATHをサポートするようになったりといった変更は、開発者の利便性を大きく向上させるものでした。
    • また、docディレクトリ内のドキュメント追加(例: "C? Go? Cgo!"、"Go's declaration syntax"といった記事)は、Go言語の学習資料の充実を示しています。
    • これらの変更は、Go 1.0の安定性と機能性を高めるための継続的な努力の一環であり、当時のGo開発が非常に活発であったことを示唆しています。
  2. .hgtags の変更:

    • このファイルから、d58f8f9c5a54828b06e7e844b4465c0578d7cea6 weekly.2012-03-12d58f8f9c5a54828b06e7e844b4465c0578d7cea6 weekly の2行が削除されています。
    • これは、Mercurialのタグ weekly.2012-03-12weekly が、コミットハッシュ d58f8f9c5a54828b06e7e844b4465c0578d7cea6 から削除されたことを意味します。
    • 通常、weeklyタグは常に最新の週次スナップショットを指すように更新されます。古い週次タグ(例: weekly.2012-03-12)は、特定の時点のスナップショットを記録するために使用されますが、このコミットではそれも削除されています。これは、新しい週次ノートの公開に伴い、古い週次タグが不要になったか、あるいは新しい週次タグが別途追加されることを前提とした整理作業であると考えられます。
    • GoプロジェクトがMercurialからGitに移行する前は、このようなタグ管理が頻繁に行われていました。

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

このコミットにおける「コード」の変更は、Go言語のソースコードそのものではなく、主にドキュメントファイルとバージョン管理メタデータファイルです。

  • .hgtags

    • -d58f8f9c5a54828b06e7e844b4465c0578d7cea6 weekly.2012-03-12
    • -d58f8f9c5a54828b06e7e844b4465c0578d7cea6 weekly
  • doc/devel/weekly.html

    • このファイル全体が更新されており、多くの行が追加・削除されています。具体的な変更は多岐にわたるため、ここでは主要な変更点の一部を抜粋します。
    --- a/doc/devel/weekly.html
    +++ b/doc/devel/weekly.html
    @@ -36,7 +36,8 @@ release is cut and in the field for a while.
     Changes in this snapshot:
     * archive/zip: verify CRC32s in non-streamed files,
     	write data descriptor signature for OS X; fix bugs reading it.
    -* build: re-enable some broken tests in run.bash (thanks Shenghou Ma),
    +* build: build correct cmd/dist matching GOHOSTARCH (thanks Shenghou Ma),
    +\tre-enable some broken tests in run.bash (thanks Shenghou Ma),
     	remove some references to Make.inc etc.
     	use run.go for running tests.
     * builder: use short test for subrepos (thanks Shenghou Ma).
    @@ -48,7 +49,9 @@ Changes in this snapshot:
     * cmd/dist, cmd/go: move CGO_ENABLED from 'go tool dist env' to 'go env' (thanks Shenghou Ma).
     * cmd/dist: fix build for Linux/ARM (thanks Shenghou Ma),
     	use correct hg tag for go version (thanks Alex Brainman).
    -* cmd/gc: delete old map delete in walk,
    +* cmd/fix: add rules for net/http -> net/http/httputil renames.
    +* cmd/gc: allow ~ in import paths,
    +\tdelete old map delete in walk,
     	do not confuse unexported methods of same name,
     	if $GOROOT_FINAL is set, rewrite file names in object files,
     	implement len(array) / cap(array) rule,
    @@ -59,15 +62,22 @@ Changes in this snapshot:
     * cmd/go: add -compiler,
     	add env command, use to fix misc/cgo/testso,
     	allow go get with arbitrary URLs,
    +\tallow ssh tunnelled bzr, git and svn (thanks Ingo Oeser),
     	always provide .exe suffix on windows (thanks Shenghou Ma),
     	document import path meta tag discovery in go help remote,
     	honor buildflags in run, test (thanks Rémy Oudompheng),
     	local import fixes,
    +\tmake go get new.code/... work,
     	rebuild external test package dependencies,
    +\trespect $GOBIN always,
     	support -compiler for go list, fix isStale for gccgo (thanks Rémy Oudompheng).
    -* cmd/godoc: add support for serving templates,
    -\tremove extra / in paths (thanks Ugorji Nwoke).
    +* cmd/godoc: add support for serving templates.
    +\tfix codewalk handler (thanks Francisco Souza).
    +\tremove extra / in paths (thanks Ugorji Nwoke),
    +\tsupport $GOPATH, simplify file system code,
    +\tswitch on +1 buttons.
     * cmd/gofmt: fix race in long test (thanks Mikio Hara).
    +* codereview: fix for Mercurial 2.1.
     * crypto/x509: allow server gated crypto in windows systemVerify (thanks Mikkel Krautz),
     	do not forget to free cert context (thanks Alex Brainman),
     	don't include empty additional primes in PKCS#1 private key,
    @@ -83,11 +93,15 @@ Changes in this snapshot:
     * doc/go_mem: init-created goroutine behavior changes for Go 1 (thanks Shenghou Ma).
     * doc/gopher: flip frontpage gopher's eyes.
     * doc: add "About the go command" article,
    +\tadd C? Go? Cgo! article (thanks Francisco Souza),
    +\tadd Go's declaration syntax article (thanks Francisco Souza),
     	add more gophers,
     	add note about import . to Go 1 compatibility notes,
     	several doc fixes and improvements,
    +\tupdate Effective Go init section,
     	update progs/run (thanks Shenghou Ma),
    -\tupdate Effective Go init section.
    +\tupdate reference gopher,
    +\tweb site tweaks.
     * encoding/asn1: handle UTCTime before the year 2000.
     * encoding/binary: improve package comment (thanks Stefan Nilsson).
     * encoding/gob: fix memory corruption.
    @@ -106,11 +120,8 @@ Changes in this snapshot:
     * go/printer, gofmt: nicer formatting of multi-line returns.
     * go/printer: example for Fprint.
     * go/scanner: better panic diagnostic.
    -* go spec: no known implementation differences anymore.
    -* godoc: quiet log spam,
    -\tsupport $GOPATH, simplify file system code,
    -\tswitch on +1 buttons,
    -\tupdate documentation.
    +* go spec: no known implementation differences anymore,
    +\tfix inaccuracy in type identity definition.
     * io: better document WriterAt.
     * misc/dashboard: remove obsolete package builder code.
     * misc/dist: add source archive support,
    @@ -119,7 +130,8 @@ Changes in this snapshot:
     * misc/emacs: fix extra indentation after comments that end with a period.
     * misc/xcode: example install of language spec for Xcode 4.x (thanks Emil Hessman).
     * net, net/rpc, reflect, time: document concurrency guarantees.
    -* net/http: fix crash with Transport.CloseIdleConnections.
    +* net/http: fix crash with Transport.CloseIdleConnections,
    +\treturn appropriate errors from ReadRequest.
     * net: add skip message to test (thanks Mikio Hara),
     	disable use of external listen along with other external network uses,
     	do not use reflect for DNS messages (thanks Rémy Oudompheng),
    @@ -130,14 +142,17 @@ Changes in this snapshot:
     	remove dependence on bytes, fmt, strconv,
     	silence another epoll print,
     	use IANA reserved port to test dial timeout (thanks Mikio Hara).
    -* os: fix SameFile to work for directories on windows (thanks Alex Brainman).
    +* os: document FileInfo.Size as system-dependent for irregular files,
    +\tfix SameFile to work for directories on windows (thanks Alex Brainman).
     * path/filepath/path_test.go: repair and enable TestAbs.
     * path/filepath: disable AbsTest on windows,
     	retrieve real file name in windows EvalSymlinks (thanks Alex Brainman).
     * runtime/pprof: disable test on Leopard 64-bit.
     * runtime: add Compiler,
    +\tfix windows/amd64 exception handler (thanks Alex Brainman),
     	inline calls to notok,
     	move runtime.write back to C,
    +\tprint error on receipt of signal on non-Go thread,
     	remove unused runtime·signame and runtime·newError,
     	try extending arena size in 32-bit allocator (thanks Rémy Oudompheng),
     	wait for main goroutine before setting GOMAXPROCS (thanks Rémy Oudompheng).
    @@ -145,7 +160,8 @@ Changes in this snapshot:
     * sync/atomic: disable store and load test on a single processor machine (thanks Mikio Hara).
     * syscall: fix mkall.sh, mksyscall_linux.pl, and regen for Linux/ARM (thanks Shenghou Ma).
     * test/run: use all available cores on ARM system (thanks Shenghou Ma).
    -* test: add inherited interface test to ddd.go,
    +* test: actually run them on windows (thanks Alex Brainman),
    +\tadd inherited interface test to ddd.go,
     	enable method expression tests in ddd.go,
     	invoke go command in run.go,
     	match gccgo error messages for bug388.go,
    

コアとなるコードの解説

このコミットの「コアとなるコード」は、Go言語のソースコードそのものではなく、Goプロジェクトのドキュメントとバージョン管理のメタデータです。

  • .hgtags の変更:
    • この変更は、Mercurialリポジトリにおけるタグの管理を示しています。weekly.2012-03-12という日付付きの週次タグと、常に最新を指すweeklyタグが、特定のコミットハッシュから削除されました。これは、新しい週次ノートが公開され、それに伴いタグのポインタを更新する(または新しいタグを付与する)ための準備作業、あるいは単に古いタグの整理です。GoプロジェクトがMercurialからGitに移行する前は、このようなタグの更新が定期的に行われていました。
  • doc/devel/weekly.html の変更:
    • このHTMLファイルは、Go言語の週次開発レポートであり、その週に行われたGoプロジェクト全体の多岐にわたる変更点を網羅的に記述しています。
    • archive/zip: ZIPアーカイブのCRC32検証の改善や、OS X向けのデータ記述子署名の書き込み修正など、アーカイブ処理の堅牢性が向上しています。
    • build: ビルドシステム関連の修正で、cmd/distのビルドがGOHOSTARCHに正しくマッチするように修正されたり、壊れていたテストが再有効化されたりしています。これは、Goのビルドプロセスの安定性と移植性の向上に寄与します。
    • cmd/dist, cmd/go: CGO_ENABLED環境変数の管理方法の変更や、Linux/ARM向けのビルド修正、go envコマンドの追加など、Goのコマンドラインツールの機能強化とクロスコンパイル環境の改善が進められています。特にgo getが任意のURLやSSHトンネル経由のバージョン管理システム(Bazaar, Git, SVN)をサポートするようになった点は、外部パッケージの取得の柔軟性を大幅に高めました。
    • cmd/godoc: Goのドキュメント表示ツールであるgodocが、テンプレートの提供をサポートしたり、$GOPATHをサポートするようになったりしています。これにより、godocの機能が拡張され、より柔軟なドキュメント表示と、Goワークスペースとの連携が強化されました。
    • doc: 複数の新しい記事("C? Go? Cgo!"、"Go's declaration syntax")が追加され、既存のドキュメント("Effective Go")も更新されています。これは、Go言語の学習資料と公式ドキュメントの充実を目的としています。
    • net/http: Transport.CloseIdleConnectionsでのクラッシュ修正や、ReadRequestからの適切なエラー返却など、ネットワークライブラリの安定性と信頼性が向上しています。
    • os: FileInfo.Sizeのドキュメント更新や、Windows上でのディレクトリに対するSameFileの修正など、OSとのインタラクションに関する改善が含まれています。
    • runtime: Windows/amd64の例外ハンドラ修正、シグナル受信時のエラー出力など、Goランタイムの安定性とデバッグ機能が強化されています。
    • test: Windows上でのテスト実行の有効化や、既存テストの改善など、テストインフラの強化が行われています。

これらの変更は、Go 1.0のリリースに向けて、言語、ツール、標準ライブラリ、ランタイムの各方面で活発な開発と改善が行われていたことを明確に示しています。特に、クロスプラットフォーム対応(Windows, Linux/ARM)や、開発ツールの利便性向上に重点が置かれていたことが伺えます。

関連リンク

参考にした情報源リンク

  • Go言語の公式ドキュメントとブログ (当時の開発状況を理解するため)
  • Mercurialのドキュメント (.hgtagsファイルの役割を理解するため)
  • GitHubのコミット履歴 (変更されたファイルの内容と差分を確認するため)
  • Go言語の歴史に関する一般的な知識 (Go 1.0リリース前後の文脈を理解するため)