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

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

このコミットは、Go 1.3のリリースノートとなるdoc/go1.3.txtファイルに、Go 1.3で導入される新機能や変更点を追記し、項目をソートして整理することを目的としています。具体的には、cmd/gogo/buildcrypto/tlscrypto/x509net/httpnetos/execruntime/debugsyncunicodeパッケージにおける様々な改善や新機能の追加が記載されています。

コミット

commit c535ce8506ee82fd50623156cecf1ae551fa7228
Author: Brad Fitzpatrick <bradfitz@golang.org>
Date:   Fri Feb 28 14:17:33 2014 -0800

    doc: add more go1.3.txt items, sort.
    
    LGTM=r
    R=r
    CC=golang-codereviews
    https://golang.org/cl/70120044

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

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

元コミット内容

doc: add more go1.3.txt items, sort.

LGTM=r
R=r
CC=golang-codereviews
https://golang.org/cl/70120044

変更の背景

Go言語は継続的に開発が進められており、新しいバージョンがリリースされるたびに、そのバージョンで導入された変更点や新機能がドキュメントにまとめられます。go1.3.txtは、Go 1.3のリリースノートとして機能するファイルであり、開発者やユーザーが新しいバージョンで何が変わったのかを把握するための重要な情報源です。

このコミットの背景には、Go 1.3のリリースに向けて、開発中に実装された様々な機能追加や改善を公式ドキュメントに反映させる必要があったことが挙げられます。特に、Goの標準ライブラリは活発に開発されており、ネットワーク、暗号化、並行処理など多岐にわたる領域で機能強化が行われています。これらの変更を正確かつ網羅的にドキュメント化することで、ユーザーはGo 1.3の新しい機能を最大限に活用し、既存のコードを適切に移行できるようになります。また、項目のソートは、ドキュメントの可読性と検索性を向上させるための一般的なプラクティスです。

前提知識の解説

このコミットの変更内容を理解するためには、以下のGo言語および関連技術の基本的な知識が役立ちます。

  • Go言語のパッケージと標準ライブラリ: Go言語は、機能ごとにパッケージに分割されており、cmd/go(Goコマンドラインツール)、go/build(Goのビルドシステム)、crypto/tls(TLS/SSL実装)、net/http(HTTPクライアント/サーバー)、sync(並行処理プリミティブ)など、多岐にわたる標準ライブラリが提供されています。
  • Goコマンド: go rungo testなど、Goプログラムのビルド、実行、テストを行うためのコマンドラインツールです。
  • TLS/SSL: Transport Layer Security (TLS) および Secure Sockets Layer (SSL) は、インターネット上での安全な通信を可能にするための暗号化プロトコルです。crypto/tlsパッケージはGoにおけるTLSの実装を提供します。
  • X.509証明書とCSR: X.509は公開鍵証明書の標準フォーマットです。Certificate Signing Request (CSR) は、認証局 (CA) にデジタル証明書を要求する際に使用されるファイルフォーマットです。crypto/x509パッケージはこれらの操作をサポートします。
  • HTTPプロトコル: Hypertext Transfer Protocol (HTTP) は、Web上でデータを交換するためのプロトコルです。net/httpパッケージはGoにおけるHTTPクライアントおよびサーバーの実装を提供します。
  • TCP Keep-Alive: TCP接続がアイドル状態になったときに、接続がまだ有効であることを確認するために定期的にパケットを送信するメカニズムです。これにより、ネットワークの中断によって接続が切断されたことを早期に検出できます。
  • Goroutineと並行処理: Go言語の軽量なスレッドのようなもので、並行処理を容易にします。syncパッケージは、ミューテックスやWaitGroupなど、goroutine間の同期を助けるプリミティブを提供します。
  • sync.Pool: Go 1.3で導入された、一時的なオブジェクトを再利用するためのメカニズムです。ガベージコレクションの負荷を軽減し、パフォーマンスを向上させるのに役立ちます。
  • Unicode: 世界中の文字を統一的に扱うための文字コード標準です。GoのunicodeパッケージはUnicode関連の機能を提供します。
  • CL (Change List): Goプロジェクトでは、変更はChange List (CL) としてGerritに提出され、レビューを経てマージされます。コミットメッセージに記載されているCL番号は、その変更の元のレビューページへのリンクを示します。

技術的詳細

このコミットでgo1.3.txtに追加された主な変更点は以下の通りです。それぞれの項目は、Go 1.3における重要な機能強化や改善を示しています。

  1. cmd/go, go/build: support .m files (CL 60590044):

    • Goのビルドシステムが、Objective-Cソースファイル(.m拡張子)のサポートを追加しました。これは、GoとObjective-Cを組み合わせたプログラム(特にmacOSやiOSアプリケーション)をビルドする際に、Cgoを介してObjective-Cコードをよりシームレスに統合できるようにするためのものです。これにより、GoアプリケーションからCocoaフレームワークなどのObjective-CベースのAPIを呼び出すことが容易になります。
  2. cmd/go: add -exec to 'go run' and 'go test' (CL 68580043):

    • go runおよびgo testコマンドに-execフラグが追加されました。このフラグを使用すると、ビルドされた実行可能ファイルを直接実行する代わりに、指定された外部コマンドを介して実行できるようになります。これは、クロスコンパイル環境でのテストや、特定のサンドボックス環境で実行ファイルを起動する際に非常に有用です。例えば、QEMUのようなエミュレータを使ってARMボード上でテストを実行する場合などに利用できます。
  3. crypto/tls: ServerName or InsecureSkipVerify (CL 67010043):

    • crypto/tlsパッケージにおいて、TLSクライアントがサーバー証明書の検証を行う際に、ServerNameフィールドが設定されているか、またはInsecureSkipVerifytrueに設定されているかのいずれかが必要となりました。これは、TLS接続のセキュリティを強化するための変更であり、意図しない証明書検証のスキップを防ぎます。
  4. crypto/tls: add DialWithDialer (CL 68920045):

    • crypto/tlsパッケージにDialWithDialer関数が追加されました。この関数は、既存のnet.Dialerインスタンスを使用してTLS接続を確立することを可能にします。これにより、ネットワーク接続のタイムアウト、Keep-Alive設定、ローカルアドレスバインディングなど、より詳細なネットワークダイヤルオプションをTLS接続に適用できるようになります。
  5. crypto/tls: report TLS version in ConnectionState (CL 68250043):

    • crypto/tls.ConnectionState構造体に、確立されたTLS接続のバージョン(例: TLS 1.2)を報告するフィールドが追加されました。これにより、アプリケーションは現在使用されているTLSプロトコルのバージョンをプログラム的に確認できるようになり、セキュリティ監査やデバッグに役立ちます。
  6. crypto/x509: support CSRs (CL 49830048):

    • crypto/x509パッケージがCertificate Signing Request (CSR) の生成とパースをサポートするようになりました。これにより、Goアプリケーション内で直接CSRを作成し、認証局に送信してデジタル証明書を取得するプロセスを自動化できるようになります。
  7. liblink: pull linker i/o into separate liblink C library (CL 35790044):

    • リンカのI/O処理が、独立したCライブラリliblinkに分離されました。これは、リンカのコードベースのモジュール化と保守性の向上を目的とした内部的な変更です。
  8. misc/benchcmp: removed and replaced by go.tools/cmd/benchcmp (CL 47980043):

    • misc/benchcmpツールがGoのメインリポジトリから削除され、go.tools/cmd/benchcmpに移動しました。benchcmpはGoのベンチマーク結果を比較するためのツールです。この変更は、Goのツール群をより適切に整理し、メインのGoディストリビューションから独立して開発・配布できるようにするためのものです。
  9. misc/dist: renamed misc/makerelease (CL 39920043):

    • misc/distツールがmisc/makereleaseにリネームされました。これは、Goのリリースプロセスに関連するスクリプトの名称変更です。
  10. net/http: add Server.ErrorLog; log and test TLS handshake errors (CL 70250044):

    • net/http.Server構造体にErrorLogフィールドが追加されました。これにより、HTTPサーバーがエラー(特にTLSハンドシェイクエラー)を記録するために使用するカスタムロガーを指定できるようになります。これにより、サーバーのエラーハンドリングとデバッグの柔軟性が向上します。
  11. net/http: add Server.SetKeepAlivesEnabled (CL 69670043):

    • net/http.ServerSetKeepAlivesEnabledメソッドが追加されました。このメソッドは、HTTPサーバーがクライアントとの間でKeep-Alive接続を使用するかどうかを制御します。Keep-Alive接続は、複数のリクエスト/レスポンスを単一のTCP接続で処理することで、パフォーマンスを向上させます。
  12. net/http: add Transport.TLSHandshakeTimeout; set it by default (CL 68150045):

    • net/http.Transport構造体にTLSHandshakeTimeoutフィールドが追加され、デフォルト値が設定されました。これは、TLSハンドシェイクが完了するまでの最大時間を指定します。これにより、TLSハンドシェイクがハングアップするのを防ぎ、ネットワークの信頼性が低い環境でのクライアントの挙動を改善します。
  13. net/http: add optional Server.ConnState callback (CL 69260044):

    • net/http.ServerにオプションのConnStateコールバックが追加されました。このコールバックは、TCP接続の状態が変化したときに呼び出されます(例: 接続が確立された、アイドル状態になった、閉じられたなど)。これにより、サーバーは接続のライフサイクルをより詳細に監視し、リソース管理やロギングに活用できるようになります。
  14. net/http: use TCP Keep-Alives on DefaultTransport's connections (CL 68330046):

    • net/http.DefaultTransportが使用するTCP接続で、デフォルトでTCP Keep-Aliveが有効になりました。これにより、HTTPクライアントがサーバーとの接続を維持し、アイドル状態の接続が不必要に切断されるのを防ぎます。
  15. net/http: use TCP keep-alives for ListenAndServe and ListenAndServeTLS (CL 48300043):

    • net/http.ListenAndServeおよびnet/http.ListenAndServeTLS関数によって確立されるTCP接続でも、TCP Keep-Aliveが使用されるようになりました。これにより、HTTPサーバーとクライアント間の接続の安定性が向上します。
  16. net: add Dialer.KeepAlive option (CL 68380043):

    • net.Dialer構造体にKeepAliveオプションが追加されました。これにより、任意のTCP接続を確立する際に、TCP Keep-Aliveの期間を細かく制御できるようになります。
  17. os/exec: fix Command with relative paths (CL 59580044):

    • os/exec.Command関数が、相対パスで指定された実行可能ファイルを正しく処理するように修正されました。以前は、相対パスが期待通りに解決されない場合がありましたが、この修正により、より堅牢な外部コマンドの実行が可能になります。
  18. runtime/debug: add SetPanicOnFault (CL 66590044):

    • runtime/debugパッケージにSetPanicOnFault関数が追加されました。この関数は、メモリ保護違反(セグメンテーションフォールトなど)が発生した際に、Goランタイムがパニックを発生させるかどうかを制御します。デバッグ時に、特定のメモリ違反を即座に検出するために使用できます。
  19. runtime: output how long goroutines are blocked (CL 50420043):

    • Goランタイムが、goroutineがブロックされている時間をプロファイリング情報として出力するようになりました。これは、デッドロックやパフォーマンスボトルネックの診断に役立つ重要なデバッグ機能です。
  20. sync: add Pool (CL 41860043, 46010043):

    • syncパッケージにPool型が追加されました。sync.Poolは、一時的なオブジェクトを再利用するための同期プリミティブです。頻繁に生成・破棄されるオブジェクト(例: バイトスライス、バッファ)をプールすることで、ガベージコレクションの負荷を軽減し、アプリケーションのパフォーマンスを向上させることができます。これは、Go 1.3における最も重要な新機能の一つです。
  21. syscall: add NewCallbackCDecl to use for windows callbacks (CL 36180044):

    • Windows環境でのコールバック関数を扱うために、syscallパッケージにNewCallbackCDeclが追加されました。これは、GoとWindows API間の相互運用性を向上させるためのものです。
  22. testing: add b.RunParallel function (CL 57270043):

    • testingパッケージのb.RunParallel関数が追加されました。これにより、ベンチマークテストを並行して実行できるようになり、マルチコアプロセッサ上でのパフォーマンス測定の精度と効率が向上します。
  23. testing: diagnose buggy tests that panic(nil) (CL 55780043):

    • testingパッケージが、panic(nil)を呼び出すバグのあるテストを診断するようになりました。これは、テストの信頼性を向上させ、開発者がテストの誤った挙動を早期に発見できるようにするための改善です。
  24. unicode: upgrade from Unicode 6.2.0 to 6.3.0 (CL 65400044):

    • Goのunicodeパッケージが、Unicodeのバージョンを6.2.0から6.3.0にアップグレードしました。これにより、新しい文字、スクリプト、文字プロパティのサポートが追加され、Goがより広範な国際化要件に対応できるようになります。

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

このコミット自体は、Goのソースコードそのものを変更するものではなく、Go 1.3のリリースノートであるdoc/go1.3.txtファイルを変更しています。したがって、コアとなるコードの変更箇所は、doc/go1.3.txtファイルの内容の追加とソートになります。

--- a/doc/go1.3.txt
+++ b/doc/go1.3.txt
@@ -1,15 +1,25 @@
+cmd/go, go/build: support .m files (CL 60590044)
+cmd/go: add -exec to 'go run' and 'go test' (CL 68580043)
 cmd/gofmt: remove -tabwidth and -tabs flags (CL 52170043)
+crypto/tls: ServerName or InsecureSkipVerify (CL 67010043)
+crypto/tls: add DialWithDialer (CL 68920045)
+crypto/tls: report TLS version in ConnectionState (CL 68250043)
+crypto/x509: support CSRs (CL 49830048)
 liblink: pull linker i/o into separate liblink C library (CL 35790044)
+misc/benchcmp: removed and replaced by go.tools/cmd/benchcmp (CL 47980043)
 misc/dist: renamed misc/makerelease (CL 39920043)
+net/http: add Server.ErrorLog; log and test TLS handshake errors (CL 70250044)
+net/http: add Server.SetKeepAlivesEnabled (CL 69670043)
+net/http: add Transport.TLSHandshakeTimeout; set it by default (CL 68150045)
+net/http: add optional Server.ConnState callback (CL 69260044)
+net/http: use TCP Keep-Alives on DefaultTransport's connections (CL 68330046)
+net/http: use TCP keep-alives for ListenAndServe and ListenAndServeTLS (CL 48300043)
+net: add Dialer.KeepAlive option (CL 68380043)
+os/exec: fix Command with relative paths (CL 59580044)
+runtime/debug: add SetPanicOnFault (CL 66590044)
 runtime: output how long goroutines are blocked (CL 50420043)
+sync: add Pool (CL 41860043, 46010043)
 syscall: add NewCallbackCDecl to use for windows callbacks (CL 36180044)
-testing: diagnose buggy tests that panic(nil) (CL 55780043)
 testing: add b.RunParallel function (CL 57270043)
-misc/benchcmp: removed and replaced by go.tools/cmd/benchcmp (CL 47980043)
-cmd/go, go/build: support .m files (CL 60590044)
+testing: diagnose buggy tests that panic(nil) (CL 55780043)
 unicode: upgrade from Unicode 6.2.0 to 6.3.0 (CL 65400044)
-runtime/debug: add SetPanicOnFault (CL 66590044)
-crypto/tls: ServerName or InsecureSkipVerify (CL 67010043)
-crypto/tls: report TLS version in ConnectionState (CL 68250043)
-crypto/x509: support CSRs (CL 49830048)
-cmd/go: add -exec to 'go run' and 'go test' (CL 68580043)

コアとなるコードの解説

このコミットは、Go 1.3のリリースノートであるdoc/go1.3.txtを更新するものです。差分を見ると、主に以下の2種類の変更が行われています。

  1. 新規項目の追加: Go 1.3で導入された新しい機能や改善点に関する記述が多数追加されています。これらは、+で始まる行として示されており、各項目の末尾には関連するCL(Change List)番号が記載されています。例えば、sync: add Pool (CL 41860043, 46010043)は、sync.Poolの追加という重要な新機能を示しています。
  2. 項目のソートと整理: 既存の項目がアルファベット順にソートされ、より読みやすく、検索しやすいように整理されています。これは、-で始まる行で一度削除され、その後+で始まる行で適切な位置に再挿入されていることで確認できます。例えば、testing: diagnose buggy tests that panic(nil)は一度削除され、別の位置に再追加されています。

このコミット自体は機能的な変更をもたらすものではなく、Go 1.3の変更内容を正確に文書化し、そのドキュメントの品質(可読性、網羅性)を向上させるためのものです。これにより、Go 1.3へのアップグレードを検討している開発者や、Go 1.3の新機能について学びたいユーザーが、必要な情報を効率的に見つけられるようになります。

関連リンク

  • Go 1.3 Release Notes (公式ドキュメント): このコミットが更新しているドキュメントの最終版は、Goの公式ウェブサイトで公開されています。
  • GoのChange List (CL) システム (Gerrit): コミットメッセージに記載されているCL番号は、Gerrit上の個々の変更セットへのリンクです。

参考にした情報源リンク

  • Goの公式ドキュメント
  • Goのソースコードリポジトリ (GitHub)
  • Gerrit Code Review (GoプロジェクトのCLをホストしているプラットフォーム)
  • 各CLに関連する議論やコミットメッセージ
  • Go言語に関する技術ブログやフォーラム(各機能の詳細な解説を検索するために利用)
    • 特にsync.Poolについては、多くの解説記事が存在します。
    • cmd/go -execについても、クロスコンパイルやテストに関する記事が参考になります。
    • net/httpcrypto/tlsの変更点については、Goのネットワークプログラミングに関する情報源が役立ちます。I have completed the detailed technical explanation of the commit, following all the user's instructions, including the specific chapter structure and language. I have used the commit data and performed web searches to gather comprehensive information about each change listed in go1.3.txt. The output is in Markdown format and is printed to standard output only, as requested.# [インデックス 18699] ファイルの概要

このコミットは、Go 1.3のリリースノートとなるdoc/go1.3.txtファイルに、Go 1.3で導入される新機能や変更点を追記し、項目をソートして整理することを目的としています。具体的には、cmd/gogo/buildcrypto/tlscrypto/x509net/httpnetos/execruntime/debugsyncunicodeパッケージにおける様々な改善や新機能の追加が記載されています。

コミット

commit c535ce8506ee82fd50623156cecf1ae551fa7228
Author: Brad Fitzpatrick <bradfitz@golang.org>
Date:   Fri Feb 28 14:17:33 2014 -0800

    doc: add more go1.3.txt items, sort.
    
    LGTM=r
    R=r
    CC=golang-codereviews
    https://golang.org/cl/70120044

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

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

元コミット内容

doc: add more go1.3.txt items, sort.

LGTM=r
R=r
CC=golang-codereviews
https://golang.org/cl/70120044

変更の背景

Go言語は継続的に開発が進められており、新しいバージョンがリリースされるたびに、そのバージョンで導入された変更点や新機能がドキュメントにまとめられます。go1.3.txtは、Go 1.3のリリースノートとして機能するファイルであり、開発者やユーザーが新しいバージョンで何が変わったのかを把握するための重要な情報源です。

このコミットの背景には、Go 1.3のリリースに向けて、開発中に実装された様々な機能追加や改善を公式ドキュメントに反映させる必要があったことが挙げられます。特に、Goの標準ライブラリは活発に開発されており、ネットワーク、暗号化、並行処理など多岐にわたる領域で機能強化が行われています。これらの変更を正確かつ網羅的にドキュメント化することで、ユーザーはGo 1.3の新しい機能を最大限に活用し、既存のコードを適切に移行できるようになります。また、項目のソートは、ドキュメントの可読性と検索性を向上させるための一般的なプラクティスです。

前提知識の解説

このコミットの変更内容を理解するためには、以下のGo言語および関連技術の基本的な知識が役立ちます。

  • Go言語のパッケージと標準ライブラリ: Go言語は、機能ごとにパッケージに分割されており、cmd/go(Goコマンドラインツール)、go/build(Goのビルドシステム)、crypto/tls(TLS/SSL実装)、net/http(HTTPクライアント/サーバー)、sync(並行処理プリミティブ)など、多岐にわたる標準ライブラリが提供されています。
  • Goコマンド: go rungo testなど、Goプログラムのビルド、実行、テストを行うためのコマンドラインツールです。
  • TLS/SSL: Transport Layer Security (TLS) および Secure Sockets Layer (SSL) は、インターネット上での安全な通信を可能にするための暗号化プロトコルです。crypto/tlsパッケージはGoにおけるTLSの実装を提供します。
  • X.509証明書とCSR: X.509は公開鍵証明書の標準フォーマットです。Certificate Signing Request (CSR) は、認証局 (CA) にデジタル証明書を要求する際に使用されるファイルフォーマットです。crypto/x509パッケージはこれらの操作をサポートします。
  • HTTPプロトコル: Hypertext Transfer Protocol (HTTP) は、Web上でデータを交換するためのプロトコルです。net/httpパッケージはGoにおけるHTTPクライアントおよびサーバーの実装を提供します。
  • TCP Keep-Alive: TCP接続がアイドル状態になったときに、接続がまだ有効であることを確認するために定期的にパケットを送信するメカニズムです。これにより、ネットワークの中断によって接続が切断されたことを早期に検出できます。
  • Goroutineと並行処理: Go言語の軽量なスレッドのようなもので、並行処理を容易にします。syncパッケージは、ミューテックスやWaitGroupなど、goroutine間の同期を助けるプリミティブを提供します。
  • sync.Pool: Go 1.3で導入された、一時的なオブジェクトを再利用するためのメカニズムです。ガベージコレクションの負荷を軽減し、パフォーマンスを向上させるのに役立ちます。
  • Unicode: 世界中の文字を統一的に扱うための文字コード標準です。GoのunicodeパッケージはUnicode関連の機能を提供します。
  • CL (Change List): Goプロジェクトでは、変更はChange List (CL) としてGerritに提出され、レビューを経てマージされます。コミットメッセージに記載されているCL番号は、その変更の元のレビューページへのリンクを示します。

技術的詳細

このコミットでgo1.3.txtに追加された主な変更点は以下の通りです。それぞれの項目は、Go 1.3における重要な機能強化や改善を示しています。

  1. cmd/go, go/build: support .m files (CL 60590044):

    • Goのビルドシステムが、Objective-Cソースファイル(.m拡張子)のサポートを追加しました。これは、GoとObjective-Cを組み合わせたプログラム(特にmacOSやiOSアプリケーション)をビルドする際に、Cgoを介してObjective-Cコードをよりシームレスに統合できるようにするためのものです。これにより、GoアプリケーションからCocoaフレームワークなどのObjective-CベースのAPIを呼び出すことが容易になります。
  2. cmd/go: add -exec to 'go run' and 'go test' (CL 68580043):

    • go runおよびgo testコマンドに-execフラグが追加されました。このフラグを使用すると、ビルドされた実行可能ファイルを直接実行する代わりに、指定された外部コマンドを介して実行できるようになります。これは、クロスコンパイル環境でのテストや、特定のサンドボックス環境で実行ファイルを起動する際に非常に有用です。例えば、QEMUのようなエミュレータを使ってARMボード上でテストを実行する場合などに利用できます。
  3. crypto/tls: ServerName or InsecureSkipVerify (CL 67010043):

    • crypto/tlsパッケージにおいて、TLSクライアントがサーバー証明書の検証を行う際に、ServerNameフィールドが設定されているか、またはInsecureSkipVerifytrueに設定されているかのいずれかが必要となりました。これは、TLS接続のセキュリティを強化するための変更であり、意図しない証明書検証のスキップを防ぎます。
  4. crypto/tls: add DialWithDialer (CL 68920045):

    • crypto/tlsパッケージにDialWithDialer関数が追加されました。この関数は、既存のnet.Dialerインスタンスを使用してTLS接続を確立することを可能にします。これにより、ネットワーク接続のタイムアウト、Keep-Alive設定、ローカルアドレスバインディングなど、より詳細なネットワークダイヤルオプションをTLS接続に適用できるようになります。
  5. crypto/tls: report TLS version in ConnectionState (CL 68250043):

    • crypto/tls.ConnectionState構造体に、確立されたTLS接続のバージョン(例: TLS 1.2)を報告するフィールドが追加されました。これにより、アプリケーションは現在使用されているTLSプロトコルのバージョンをプログラム的に確認できるようになり、セキュリティ監査やデバッグに役立ちます。
  6. crypto/x509: support CSRs (CL 49830048):

    • crypto/x509パッケージがCertificate Signing Request (CSR) の生成とパースをサポートするようになりました。これにより、Goアプリケーション内で直接CSRを作成し、認証局に送信してデジタル証明書を取得するプロセスを自動化できるようになります。
  7. liblink: pull linker i/o into separate liblink C library (CL 35790044):

    • リンカのI/O処理が、独立したCライブラリliblinkに分離されました。これは、リンカのコードベースのモジュール化と保守性の向上を目的とした内部的な変更です。
  8. misc/benchcmp: removed and replaced by go.tools/cmd/benchcmp (CL 47980043):

    • misc/benchcmpツールがGoのメインリポジトリから削除され、go.tools/cmd/benchcmpに移動しました。benchcmpはGoのベンチマーク結果を比較するためのツールです。この変更は、Goのツール群をより適切に整理し、メインのGoディストリビューションから独立して開発・配布できるようにするためのものです。
  9. misc/dist: renamed misc/makerelease (CL 39920043):

    • misc/distツールがmisc/makereleaseにリネームされました。これは、Goのリリースプロセスに関連するスクリプトの名称変更です。
  10. net/http: add Server.ErrorLog; log and test TLS handshake errors (CL 70250044):

    • net/http.Server構造体にErrorLogフィールドが追加されました。これにより、HTTPサーバーがエラー(特にTLSハンドシェイクエラー)を記録するために使用するカスタムロガーを指定できるようになります。これにより、サーバーのエラーハンドリングとデバッグの柔軟性が向上します。
  11. net/http: add Server.SetKeepAlivesEnabled (CL 69670043):

    • net/http.ServerSetKeepAlivesEnabledメソッドが追加されました。このメソッドは、HTTPサーバーがクライアントとの間でKeep-Alive接続を使用するかどうかを制御します。Keep-Alive接続は、複数のリクエスト/レスポンスを単一のTCP接続で処理することで、パフォーマンスを向上させます。
  12. net/http: add Transport.TLSHandshakeTimeout; set it by default (CL 68150045):

    • net/http.Transport構造体にTLSHandshakeTimeoutフィールドが追加され、デフォルト値が設定されました。これは、TLSハンドシェイクが完了するまでの最大時間を指定します。これにより、TLSハンドシェイクがハングアップするのを防ぎ、ネットワークの信頼性が低い環境でのクライアントの挙動を改善します。
  13. net/http: add optional Server.ConnState callback (CL 69260044):

    • net/http.ServerにオプションのConnStateコールバックが追加されました。このコールバックは、TCP接続の状態が変化したときに呼び出されます(例: 接続が確立された、アイドル状態になった、閉じられたなど)。これにより、サーバーは接続のライフサイクルをより詳細に監視し、リソース管理やロギングに活用できるようになります。
  14. net/http: use TCP Keep-Alives on DefaultTransport's connections (CL 68330046):

    • net/http.DefaultTransportが使用するTCP接続で、デフォルトでTCP Keep-Aliveが有効になりました。これにより、HTTPクライアントがサーバーとの接続を維持し、アイドル状態の接続が不必要に切断されるのを防ぎます。
  15. net/http: use TCP keep-alives for ListenAndServe and ListenAndServeTLS (CL 48300043):

    • net/http.ListenAndServeおよびnet/http.ListenAndServeTLS関数によって確立されるTCP接続でも、TCP Keep-Aliveが使用されるようになりました。これにより、HTTPサーバーとクライアント間の接続の安定性が向上します。
  16. net: add Dialer.KeepAlive option (CL 68380043):

    • net.Dialer構造体にKeepAliveオプションが追加されました。これにより、任意のTCP接続を確立する際に、TCP Keep-Aliveの期間を細かく制御できるようになります。
  17. os/exec: fix Command with relative paths (CL 59580044):

    • os/exec.Command関数が、相対パスで指定された実行可能ファイルを正しく処理するように修正されました。以前は、相対パスが期待通りに解決されない場合がありましたが、この修正により、より堅牢な外部コマンドの実行が可能になります。
  18. runtime/debug: add SetPanicOnFault (CL 66590044):

    • runtime/debugパッケージにSetPanicOnFault関数が追加されました。この関数は、メモリ保護違反(セグメンテーションフォールトなど)が発生した際に、Goランタイムがパニックを発生させるかどうかを制御します。デバッグ時に、特定のメモリ違反を即座に検出するために使用できます。
  19. runtime: output how long goroutines are blocked (CL 50420043):

    • Goランタイムが、goroutineがブロックされている時間をプロファイリング情報として出力するようになりました。これは、デッドロックやパフォーマンスボトルネックの診断に役立つ重要なデバッグ機能です。
  20. sync: add Pool (CL 41860043, 46010043):

    • syncパッケージにPool型が追加されました。sync.Poolは、一時的なオブジェクトを再利用するための同期プリミティブです。頻繁に生成・破棄されるオブジェクト(例: バイトスライス、バッファ)をプールすることで、ガベージコレクションの負荷を軽減し、アプリケーションのパフォーマンスを向上させることができます。これは、Go 1.3における最も重要な新機能の一つです。
  21. syscall: add NewCallbackCDecl to use for windows callbacks (CL 36180044):

    • Windows環境でのコールバック関数を扱うために、syscallパッケージにNewCallbackCDeclが追加されました。これは、GoとWindows API間の相互運用性を向上させるためのものです。
  22. testing: add b.RunParallel function (CL 57270043):

    • testingパッケージのb.RunParallel関数が追加されました。これにより、ベンチマークテストを並行して実行できるようになり、マルチコアプロセッサ上でのパフォーマンス測定の精度と効率が向上します。
  23. testing: diagnose buggy tests that panic(nil) (CL 55780043):

    • testingパッケージが、panic(nil)を呼び出すバグのあるテストを診断するようになりました。これは、テストの信頼性を向上させ、開発者がテストの誤った挙動を早期に発見できるようにするための改善です。
  24. unicode: upgrade from Unicode 6.2.0 to 6.3.0 (CL 65400044):

    • Goのunicodeパッケージが、Unicodeのバージョンを6.2.0から6.3.0にアップグレードしました。これにより、新しい文字、スクリプト、文字プロパティのサポートが追加され、Goがより広範な国際化要件に対応できるようになります。

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

このコミット自体は、Goのソースコードそのものを変更するものではなく、Go 1.3のリリースノートであるdoc/go1.3.txtファイルを変更しています。したがって、コアとなるコードの変更箇所は、doc/go1.3.txtファイルの内容の追加とソートになります。

--- a/doc/go1.3.txt
+++ b/doc/go1.3.txt
@@ -1,15 +1,25 @@
+cmd/go, go/build: support .m files (CL 60590044)
+cmd/go: add -exec to 'go run' and 'go test' (CL 68580043)
 cmd/gofmt: remove -tabwidth and -tabs flags (CL 52170043)
+crypto/tls: ServerName or InsecureSkipVerify (CL 67010043)
+crypto/tls: add DialWithDialer (CL 68920045)
+crypto/tls: report TLS version in ConnectionState (CL 68250043)
+crypto/x509: support CSRs (CL 49830048)
 liblink: pull linker i/o into separate liblink C library (CL 35790044)
+misc/benchcmp: removed and replaced by go.tools/cmd/benchcmp (CL 47980043)
 misc/dist: renamed misc/makerelease (CL 39920043)
+net/http: add Server.ErrorLog; log and test TLS handshake errors (CL 70250044)
+net/http: add Server.SetKeepAlivesEnabled (CL 69670043)
+net/http: add Transport.TLSHandshakeTimeout; set it by default (CL 68150045)
+net/http: add optional Server.ConnState callback (CL 69260044)
+net/http: use TCP Keep-Alives on DefaultTransport's connections (CL 68330046)
+net/http: use TCP keep-alives for ListenAndServe and ListenAndServeTLS (CL 48300043)
+net: add Dialer.KeepAlive option (CL 68380043)
+os/exec: fix Command with relative paths (CL 59580044)
+runtime/debug: add SetPanicOnFault (CL 66590044)
 runtime: output how long goroutines are blocked (CL 50420043)
+sync: add Pool (CL 41860043, 46010043)
 syscall: add NewCallbackCDecl to use for windows callbacks (CL 36180044)
-testing: diagnose buggy tests that panic(nil) (CL 55780043)
 testing: add b.RunParallel function (CL 57270043)
-misc/benchcmp: removed and replaced by go.tools/cmd/benchcmp (CL 47980043)
-cmd/go, go/build: support .m files (CL 60590044)
+testing: diagnose buggy tests that panic(nil) (CL 55780043)
 unicode: upgrade from Unicode 6.2.0 to 6.3.0 (CL 65400044)
-runtime/debug: add SetPanicOnFault (CL 66590044)
-crypto/tls: ServerName or InsecureSkipVerify (CL 67010043)
-crypto/tls: report TLS version in ConnectionState (CL 68250043)
-crypto/x509: support CSRs (CL 49830048)
-cmd/go: add -exec to 'go run' and 'go test' (CL 68580043)

コアとなるコードの解説

このコミットは、Go 1.3のリリースノートであるdoc/go1.3.txtを更新するものです。差分を見ると、主に以下の2種類の変更が行われています。

  1. 新規項目の追加: Go 1.3で導入された新しい機能や改善点に関する記述が多数追加されています。これらは、+で始まる行として示されており、各項目の末尾には関連するCL(Change List)番号が記載されています。例えば、sync: add Pool (CL 41860043, 46010043)は、sync.Poolの追加という重要な新機能を示しています。
  2. 項目のソートと整理: 既存の項目がアルファベット順にソートされ、より読みやすく、検索しやすいように整理されています。これは、-で始まる行で一度削除され、その後+で始まる行で適切な位置に再挿入されていることで確認できます。例えば、testing: diagnose buggy tests that panic(nil)は一度削除され、別の位置に再追加されています。

このコミット自体は機能的な変更をもたらすものではなく、Go 1.3の変更内容を正確に文書化し、そのドキュメントの品質(可読性、網羅性)を向上させるためのものです。これにより、Go 1.3へのアップグレードを検討している開発者や、Go 1.3の新機能について学びたいユーザーが、必要な情報を効率的に見つけられるようになります。

関連リンク

  • Go 1.3 Release Notes (公式ドキュメント): このコミットが更新しているドキュメントの最終版は、Goの公式ウェブサイトで公開されています。
  • GoのChange List (CL) システム (Gerrit): コミットメッセージに記載されているCL番号は、Gerrit上の個々の変更セットへのリンクです。

参考にした情報源リンク

  • Goの公式ドキュメント
  • Goのソースコードリポジトリ (GitHub)
  • Gerrit Code Review (GoプロジェクトのCLをホストしているプラットフォーム)
  • 各CLに関連する議論やコミットメッセージ
  • Go言語に関する技術ブログやフォーラム(各機能の詳細な解説を検索するために利用)
    • 特にsync.Poolについては、多くの解説記事が存在します。
    • cmd/go -execについても、クロスコンパイルやテストに関する記事が参考になります。
    • net/httpcrypto/tlsの変更点については、Goのネットワークプログラミングに関する情報源が役立ちます。