[この記事は Andrew Gerrand、Go チームによる Open Source Blog の記事 "Go 1.5 is released" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。]

本日、Go プロジェクトは Go の 6 番目の安定したメジャー リリースである Go 1.5 をリリースしました。

このリリースには、実装への重大な変更が含まれています。コンパイラ ツール チェーンが C から Go に変換され、Go コード ベースから C コードの最後の痕跡が削除されました。ガベージ コレクターが完全に再設計され、ガベージ コレクションによる一時停止時間が劇的に短縮されました。スケジューラに関連する改善によって、デフォルトの GOMAXPROCS 値 (同時に実行される goroutine の数) を 1 から使用可能な CPU の数に変更できるようになりました。リンカーへの変更によって、Go パッケージを Go プログラムにリンクされる共有ライブラリとして、あるいは C プログラムがリンクまたはロードできるアーカイブまたは共有ライブラリにできます (デザイン ドキュメント)。

このリリースには、デベロッパー ツールに対する改善も含まれています。"internal" パッケージのサポートによって、パッケージ間で実装の詳細を共有できます。外部依存関係の「ベンダリング」の実験的なサポートは、Go プログラムの依存関係の管理のための標準メカニズムに向けたステップです。新しい "go tool trace" コマンドを使用すると、実行時に新しいトレース インフラストラクチャによって生成されるプログラム トレースを表示できます。新しい "go doc" コマンドでは、 Go の コマンドライン インターフェース での パッケージ ドキュメント の閲覧がより快適にできるようになりました。

さまざまな新しいオペレーティング システムおよびアーキテクチャへのポートもあります。より成熟した新しいポートは、darwin/arm、darwin/arm64 (Apple の iPhone デバイスおよび iPad デバイス)、および linux/arm64 です。Ppc64 および ppc64le (IBM PowerPC 64 ビット、ビッグ エンディアンおよびリトル エンディアン) の実験的なサポートもあります。
新しい darwin/arm64 ポートおよび外部リンク機能は、Android デバイスおよび iOS デバイス上でのアプリの作成に Go をどのように使用できるかを試す実験である Go mobileプロジェクトを促進しています。(Go mobileの自体はこのリリースの一部ではありません。)

言語の唯一の変更点は map のリテラル構文に対する制限の撤廃であり、より簡潔にして、スライス リテラルと整合性を持つようにされています。

標準ライブラリにも多くの追加および改善が加えられています。flag パッケージでは、より見やすい使用状況メッセージが表示されるようになりました。math/big パッケージでは、任意の精度の浮動小数点数で計算するための Float 型が提供されるようになりました。Linux システムおよび BSD システムの DNS リゾルバーの改善では、参照を指定するプログラムへの cgo 要件が削除されました。go/types パッケージは、golang.org/x/tools リポジトリから標準ライブラリに移動されました。(新しい go/constant パッケージおよび go/importer パッケージはこの移動の影響によって作成されました。) reflect パッケージは、既存の SliceOf 関数に似た新しい ArrayOf 関数および FuncOf 関数を提供しています。もちろん、通常の細かい修正点および改善点のリストもあります。

詳しくは、詳細なリリース ノートを参照してください。すぐに使用したい場合は、ダウンロード ページにアクセスして Go 1.5 をいますぐに入手してください。


Posted by Yoshifumi Yamaguchi - Developer Relations Team