[インデックス 17570] ファイルの概要
このコミットは、doc/go1.2.html
ファイルに対する変更です。このファイルは、Go 1.2 リリースに関するドキュメントの一部であり、特に gccgo
の Go 1.2 サポート状況について記述を更新しています。
コミット
commit c0ac667531afaab0658461ea21b0d39b39aec227
Author: Rob Pike <r@golang.org>
Date: Thu Sep 12 10:12:26 2013 +1000
doc/go1.2.html: status of gccgo's support for 1.2
R=iant, minux.ma
CC=golang-dev
https://golang.org/cl/13669043
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/c0ac667531afaab0658461ea21b0d39b39aec227
元コミット内容
このコミットは、doc/go1.2.html
ドキュメント内の gccgo
のステータスに関する記述を更新するものです。具体的には、GCC のリリーススケジュールと Go のリリーススケジュールが一致しないことによる gccgo
のリリースにおけるずれについて言及し、GCC 4.8.0 に含まれる gccgo
がほぼ Go 1.1 に対応していること、そして 2013 年 7 月頃にリリースが期待される GCC 4.8.2 で完全な Go 1.1 実装が提供される見込みであるという古い情報を、より新しい情報に置き換えています。
変更の背景
この変更の背景には、Go 言語のリリースサイクルと GCC (GNU Compiler Collection) のリリースサイクルが異なるという現実があります。gccgo
は Go 言語のフロントエンドを GCC に統合したものであり、Go 言語の新しいバージョンがリリースされても、それがすぐに gccgo
に反映されるわけではありません。GCC のリリースは独自のスケジュールで進行するため、gccgo
が特定の Go バージョンを完全にサポートするまでにはタイムラグが生じます。
このコミットが行われた 2013 年 9 月 12 日の時点で、Go 1.1 は 2013 年 5 月 13 日にリリースされており、Go 1.2 は 2013 年 12 月 1 日にリリースが予定されていました。一方、GCC 4.8.0 は 2013 年 3 月 22 日にリリースされ、GCC 4.8.2 はその後にリリースされています。
元の記述では、GCC 4.8.0 に含まれる gccgo
が Go 1.1 にほぼ対応しているものの、メソッド値が未実装であること、そして GCC 4.8.2 で完全な Go 1.1 実装が期待されるという情報が書かれていました。しかし、このコミットでは、その情報が古くなったため、より正確な情報に更新する必要がありました。具体的には、GCC 4.8.2 が既にリリースされ、その gccgo
が Go 1.1.2 を実装していること、そして将来の GCC 4.9 リリースで Go 1.2 の完全なサポートが期待されるという情報に更新されています。これは、ドキュメントが常に最新かつ正確な情報を提供するようにするための定期的なメンテナンスの一環です。
前提知識の解説
Go 言語
Go は Google によって開発されたオープンソースのプログラミング言語です。静的型付け、コンパイル型、並行処理に強い特徴を持ち、シンプルさと効率性を重視しています。Go 言語の公式コンパイラは gc
と呼ばれます。
gccgo
gccgo
は、Go 言語のコンパイラフロントエンドを GCC (GNU Compiler Collection) に統合したものです。gc
コンパイラとは異なり、gccgo
は GCC の最適化バックエンドを利用できるため、特定のプラットフォームやアーキテクチャにおいて異なるパフォーマンス特性を持つ可能性があります。また、GCC がサポートする様々なアーキテクチャで Go プログラムをコンパイルできるという利点もあります。
Go 1.1 と Go 1.2
Go 言語は、後方互換性を重視したリリースサイクルを採用しています。Go 1.x は、Go 1 との互換性を維持しつつ、機能追加やパフォーマンス改善が行われるマイナーリリースです。
- Go 1.1: 2013年5月13日にリリースされた Go 1 の最初のマイナーアップデートです。パフォーマンスの改善、新しい標準ライブラリパッケージの追加、言語仕様の微調整などが含まれていました。
- Go 1.2: 2013年12月1日にリリースされた Go 1 の2番目のマイナーアップデートです。Go 1.1 からさらにパフォーマンスが向上し、ランタイムの改善、新しい言語機能(例: スライスリテラルの省略記法)などが導入されました。
GCC (GNU Compiler Collection)
GCC は、GNU プロジェクトによって開発されているコンパイラ群です。C、C++、Objective-C、Fortran、Ada、Go など、様々なプログラミング言語をサポートしています。GCC は独自のリリースサイクルを持っており、通常は年に一度のメジャーリリースと、その後のバグ修正リリースが行われます。
- GCC 4.8: 2013年3月22日に 4.8.0 がリリースされた GCC のバージョンです。
- GCC 4.9: 2014年前半に 4.9.0 がリリースされた GCC のバージョンです。
gccgo
の開発は、Go 言語本体の開発とは独立して進められることが多く、GCC のリリースに組み込まれる形で提供されます。そのため、Go 言語の最新バージョンがリリースされても、対応する gccgo
が利用可能になるまでにはタイムラグが生じることが一般的です。
技術的詳細
このコミットは、doc/go1.2.html
ファイル内の gccgo
のステータスに関するセクションを更新しています。具体的には、以下の変更が行われました。
変更前:
<font color=red>
The GCC release schedule does not coincide with the Go release schedule, so some skew is inevitable in
<code>gccgo</code>'s releases.
The 4.8.0 version of GCC shipped in March, 2013 and includes a nearly-Go 1.1 version of <code>gccgo</code>.
Its library is a little behind the release, but the biggest difference is that method values are not implemented.
Sometime around July 2013, we expect 4.8.2 of GCC to ship with a <code>gccgo</code>
providing a complete Go 1.1 implementation.
</font>
この記述は、GCC と Go のリリーススケジュールのずれを説明し、GCC 4.8.0 に含まれる gccgo
が Go 1.1 にほぼ対応しているものの、メソッド値が未実装であること、そして 2013 年 7 月頃にリリースされる GCC 4.8.2 で完全な Go 1.1 実装が期待されるという情報を提供していました。<font color=red>
タグが使用されていることから、この情報は一時的な注意喚起や、まだ確定していない情報であった可能性が示唆されます。
変更後:
+ We expect the future GCC 4.9 release to include gccgo with full
+ support for Go 1.2.
+ In the current (4.8.2) release of GCC, gccgo implements Go 1.1.2.
変更後の記述では、以下の点が明確にされています。
- GCC 4.9 での Go 1.2 完全サポートの期待: 将来の GCC 4.9 リリースで、
gccgo
が Go 1.2 を完全にサポートする見込みであることが明記されました。これは、Go 1.2 のリリースが近づいていることを示唆しています。 - GCC 4.8.2 での Go 1.1.2 実装: コミット時点での最新の GCC リリースである 4.8.2 に含まれる
gccgo
が、Go 1.1.2 を実装していることが明確にされました。Go 1.1.2 は Go 1.1 のバグ修正リリースであり、gccgo
が Go 1.1 の完全なサポートに追いついたことを示しています。
この変更は、ドキュメントの情報を最新の状態に保ち、ユーザーに正確な gccgo
のサポート状況を伝えることを目的としています。特に、Go 1.2 のリリースが間近に迫っている状況で、gccgo
がどの Go バージョンをサポートするのかという情報は、ユーザーにとって非常に重要です。
コアとなるコードの変更箇所
--- a/doc/go1.2.html
+++ b/doc/go1.2.html
@@ -184,14 +184,9 @@ TODO
<h3 id="gccgo">Status of gccgo</h3>
<p>
-<font color=red>
-The GCC release schedule does not coincide with the Go release schedule, so some skew is inevitable in
-<code>gccgo</code>'s releases.
-The 4.8.0 version of GCC shipped in March, 2013 and includes a nearly-Go 1.1 version of <code>gccgo</code>.
-Its library is a little behind the release, but the biggest difference is that method values are not implemented.
-Sometime around July 2013, we expect 4.8.2 of GCC to ship with a <code>gccgo</code>
-providing a complete Go 1.1 implementation.
-</font>
+We expect the future GCC 4.9 release to include gccgo with full
+support for Go 1.2.
+In the current (4.8.2) release of GCC, gccgo implements Go 1.1.2.
</p>
<h3 id="gc_changes">TODO</h3>
コアとなるコードの解説
この変更は、HTML ドキュメント内のテキストコンテンツを直接修正しています。
-
で始まる行は削除された内容を示します。ここでは、GCC と Go のリリーススケジュールのずれ、GCC 4.8.0 のgccgo
の Go 1.1 サポート状況(メソッド値の未実装を含む)、そして GCC 4.8.2 での Go 1.1 完全実装の期待に関する古い記述が削除されています。特に<font color=red>
タグで囲まれていた部分が丸ごと削除されています。+
で始まる行は追加された内容を示します。ここでは、将来の GCC 4.9 リリースでgccgo
が Go 1.2 を完全にサポートする見込みであること、そして現在の GCC 4.8.2 リリースではgccgo
が Go 1.1.2 を実装しているという新しい情報が追加されています。
この変更は、技術的な実装そのものに影響を与えるものではなく、あくまでドキュメントの記述を最新かつ正確な情報に更新するためのものです。これにより、Go 1.2 のリリースを控えたユーザーが、gccgo
の Go バージョンサポート状況について誤解することなく、適切な情報を得られるようになります。
関連リンク
- GitHub上でのコミットページ: https://github.com/golang/go/commit/c0ac667531afaab0658461ea21b0d39b39aec227
- Go CL (Code Review): https://golang.org/cl/13669043
参考にした情報源リンク
- gccgo (gofrontend) のリリース: https://github.com/golang/go/wiki/GoGCC
- Go 1.1 リリース日: https://p2hp.com/go-1-1-released/
- Go 1.2 リリース日: https://go-zh.org/doc/go1.2
- GCC 4.8.0 リリース日: https://lwn.net/Articles/544774/
- GCC 4.8.1 リリース日: https://isocpp.org/blog/2013/05/gcc-4.8.1-released
- GCC 4.8.5 リリース日: https://www.gnu.org/software/gcc/gcc-4.8/
- GCC 4.9.3 リリース日: https://www.gnu.org/software/gcc/gcc-4.9/
- GCC 4.9.0 リリース予測: https://www.phoronix.com/news/MTQ4Mjg
- GCC 4.9.4 リリース日: https://www.gnu.org/software/gcc/gcc-4.9/
- GCC 4.9.4 (Wikidata): https://www.wikidata.org/wiki/Q105098990
- gccgo Go 1.1.2 および Go 1.2 サポート: https://go.dev/doc/go1.2