Go 1.4 リリース

Go 1.4 is released by Andrew Gerrand

本日、Goの5番目のメジャー安定版リリースとなるGo 1.4を発表します。前回のメジャーリリースである Go 1.3から6ヶ月が経ちました。今回のリリースには小さな言語仕様の変更、 対応OSおよびプロセッサアーキテクチャの追加、そしてツールチェインとライブラリの改善が含まれています。 これまでと同様、Go 1.4も互換性の約束を守っており、ほとんどのコードは1.4に移行しても変更なしに コンパイルでき、そのまま実行できます。詳細についてはGo 1.4のリリースノートを参照してください。

今回のリリースでもっとも注目すべき新機能は、Androidの正式サポートです。コアにある対応機能と golang.org/x/mobileリポジトリのライブラリを使うことで、 GoのコードだけでシンプルなAndroidアプリを書けるようになりました。現時点ではサポートライブラリはまだ 発展途上で、活発に開発が進められています。早期に試す方には多少の不安定さを覚悟してほしいところですが、 コミュニティの皆さんの参加を歓迎します。

言語仕様の変更は、for-rangeループの構文に対する小さな調整です。値、ループのインデックス、あるいは マップのキーを代入する必要なく、for range s {と書くだけでsの各要素をループできるようになりました。 詳細はリリースノートを参照してください。

goコマンドには新しいサブコマンドであるgo generateが加わりました。これはコンパイル前にソースコードを 生成するツールの実行を自動化するものです。たとえば、新しい stringerツールを使って型付き定数のStringメソッドの 生成を自動化するのに使えます。詳しくは設計ドキュメントを参照してください。

ほとんどのプログラムは1.3のときとほぼ同じ速度か、やや高速に動作しますが、中にはやや遅くなるものも あります。変更点が多いため、何が起きるかを正確に述べるのは難しいところです。詳しい議論は リリースノートを参照してください。

もちろん、他にも多くの改善とバグ修正が行われています。

お気づきでない方のために触れておくと、数週間前にサブリポジトリが新しい場所へ移動しました。たとえば、 go.toolsパッケージは現在golang.org/x/toolsからインポートするようになっています。詳細は アナウンス投稿を参照してください。

今回のリリースは、プロジェクトがソース管理をMercurialからGitへ、コードレビューをRietveldからGerritへ、 そして課題管理とWikiをGoogle CodeからGitHubへ移行するタイミングとも重なっています。この移行はGoの コアリポジトリとそのサブリポジトリの両方に影響します。正式なGitリポジトリは go.googlesource.comに、課題トラッカーとWikiは golang/goのGitHubリポジトリにあります。

開発自体はすでに新しいインフラへ移行済みですが、1.4リリースに関しては、 ソースからインストールするユーザーには引き続きMercurial リポジトリの利用を推奨します。

App Engineをお使いの方には、Go 1.4がベータテスト向けに提供され始めています。詳細は アナウンスを 参照してください。

Goチーム一同より、Go 1.4をお楽しみください。そしてよい休暇シーズンをお過ごしください。

By Andrew Gerrand