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

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

このコミットは、Go 1.2のリリースノートドキュメント(doc/go1.2.txt)を更新し、Go言語の重要な新機能に関する情報を追加するものです。具体的には、cmd/goツールにおけるテストカバレッジ機能の導入と、cryptoパッケージ群(md5, sha1, sha256, sha512)におけるハッシュSum関数の簡素化に関する記述が追加されています。

コミット

  • コミットハッシュ: 4f2278d4db7eaa732ff0bddea7c90e0e6526eb77
  • 作者: Rob Pike r@golang.org
  • 日付: 2013年6月27日 木曜日 09:20:02 -0700
  • コミットメッセージ:
    doc/go1.2.txt: cmd/go and coverage; simple hash Sum functions
    
    R=golang-dev, dave, rsc
    CC=golang-dev
    https://golang.org/cl/10631043
    

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

https://github.com/golang/go/commit/4f2278d4db7eaa732ff0bddea7c90e0e6526eb77

元コミット内容

--- a/doc/go1.2.txt
+++ b/doc/go1.2.txt
@@ -10,7 +10,12 @@ Please keep the list sorted (as in sort.Strings of the lines).
 
 cmd/5a: removed support for R9/R10 (use m/g instead) (CL 9840043).
 cmd/cgo, cmd/go: support including C++ code with cgo (CL 8248043).
+cmd/go: test coverage (CL 10413044).
 
+crypto/md5: Sum function to simplify hashing (CL10624044).
+crypto/sha1: Sum function to simplify hashing (CL 10571043).
+crypto/sha256: Sum256 and Sum224 functions to simplify hashing (CL 10629043).
+crypto/sha512: Sum512 and Sum384 functions to simplify hashing (CL 10630043).
 crypto/tls: add support for TLS 1.1. (CL 7872043).
 fmt: indexed access to arguments in Printf etc. (CL 9680043).
 go/build: support including C++ code with cgo (CL 8248043).

変更の背景

Go 1.2のリリースが近づく中で、開発チームは新しく導入された重要な機能群を公式のリリースノートに正確に反映させる必要がありました。このコミットは、特にcmd/goツールに統合されたテストカバレッジ機能と、cryptoパッケージにおけるハッシュ計算を簡素化するSum関数の追加という二つの主要な改善点を、ユーザーが参照するリリースノートに明記することを目的としています。これにより、Go 1.2の新機能が広く認知され、開発者がこれらの機能を効果的に活用できるようになります。

前提知識の解説

  • Go言語のリリースノート (doc/go1.2.txt): Go言語は、各メジャーバージョンアップごとに、そのバージョンで導入された新機能、変更点、非推奨となった機能などをまとめたリリースノートを公開しています。doc/go1.2.txtは、Go 1.2の公式リリースノートの草稿または最終版の一部であり、ユーザーがGoの新しいバージョンで何が変更されたかを理解するための主要な情報源となります。
  • cmd/goツール: Go言語の公式ツールチェインの中核をなすコマンドラインツールです。ソースコードのコンパイル、パッケージの管理、テストの実行、ドキュメントの生成など、Go開発における多岐にわたるタスクを担います。
  • テストカバレッジ (Test Coverage): ソフトウェアテストの品質を測る指標の一つで、テストスイートがソースコードのどの程度の割合を実行したかを示します。カバレッジが高いほど、コードの多くの部分がテストによって検証されていることを意味し、潜在的なバグの発見に役立ちます。Go言語では、go test -coverコマンドを使用することで、テストカバレッジを計測できます。
  • 暗号学的ハッシュ関数: 任意の長さの入力データから、固定長の短いハッシュ値(メッセージダイジェスト)を生成する一方向関数です。入力データが少しでも変更されると、出力されるハッシュ値は大きく変化するため、データの完全性検証、デジタル署名、パスワードの保存などに広く利用されます。
    • MD5 (Message Digest Algorithm 5): 128ビットのハッシュ値を生成するハッシュ関数。現在ではセキュリティ上の脆弱性が指摘されており、新たな用途での使用は推奨されません。
    • SHA-1 (Secure Hash Algorithm 1): 160ビットのハッシュ値を生成するハッシュ関数。MD5と同様に、衝突攻撃の可能性が指摘されており、セキュリティが重要な場面では推奨されません。
    • SHA-2 (Secure Hash Algorithm 2): SHA-256、SHA-384、SHA-512など複数のバリエーションを持つハッシュ関数群。SHA-256は256ビット、SHA-512は512ビットのハッシュ値を生成します。これらは現在でも広く安全と見なされています。
  • Goのcryptoパッケージ: Go標準ライブラリには、暗号学的操作をサポートするための豊富なパッケージ群がcryptoディレクトリ以下に提供されています。これには、ハッシュ関数(crypto/md5, crypto/sha1, crypto/sha256, crypto/sha512)、暗号化アルゴリズム、TLS/SSLなどが含まれます。
  • hash.HashインターフェースとSumメソッド: Go言語のhashパッケージで定義されているHashインターフェースは、ハッシュ関数が実装すべき共通の振る舞いを定義しています。通常、ハッシュ計算を行うには、New()関数でHashインターフェースを実装したオブジェクトを生成し、Write()メソッドでデータを入力し、最後にSum([]byte) []byteメソッドを呼び出して最終的なハッシュ値を取得します。Sum(nil)とすることで、新しいバイトスライスにハッシュ値が格納されて返されます。

技術的詳細

このコミットがドキュメントとして反映している主要な技術的変更点は以下の二つです。

  1. cmd/goにおけるテストカバレッジ機能の統合: Go 1.2では、go testコマンドにテストカバレッジを計測する機能が直接組み込まれました。これにより、外部ツールを別途導入することなく、Goの標準ツールチェインだけでコードカバレッジの分析が可能になりました。開発者はgo test -coverprofile=coverage.outのようにコマンドを実行することで、テスト実行時にカバレッジ情報をファイルに出力し、go tool cover -html=coverage.outでHTML形式のレポートを生成してブラウザで視覚的に確認できるようになりました。この機能は、テストの網羅性を高め、コード品質を向上させる上で非常に有用です。この機能はCL 10413044で導入されました。

  2. cryptoパッケージにおけるハッシュSum関数の簡素化: Goのcryptoパッケージ群(crypto/md5, crypto/sha1, crypto/sha256, crypto/sha512)に、ハッシュ計算をより簡潔に行うためのSum関数が直接追加されました。これ以前は、ハッシュ計算を行うには、まずNew()関数でハッシュオブジェクトを生成し、Write()メソッドでデータを渡し、最後にSum(nil)を呼び出すという複数ステップが必要でした。新しいSum関数(例: md5.Sum(data []byte) [md5.Size]byte)の導入により、ワンショットでハッシュ値を計算したい場合に、より直感的で簡潔なAPIが提供されるようになりました。

    • crypto/md5: Sum関数 (CL 10624044)
    • crypto/sha1: Sum関数 (CL 10571043)
    • crypto/sha256: Sum256およびSum224関数 (CL 10629043)
    • crypto/sha512: Sum512およびSum384関数 (CL 10630043) これらの変更は、Goの標準ライブラリの使いやすさを向上させ、開発者がより効率的に暗号学的操作を実装できるようにすることを目的としています。

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

このコミット自体は、Go言語のソースコードではなく、Go 1.2のリリースノートを記述したテキストファイルdoc/go1.2.txtに対して行われた変更です。具体的には、以下の5行が追加されています。

--- a/doc/go1.2.txt
+++ b/doc/go1.2.txt
@@ -10,7 +10,12 @@ Please keep the list sorted (as in sort.Strings of the lines).
 
 cmd/5a: removed support for R9/R10 (use m/g instead) (CL 9840043).
 cmd/cgo, cmd/go: support including C++ code with cgo (CL 8248043).
+cmd/go: test coverage (CL 10413044).
 
+crypto/md5: Sum function to simplify hashing (CL10624044).
+crypto/sha1: Sum function to simplify hashing (CL 10571043).
+crypto/sha256: Sum256 and Sum224 functions to simplify hashing (CL 10629043).
+crypto/sha512: Sum512 and Sum384 functions to simplify hashing (CL 10630043).
 crypto/tls: add support for TLS 1.1. (CL 7872043).
 fmt: indexed access to arguments in Printf etc. (CL 9680043).
 go/build: support including C++ code with cgo (CL 8248043).

コアとなるコードの解説

追加された各行は、Go 1.2で導入された新機能とその関連する変更リスト(CL: Change List)番号を簡潔に記述しています。

  • cmd/go: test coverage (CL 10413044).

    • この行は、cmd/goツールにテストカバレッジ機能が追加されたことを示しています。括弧内のCL 10413044は、この機能の実装を含む変更リストの識別子です。これにより、ユーザーはGo 1.2から標準でテストカバレッジを計測できるようになったことを知ることができます。
  • crypto/md5: Sum function to simplify hashing (CL10624044).

    • crypto/md5パッケージにSum関数が追加され、ハッシュ計算が簡素化されたことを示します。CL10624044がその実装コミットです。
  • crypto/sha1: Sum function to simplify hashing (CL 10571043).

    • crypto/sha1パッケージにSum関数が追加され、ハッシュ計算が簡素化されたことを示します。CL 10571043がその実装コミットです。
  • crypto/sha256: Sum256 and Sum224 functions to simplify hashing (CL 10629043).

    • crypto/sha256パッケージにSum256Sum224関数が追加され、ハッシュ計算が簡素化されたことを示します。CL 10629043がその実装コミットです。
  • crypto/sha512: Sum512 and Sum384 functions to simplify hashing (CL 10630043).

    • crypto/sha512パッケージにSum512Sum384関数が追加され、ハッシュ計算が簡素化されたことを示します。CL 10630043がその実装コミットです。

これらの記述は、Go 1.2の公式リリースノートの一部として、新機能の概要と、より詳細な情報を見つけるための参照(CL番号)を提供することで、Goユーザーが新しいバージョンへの移行や新機能の活用をスムーズに行えるようにしています。

関連リンク

  • Go 1.2 Release Notes (公式ドキュメント): Go 1.2の公式リリースノートは、このコミットが更新しているdoc/go1.2.txtの内容を基に公開されます。Goの公式ウェブサイトで「Go 1.2 Release Notes」と検索することで、完全なリリースノートを参照できます。
  • Go Test Coverage (公式ドキュメント): Goのテストカバレッジ機能に関する詳細なドキュメントやチュートリアルは、Goの公式ブログやドキュメントサイトで提供されています。「Go test coverage」で検索することで、利用方法や詳細な挙動について学ぶことができます。
  • Go crypto/hash package documentation: Goのhashパッケージのドキュメントは、hash.Hashインターフェースや、ハッシュ関数の一般的な使い方について説明しています。 https://pkg.go.dev/hash
  • Go crypto/md5 package documentation: https://pkg.go.dev/crypto/md5
  • Go crypto/sha1 package documentation: https://pkg.go.dev/crypto/sha1
  • Go crypto/sha256 package documentation: https://pkg.go.dev/crypto/sha256
  • Go crypto/sha512 package documentation: https://pkg.go.dev/crypto/sha512

参考にした情報源リンク

  • Go 1.2 Release Notes (go.dev): https://go.dev/doc/go1.2
  • Go Test Coverage Documentation (go.dev): https://go.dev/blog/cover
  • Google Search results for various CLs (Change Lists) mentioned in the commit message.
    • CL 10631043 golang
    • CL 10413044 golang
    • CL 10624044 golang
    • CL 10571043 golang
    • CL 10629043 golang
    • CL 10630043 golang
  • Go crypto package Sum function explanations (various blogs and Stack Overflow discussions).