[インデックス 13478] ファイルの概要
このコミットは、Go言語の公式FAQドキュメントである doc/go_faq.html
に、プロジェクトの現状に関する新しいセクションを追加するものです。具体的には、Go 1のリリースとその安定性、今後の開発方針について説明する内容が追記されています。
コミット
commit 8de5080f34ad738488430ec1cb5e918dc7c384ff
Author: Rob Pike <r@golang.org>
Date: Mon Jul 16 13:31:15 2012 -0700
faq: add status section
Fixes #3822.
R=golang-dev, r, dsymonds, minux.ma, adg
CC=golang-dev
https://golang.org/cl/6395043
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/8de5080f34ad738488430ec1cb5e918dc7c384ff
元コミット内容
faq: add status section
Fixes #3822.
R=golang-dev, r, dsymonds, minux.ma, adg
CC=golang-dev
https://golang.org/cl/6395043
変更の背景
このコミットは、Go言語のFAQに「プロジェクトの現状はどうなっていますか?」という新しいセクションを追加することを目的としています。これは、Go 1が2012年3月28日にリリースされたことを受け、プロジェクトの安定性、今後の開発の方向性、そしてGo 1の長期的な互換性保証について、ユーザーや開発者からの疑問に応えるためのものです。コミットメッセージにある Fixes #3822
は、GitHubのIssue #3822(またはそれに相当するバグトラッカーの項目)を修正するものであることを示しており、このFAQセクションの追加がコミュニティからの要望や、プロジェクトの現状に関する明確な情報提供の必要性に応えるものであることを示唆しています。
Go 1のリリースは、Go言語にとって非常に重要なマイルストーンであり、それまでの活発な言語設計と開発の期間を経て、安定した基盤を提供することを目指していました。このコミットは、その安定性へのコミットメントを公式ドキュメントで明確に表明し、Go 1が信頼性の高い製品、プロジェクト、出版物を作成するための基盤となることを強調しています。
前提知識の解説
- Go言語 (Golang): Googleによって開発されたオープンソースのプログラミング言語です。静的型付け、コンパイル型、並行処理に強い特徴を持ち、システムプログラミング、Webサービス、ネットワークプログラミングなどで広く利用されています。
- Go 1: Go言語の最初のメジャーリリースバージョンです。2012年3月28日にリリースされました。Go 1の最も重要な側面は、その「互換性保証」です。これは、Go 1のリリース以降、Go 1の仕様に準拠して書かれたプログラムは、将来のGo 1.xリリースでもコンパイルされ、動作し続けることを保証するというものです。これにより、Go言語のエコシステムが安定し、開発者が安心してGoを採用できるようになりました。
- 言語仕様 (Language Specification): プログラミング言語の構文、セマンティクス、データ型、制御構造などを厳密に定義した公式文書です。Go 1のリリースには、安定した言語仕様が含まれており、これが互換性保証の基盤となります。
- 標準ライブラリ (Standard Libraries): プログラミング言語に標準で付属する、汎用的な機能を提供するモジュールの集まりです。Goの標準ライブラリは非常に充実しており、ネットワーク、ファイルI/O、暗号化、データ構造など、多岐にわたる機能を提供します。Go 1の標準ライブラリもまた、互換性保証の対象となります。
- カスタムツール (Custom Tools): Go言語には、
go build
(ビルド),go run
(実行),go test
(テスト),go fmt
(フォーマット) など、開発を効率化するための多くのコマンドラインツールが付属しています。これらもGo 1の一部として安定性が保証されます。 - 後方非互換な変更 (Backwards-incompatible changes): ソフトウェアの新しいバージョンがリリースされた際に、古いバージョンで動作していたコードが新しいバージョンでは動作しなくなるような変更のことです。Go 1では、ポイントリリース(例: Go 1.1, Go 1.2など)において、意図的に後方非互換な変更を行わないことが約束されています。
- 国際化 (Internationalization): ソフトウェアを異なる言語や地域に対応させるプロセスです。これには、テキストの翻訳、日付や時刻のフォーマット、通貨表示、文字エンコーディングの処理などが含まれます。Go 1リリース後の開発では、国際化のサポート改善が重点の一つとされています。
- FAQ (Frequently Asked Questions): よくある質問とその回答をまとめたドキュメントです。
技術的詳細
このコミットは、doc/go_faq.html
ファイルにHTMLの新しいセクションを追加することで、Goプロジェクトの現状に関する公式見解を提示しています。追加された内容は以下の点を明確にしています。
- Go 1のリリース: Goが2009年11月10日に公開オープンソースプロジェクトとなり、数年間の活発な設計と開発を経て、2012年3月28日にGo 1がリリースされたことが明記されています。
- Go 1の安定性: Go 1が言語仕様、標準ライブラリ、カスタムツールを含む安定した基盤を提供し、信頼性の高い製品、プロジェクト、出版物を作成するためのものであると強調されています。
- 開発の焦点の移行: Go 1の安定性が確立されたことで、言語やライブラリを積極的に変更するのではなく、Goを使ってプログラム、製品、ツールを開発することに焦点が移っていることが述べられています。これは、Go 1の目的が長期的な安定性を提供することにあるためです。
- 後方互換性の保証: Go 1のポイントリリースでは、後方非互換な変更は行われないことが明確に約束されています。これは、開発者がGo 1を安心して利用できるための重要な保証です。
- 将来の展望: Go自体の開発は継続されるものの、その焦点はパフォーマンス、信頼性、移植性、そして国際化のサポート改善などの新機能の追加に移ることが示されています。また、将来的にGo 2が登場する可能性も示唆されていますが、それはGo 1の使用経験から学ぶことに基づくものであり、数年先のことであるとされています。
この変更は、Go言語の成熟度と、プロジェクトが言語設計の初期段階から安定したプラットフォーム提供へと移行したことをコミュニティに伝える上で非常に重要です。
コアとなるコードの変更箇所
--- a/doc/go_faq.html
+++ b/doc/go_faq.html
@@ -54,6 +54,38 @@ By its design, Go proposes an approach for the construction of system
software on multicore machines.
</ul>
+<h3 id="What_is_the_status_of_the_project">
+What is the status of the project?</h3>
+
+<p>
+Go became a public open source project on November 10, 2009.
+After a couple of years of very active design and development, stability was called for and
+Go 1 was <a href="http://blog.golang.org/2012/03/go-version-1-is-released.html">released</a>
+on March 28, 2012.
+Go 1, which includes a <a href="/ref/spec">language specification</a>,
+<a href="/pkg/">standard libraries</a>,
+and <a href="/cmd/go/">custom tools</a>,
+provides a stable foundation for creating reliable products, projects, and publications.
+</p>
+
+<p>
+With that stability established, we are using Go to develop programs, products, and tools rather than
+actively changing the language and libraries.
+In fact, the purpose of Go 1 is to provide <a href="/doc/go1compat.html">long-term stability</a>.
+Backwards-incompatible changes will not be made to any Go 1 point release.
+We want to use what we have to learn how a future version of Go might look, rather than to play with
+the language underfoot.
+</p>
+
+<p>
+Of course, development will continue on Go itself, but the focus will be on performance, reliability,
+portability and the addition of new functionality such as improved support for internationalization.
+</p>
+
+<p>
+There may well be a Go 2 one day, but not for a few years and it will be influenced by what we learn using Go 1 as it is today.
+</p>
+
<h3 id="What_is_the_origin_of_the_name">
What is the origin of the name?</h3>
コアとなるコードの解説
上記の差分は、doc/go_faq.html
ファイルの既存の <ul>
タグの後に、新しい <h3>
ヘッダーとそれに続く4つの <p>
パラグラフを追加していることを示しています。
<h3 id="What_is_the_status_of_the_project">What is the status of the project?</h3>
: この行は、新しいFAQセクションのタイトルを定義しています。id
属性は、ページ内リンクやスクリプトからの参照を可能にします。- 最初の
<p>
タグ内では、Goがオープンソース化された日付(2009年11月10日)と、Go 1がリリースされた日付(2012年3月28日)が記載されています。また、Go 1が言語仕様、標準ライブラリ、カスタムツールを含む安定した基盤であることを強調しています。http://blog.golang.org/2012/03/go-version-1-is-released.html
: Go 1リリースに関する公式ブログ記事へのリンク。/ref/spec
: Go言語仕様へのリンク。/pkg/
: Go標準ライブラリのドキュメントへのリンク。/cmd/go/
: Goコマンドのドキュメントへのリンク。
- 2番目の
<p>
タグ内では、Go 1の安定性が確立されたことで、言語やライブラリの積極的な変更よりも、Goを使って開発することに焦点が移ったことが説明されています。Go 1の目的が長期的な安定性を提供することであり、Go 1のポイントリリースでは後方非互換な変更が行われないことが明記されています。/doc/go1compat.html
: Go 1の互換性保証に関するドキュメントへのリンク。
- 3番目の
<p>
タグ内では、Go自体の開発は継続されるものの、その焦点がパフォーマンス、信頼性、移植性、国際化サポートの改善などの新機能の追加に移ることが述べられています。 - 4番目の
<p>
タグ内では、将来的にGo 2が登場する可能性が示唆されていますが、それはGo 1の使用経験から学ぶことに基づくものであり、数年先のことであるとされています。
これらの変更は、Goプロジェクトの成熟度と、開発の優先順位が言語の安定性と実用性へと移行したことを明確に伝えるための重要なドキュメント更新です。
関連リンク
- Go 1 Release Blog Post: http://blog.golang.org/2012/03/go-version-1-is-released.html
- Go Language Specification: https://golang.org/ref/spec
- Go Standard Libraries: https://golang.org/pkg/
- Go Command Documentation: https://golang.org/cmd/go/
- Go 1 Compatibility Document: https://golang.org/doc/go1compat.html
参考にした情報源リンク
- GitHub Commit Page: https://github.com/golang/go/commit/8de5080f34ad738488430ec1cb5e918dc7c384ff
- Go Official Website: https://golang.org/
- Go Blog: https://blog.golang.org/
- Go Documentation: https://golang.org/doc/