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

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

このコミットは、Go言語のリポジトリにおける週次スナップショットの更新を記録したものです。具体的には、doc/devel/weekly.html ファイルに2011年12月2日版の週次更新情報が追加され、同時に.hgtagsファイルから古い週次タグのエントリが削除されています。この更新情報には、hashパッケージの変更、gofixによる既存コードの自動修正、およびcrypto/tlsexp/sshostext/templatego/docなどの様々なパッケージにおけるその他の変更点がまとめられています。

コミット

  • コミットハッシュ: 7af813a7f2b62734e40628c341cb3afa4c85641c
  • 作者: Andrew Gerrand adg@golang.org
  • コミット日時: Fri Dec 2 08:09:49 2011 +1100
  • コミットメッセージ:
    weekly.2011-12-02
    
    R=golang-dev, rsc
    CC=golang-dev
    https://golang.org/cl/5447067
    

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

https://github.com/golang/go/commit/7af813a7f2b62734e40628c341cb3afa4c85641c

元コミット内容

weekly.2011-12-02

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5447067

変更の背景

このコミットは、Go言語の開発プロセスにおける定期的な「週次スナップショット」のリリースに伴うものです。Go言語は当時、活発に開発が進められており、毎週のように新しい機能の追加、バグ修正、APIの変更が行われていました。これらの変更をユーザーや開発者に伝えるために、doc/devel/weekly.htmlというドキュメントが作成され、最新の変更点がまとめられていました。

このコミットの目的は、2011年12月2日時点でのGo言語の主要な変更点を公式ドキュメントに反映させることです。特に、hashパッケージのAPI変更は既存のコードに影響を与える可能性があったため、その変更内容とgofixツールによる自動修正の可能性が明記されています。また、.hgtagsファイルはMercurialリポジトリにおけるタグ管理に使用されており、過去の週次スナップショットのタグが記録されていました。新しいスナップショットのリリースに伴い、古いまたは冗長なタグエントリが整理されたと考えられます。

前提知識の解説

  • 週次スナップショット (Weekly Snapshot): Go言語の初期開発段階において、安定版リリースとは別に、開発の進捗を定期的に公開していたバージョンです。これにより、開発者は最新の変更を試すことができ、フィードバックを早期に提供することが可能でした。
  • hashパッケージ: Go言語の標準ライブラリの一部で、ハッシュ関数(例: MD5, SHA-1, SHA-256)を提供するパッケージです。データの整合性チェックや暗号化など、様々な用途で利用されます。
  • hash.Hasherインターフェース: hashパッケージで定義されているインターフェースで、ハッシュ計算を行うオブジェクトが実装すべきメソッド(Write, Sum, Reset, Size, BlockSizeなど)を定めています。
  • Sumメソッド: hash.Hasherインターフェースの一部で、ハッシュ計算の結果をバイトスライスとして返すメソッドです。このコミットでは、このメソッドのシグネチャが変更されています。
  • gofix: Go言語のツールの一つで、GoのAPI変更に伴う既存コードの自動修正を行うためのコマンドラインツールです。Go言語の進化の過程で、後方互換性を保ちつつAPIを変更するために重要な役割を果たしました。gofixは、特定のパターンに合致するコードを自動的に新しいAPIに書き換えることができます。
  • crypto/tlsパッケージ: Go言語の標準ライブラリの一部で、TLS (Transport Layer Security) プロトコルを実装するためのパッケージです。セキュアなネットワーク通信を実現するために使用されます。
  • exp/sshパッケージ: Go言語の実験的なパッケージで、SSH (Secure Shell) プロトコルを実装するためのものです。このコミット時点ではexp(experimental)ディレクトリにあり、まだ安定版ではありませんでした。
  • os.FileInfo: osパッケージで定義されているインターフェースで、ファイルやディレクトリのメタデータ(名前、サイズ、パーミッション、更新日時など)にアクセスするためのメソッドを提供します。
  • text/templateパッケージ: Go言語の標準ライブラリの一部で、テキストベースのテンプレートを生成するためのパッケージです。HTML、XML、プレーンテキストなどの動的なコンテンツ生成に利用されます。
  • go/docパッケージ: Go言語の標準ライブラリの一部で、Goのソースコードからドキュメンテーションを生成するためのパッケージです。Goの公式ドキュメントサイトやgo docコマンドなどで利用されています。
  • Mercurial (hg): Go言語の初期開発において、バージョン管理システムとして使用されていた分散型バージョン管理システムです。Gitに移行する前は、Goの公式リポジトリはMercurialで管理されていました。
    • hg pull: リモートリポジトリから変更をローカルリポジトリに取得するコマンド。
    • hg update: ローカルリポジトリの作業コピーを指定したリビジョンに更新するコマンド。
  • .hgtags: Mercurialリポジトリにおいて、タグ(特定のコミットに付けられた名前)を管理するためのファイルです。

技術的詳細

このコミットの主要な技術的変更点は、hashパッケージのHasherインターフェースにおけるSumメソッドのシグネチャ変更です。

hash.HasherSumメソッドの変更: 以前のSumメソッドは引数を取らなかった可能性がありますが、この変更により[]byte型の引数を受け取るようになりました。

// 変更前 (推測)
Sum() []byte

// 変更後
Sum([]byte) []byte

この変更の意図は、ハッシュ計算の結果を特定のバイトスライスに追加できるようにすることです。これにより、ユーザーはHasherにデータをWriteすることなく、任意のバイトスライスに対してハッシュを計算し、その結果を既存のバイトスライスに追記できるようになります。コミットメッセージにある「Existing code that uses Sum can pass nil as the argument.」という記述は、既存のコードがこの変更によって壊れないように、nilを引数として渡すことで以前の挙動をエミュレートできることを示唆しています。

gofixによる自動修正: hash.HasherSumメソッドのシグネチャ変更は、既存のGoコードに影響を与える可能性がありました。しかし、gofixツールがこの変更を自動的に検出し、既存のSum()呼び出しをSum(nil)に書き換えることで、開発者が手動でコードを修正する手間を省くことができました。これは、Go言語がAPIの進化と後方互換性の維持を両立させるために採用していた重要な戦略の一つです。

その他の変更点: コミットメッセージには、上記以外にも複数のパッケージにおける変更点がリストアップされています。これらは、Go言語の様々な側面における継続的な改善を示しています。

  • crypto/tls: Windows環境での証明書読み込みに関するクリーンアップ。プラットフォーム固有のバグ修正や改善が行われたことを示唆しています。
  • exp/ssh: SessionStd{in,out,err}Pipeメソッドが追加されました。これにより、SSHセッションの標準入出力エラーをパイプとして扱うことが可能になり、より柔軟なプログラム間通信が実現できます。
  • dashboard: ビルダー名が異常な場合でもダッシュボードがクラッシュしないように修正されました。これは、GoのビルドシステムやCI/CDパイプラインに関連する改善です。
  • exp/ssh: type signalSignalにエクスポートされました。これにより、SSH関連のシグナル処理がより明確になり、外部から利用しやすくなったと考えられます。
  • os: ModeType定数が追加され、ファイルタイプビットをマスクするために使用されます。これは、ファイルパーミッションとファイルタイプをより正確に区別するための改善です。
  • text/template: AddメソッドがAddParseTreeに置き換えられました。これは、テンプレートのパースツリーの管理方法に関する内部的な変更であり、より堅牢なテンプレート処理を目指したものです。
  • go/doc: 見出しを検出し、HTMLでフォーマットする機能が追加されました。これにより、go docコマンドやGoの公式ドキュメントサイトで生成されるドキュメントの可読性が向上しました。

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

このコミットでは、主に以下の2つのファイルが変更されています。

  1. .hgtags:

    --- a/.hgtags
    +++ b/.hgtags
    @@ -96,4 +96,3 @@ f4397ad6e87c7ce5feac9b01686f1ebd6cbaac4e weekly.2011-11-08
     2f4482b89a6b5956828872137b6b96636cd904d3 weekly.2011-11-09
     b4a91b6933748db1a7150c06a1b55ad506e52906 weekly.2011-11-18
     80db2da6495a20ddff8305c236825811db8c8665 weekly.2011-12-01
    -80db2da6495a20ddff8305c236825811db8c8665 weekly
    

    この変更では、80db2da6495a20ddff8305c236825811db8c8665 weeklyという行が削除されています。これは、おそらく古いまたは一時的なweeklyタグのエントリが整理されたものと考えられます。

  2. doc/devel/weekly.html:

    --- a/doc/devel/weekly.html
    +++ b/doc/devel/weekly.html
    @@ -14,6 +14,27 @@ hg pull
     hg update weekly.<i>YYYY-MM-DD</i>
     </pre>
    
    +<h2 id="2011-12-02">2011-12-02</h2>
    +
    +<pre>
    +This weekly snapshot includes changes to the hash package and a gofix for the
    +time and os.FileInfo changes in the last snapshot.
    +
    +The hash.Hasher's Sum method has been given a []byte argument, permitting
    +the user to hash an arbitrary byte slice without Writing to the Hasher.
    +Existing code that uses Sum can pass nil as the argument.
    +Gofix will make this change automatically.
    +
    +Other changes:
    +* crypto/tls: cleanup certificate load on windows (thanks Alex Brainman).
    +* exp/ssh: add Std{in,out,err}Pipe methods to Session (thanks Dave Cheney).
    +* dashboard: don't choke on weird builder names.
    +* exp/ssh: export type signal, now Signal (thanks Gustav Paul).
    +* os: add ModeType constant to mask file type bits (thanks Gustavo Niemeyer).
    +* text/template: replace Add with AddParseTree.
    +* go/doc: detect headings and format them in html (thanks Volker Dobler).
    +</pre>
    +
     <h2 id="2011-12-01">2011-12-01</h2>
    
     <pre>
    

    この変更では、2011-12-02の週次スナップショットに関する新しいセクションが追加されています。このセクションには、hashパッケージのSumメソッドの変更とgofixによる自動修正に関する説明、およびその他の主要な変更点(crypto/tls, exp/ssh, dashboard, os, text/template, go/doc)が箇条書きでまとめられています。

コアとなるコードの解説

  • .hgtagsの変更: このファイルはMercurialのタグ情報を保持しており、weeklyというタグが特定のコミットハッシュ80db2da6495a20ddff8305c236825811db8c8665を指していました。この行が削除されたのは、おそらくこのweeklyタグが一時的なものであったか、または新しい週次スナップショットのリリースに伴い、より具体的な日付タグ(例: weekly.2011-12-02)に置き換えられたためと考えられます。MercurialからGitへの移行前は、このようなタグ管理が頻繁に行われていました。

  • doc/devel/weekly.htmlの変更: このファイルは、Go言語の週次開発スナップショットのリリースノートをまとめたHTMLドキュメントです。追加されたセクションは、2011年12月2日のスナップショットに含まれる主要な変更点を開発者やユーザーに伝えるためのものです。

    • hashパッケージのSumメソッドの変更: この変更は、ハッシュ計算の柔軟性を高めるためのAPI改善です。Sum([]byte)という新しいシグネチャにより、ハッシュ結果を既存のバイトスライスに追記できるようになりました。これは、メモリ割り当てを最適化したり、複数のハッシュ計算結果を効率的に結合したりする際に役立ちます。gofixによる自動修正の言及は、Go開発チームがAPI変更による既存コードへの影響を最小限に抑える努力をしていたことを示しています。
    • その他の変更点: リストアップされた各項目は、Go言語の様々なサブシステムにおける具体的な改善やバグ修正を示しています。例えば、crypto/tlsのWindowsでの証明書読み込みの修正は、クロスプラットフォーム互換性の向上を意味します。exp/sshStd{in,out,err}Pipeメソッドの追加は、SSHクライアントの機能強化を示しています。go/docの見出し検出とHTMLフォーマットの改善は、Goのドキュメンテーションシステムの品質向上に貢献しています。

これらの変更は、Go言語が初期段階でいかに活発に開発され、APIの改善、バグ修正、新機能の追加が継続的に行われていたかを示しています。また、gofixのようなツールの存在は、言語の進化と既存コードの互換性維持のバランスを取るためのGo開発チームの取り組みを象徴しています。

関連リンク

参考にした情報源リンク

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

このコミットは、Go言語のリポジトリにおける週次スナップショットの更新を記録したものです。具体的には、doc/devel/weekly.html ファイルに2011年12月2日版の週次更新情報が追加され、同時に.hgtagsファイルから古い週次タグのエントリが削除されています。この更新情報には、hashパッケージの変更、gofixによる既存コードの自動修正、およびcrypto/tlsexp/sshostext/templatego/docなどの様々なパッケージにおけるその他の変更点がまとめられています。

コミット

  • コミットハッシュ: 7af813a7f2b62734e40628c341cb3afa4c85641c
  • 作者: Andrew Gerrand adg@golang.org
  • コミット日時: Fri Dec 2 08:09:49 2011 +1100
  • コミットメッセージ:
    weekly.2011-12-02
    
    R=golang-dev, rsc
    CC=golang-dev
    https://golang.org/cl/5447067
    

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

https://github.com/golang/go/commit/7af813a7f2b62734e40628c341cb3afa4c85641c

元コミット内容

weekly.2011-12-02

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5447067

変更の背景

このコミットは、Go言語の開発プロセスにおける定期的な「週次スナップショット」のリリースに伴うものです。Go言語は当時、活発に開発が進められており、毎週のように新しい機能の追加、バグ修正、APIの変更が行われていました。これらの変更をユーザーや開発者に伝えるために、doc/devel/weekly.htmlというドキュメントが作成され、最新の変更点がまとめられていました。

このコミットの目的は、2011年12月2日時点でのGo言語の主要な変更点を公式ドキュメントに反映させることです。特に、hashパッケージのAPI変更は既存のコードに影響を与える可能性があったため、その変更内容とgofixツールによる自動修正の可能性が明記されています。また、.hgtagsファイルはMercurialリポジトリにおけるタグ管理に使用されており、過去の週次スナップショットのタグが記録されていました。新しいスナップショットのリリースに伴い、古いまたは冗長なタグエントリが整理されたと考えられます。

前提知識の解説

  • 週次スナップショット (Weekly Snapshot): Go言語の初期開発段階において、安定版リリースとは別に、開発の進捗を定期的に公開していたバージョンです。これにより、開発者は最新の変更を試すことができ、フィードバックを早期に提供することが可能でした。
  • hashパッケージ: Go言語の標準ライブラリの一部で、ハッシュ関数(例: MD5, SHA-1, SHA-256)を提供するパッケージです。データの整合性チェックや暗号化など、様々な用途で利用されます。
  • hash.Hasherインターフェース: hashパッケージで定義されているインターフェースで、ハッシュ計算を行うオブジェクトが実装すべきメソッド(Write, Sum, Reset, Size, BlockSizeなど)を定めています。
  • Sumメソッド: hash.Hasherインターフェースの一部で、ハッシュ計算の結果をバイトスライスとして返すメソッドです。このコミットでは、このメソッドのシグネチャが変更されています。
  • gofix: Go言語のツールの一つで、GoのAPI変更に伴う既存コードの自動修正を行うためのコマンドラインツールです。Go言語の進化の過程で、後方互換性を保ちつつAPIを変更するために重要な役割を果たしました。gofixは、特定のパターンに合致するコードを自動的に新しいAPIに書き換えることができます。
  • crypto/tlsパッケージ: Go言語の標準ライブラリの一部で、TLS (Transport Layer Security) プロトコルを実装するためのパッケージです。セキュアなネットワーク通信を実現するために使用されます。
  • exp/sshパッケージ: Go言語の実験的なパッケージで、SSH (Secure Shell) プロトコルを実装するためのものです。このコミット時点ではexp(experimental)ディレクトリにあり、まだ安定版ではありませんでした。
  • os.FileInfo: osパッケージで定義されているインターフェースで、ファイルやディレクトリのメタデータ(名前、サイズ、パーミッション、更新日時など)にアクセスするためのメソッドを提供します。
  • text/templateパッケージ: Go言語の標準ライブラリの一部で、テキストベースのテンプレートを生成するためのパッケージです。HTML、XML、プレーンテキストなどの動的なコンテンツ生成に利用されます。
  • go/docパッケージ: Go言語の標準ライブラリの一部で、Goのソースコードからドキュメンテーションを生成するためのパッケージです。Goの公式ドキュメントサイトやgo docコマンドなどで利用されています。
  • Mercurial (hg): Go言語の初期開発において、バージョン管理システムとして使用されていた分散型バージョン管理システムです。Gitに移行する前は、Goの公式リポジトリはMercurialで管理されていました。
    • hg pull: リモートリポジトリから変更をローカルリポジトリに取得するコマンド。
    • hg update: ローカルリポジトリの作業コピーを指定したリビジョンに更新するコマンド。
  • .hgtags: Mercurialリポジトリにおいて、タグ(特定のコミットに付けられた名前)を管理するためのファイルです。

技術的詳細

このコミットの主要な技術的変更点は、hashパッケージのHasherインターフェースにおけるSumメソッドのシグネチャ変更です。

hash.HasherSumメソッドの変更: 以前のSumメソッドは引数を取らなかった可能性がありますが、この変更により[]byte型の引数を受け取るようになりました。

// 変更前 (推測)
Sum() []byte

// 変更後
Sum([]byte) []byte

この変更の意図は、ハッシュ計算の結果を特定のバイトスライスに追加できるようにすることです。これにより、ユーザーはHasherにデータをWriteすることなく、任意のバイトスライスに対してハッシュを計算し、その結果を既存のバイトスライスに追記できるようになります。コミットメッセージにある「Existing code that uses Sum can pass nil as the argument.」という記述は、既存のコードがこの変更によって壊れないように、nilを引数として渡すことで以前の挙動をエミュレートできることを示唆しています。

gofixによる自動修正: hash.HasherSumメソッドのシグネチャ変更は、既存のGoコードに影響を与える可能性がありました。しかし、gofixツールがこの変更を自動的に検出し、既存のSum()呼び出しをSum(nil)に書き換えることで、開発者が手動でコードを修正する手間を省くことができました。これは、Go言語がAPIの進化と後方互換性の維持を両立させるために採用していた重要な戦略の一つです。

その他の変更点: コミットメッセージには、上記以外にも複数のパッケージにおける変更点がリストアップされています。これらは、Go言語の様々な側面における継続的な改善を示しています。

  • crypto/tls: Windows環境での証明書読み込みに関するクリーンアップ。プラットフォーム固有のバグ修正や改善が行われたことを示唆しています。
  • exp/ssh: SessionStd{in,out,err}Pipeメソッドが追加されました。これにより、SSHセッションの標準入出力エラーをパイプとして扱うことが可能になり、より柔軟なプログラム間通信が実現できます。
  • dashboard: ビルダー名が異常な場合でもダッシュボードがクラッシュしないように修正されました。これは、GoのビルドシステムやCI/CDパイプラインに関連する改善です。
  • exp/ssh: type signalSignalにエクスポートされました。これにより、SSH関連のシグナル処理がより明確になり、外部から利用しやすくなったと考えられます。
  • os: ModeType定数が追加され、ファイルタイプビットをマスクするために使用されます。これは、ファイルパーミッションとファイルタイプをより正確に区別するための改善です。
  • text/template: AddメソッドがAddParseTreeに置き換えられました。これは、テンプレートのパースツリーの管理方法に関する内部的な変更であり、より堅牢なテンプレート処理を目指したものです。
  • go/doc: 見出しを検出し、HTMLでフォーマットする機能が追加されました。これにより、go docコマンドやGoの公式ドキュメントサイトで生成されるドキュメントの可読性が向上しました。

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

このコミットでは、主に以下の2つのファイルが変更されています。

  1. .hgtags:

    --- a/.hgtags
    +++ b/.hgtags
    @@ -96,4 +96,3 @@ f4397ad6e87c7ce5feac9b01686f1ebd6cbaac4e weekly.2011-11-08
     2f4482b89a6b5956828872137b6b96636cd904d3 weekly.2011-11-09
     b4a91b6933748db1a7150c06a1b55ad506e52906 weekly.2011-11-18
     80db2da6495a20ddff8305c236825811db8c8665 weekly.2011-12-01
    -80db2da6495a20ddff8305c236825811db8c8665 weekly
    

    この変更では、80db2da6495a20ddff8305c236825811db8c8665 weeklyという行が削除されています。これは、おそらく古いまたは一時的なweeklyタグのエントリが整理されたものと考えられます。

  2. doc/devel/weekly.html:

    --- a/doc/devel/weekly.html
    +++ b/doc/devel/weekly.html
    @@ -14,6 +14,27 @@ hg pull
     hg update weekly.<i>YYYY-MM-DD</i>
     </pre>
    
    +<h2 id="2011-12-02">2011-12-02</h2>
    +
    +<pre>
    +This weekly snapshot includes changes to the hash package and a gofix for the
    +time and os.FileInfo changes in the last snapshot.
    +
    +The hash.Hasher's Sum method has been given a []byte argument, permitting
    +the user to hash an arbitrary byte slice without Writing to the Hasher.
    +Existing code that uses Sum can pass nil as the argument.
    +Gofix will make this change automatically.
    +
    +Other changes:
    +* crypto/tls: cleanup certificate load on windows (thanks Alex Brainman).
    +* exp/ssh: add Std{in,out,err}Pipe methods to Session (thanks Dave Cheney).
    +* dashboard: don't choke on weird builder names.
    +* exp/ssh: export type signal, now Signal (thanks Gustav Paul).
    +* os: add ModeType constant to mask file type bits (thanks Gustavo Niemeyer).
    +* text/template: replace Add with AddParseTree.
    +* go/doc: detect headings and format them in html (thanks Volker Dobler).
    +</pre>
    +
     <h2 id="2011-12-01">2011-12-01</h2>
    
     <pre>
    

    この変更では、2011-12-02の週次スナップショットに関する新しいセクションが追加されています。このセクションには、hashパッケージのSumメソッドの変更とgofixによる自動修正に関する説明、およびその他の主要な変更点(crypto/tls, exp/ssh, dashboard, os, text/template, go/doc)が箇条書きでまとめられています。

コアとなるコードの解説

  • .hgtagsの変更: このファイルはMercurialのタグ情報を保持しており、weeklyというタグが特定のコミットハッシュ80db2da6495a20ddff8305c236825811db8c8665を指していました。この行が削除されたのは、おそらく古いまたは一時的なweeklyタグのエントリが整理されたものと考えられます。MercurialからGitへの移行前は、このようなタグ管理が頻繁に行われていました。

  • doc/devel/weekly.htmlの変更: このファイルは、Go言語の週次開発スナップショットのリリースノートをまとめたHTMLドキュメントです。追加されたセクションは、2011年12月2日のスナップショットに含まれる主要な変更点を開発者やユーザーに伝えるためのものです。

    • hashパッケージのSumメソッドの変更: この変更は、ハッシュ計算の柔軟性を高めるためのAPI改善です。Sum([]byte)という新しいシグネチャにより、ハッシュ結果を既存のバイトスライスに追記できるようになりました。これは、メモリ割り当てを最適化したり、複数のハッシュ計算結果を効率的に結合したりする際に役立ちます。gofixによる自動修正の言及は、Go開発チームがAPI変更による既存コードへの影響を最小限に抑える努力をしていたことを示しています。
    • その他の変更点: リストアップされた各項目は、Go言語の様々なサブシステムにおける具体的な改善やバグ修正を示しています。例えば、crypto/tlsのWindowsでの証明書読み込みの修正は、クロスプラットフォーム互換性の向上を意味します。exp/sshStd{in,out,err}Pipeメソッドの追加は、SSHクライアントの機能強化を示しています。go/docの見出し検出とHTMLフォーマットの改善は、Goのドキュメンテーションシステムの品質向上に貢献しています。

これらの変更は、Go言語が初期段階でいかに活発に開発され、APIの改善、バグ修正、新機能の追加が継続的に行われていたかを示しています。また、gofixのようなツールの存在は、言語の進化と既存コードの互換性維持のバランスを取るためのGo開発チームの取り組みを象徴しています。

関連リンク

参考にした情報源リンク