[インデックス 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)
とすることで、新しいバイトスライスにハッシュ値が格納されて返されます。
技術的詳細
このコミットがドキュメントとして反映している主要な技術的変更点は以下の二つです。
-
cmd/go
におけるテストカバレッジ機能の統合: Go 1.2では、go test
コマンドにテストカバレッジを計測する機能が直接組み込まれました。これにより、外部ツールを別途導入することなく、Goの標準ツールチェインだけでコードカバレッジの分析が可能になりました。開発者はgo test -coverprofile=coverage.out
のようにコマンドを実行することで、テスト実行時にカバレッジ情報をファイルに出力し、go tool cover -html=coverage.out
でHTML形式のレポートを生成してブラウザで視覚的に確認できるようになりました。この機能は、テストの網羅性を高め、コード品質を向上させる上で非常に有用です。この機能はCL 10413044
で導入されました。 -
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
パッケージにSum256
とSum224
関数が追加され、ハッシュ計算が簡素化されたことを示します。CL 10629043
がその実装コミットです。
-
crypto/sha512: Sum512 and Sum384 functions to simplify hashing (CL 10630043).
crypto/sha512
パッケージにSum512
とSum384
関数が追加され、ハッシュ計算が簡素化されたことを示します。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).