> Source: https://www.ymotongpoo.com/works/goblog-ja/go1.5/


# Go 1.5 リリース

[Go 1.5 is released](https://go.dev/blog/go1.5) by Andrew Gerrand

本日、Goプロジェクトは、Goの6番目のメジャーな安定版リリースとなるGo 1.5をリリースできることを誇りに思います。

今回のリリースでは実装に大きな変更が加えられています。コンパイラのツールチェインはCからGoへ[翻訳され](https://go.dev/doc/go1.5#c)、Goのコードベースから最後まで残っていたCのコードが取り除かれました。ガベージコレクタは[全面的に再設計され](https://go.dev/doc/go1.5#gc)、ガベージコレクションの一時停止時間が[劇的に短縮](https://go.dev/talks/2015/go-gc.pdf)されています。スケジューラに関連する改善によって、デフォルトの[GOMAXPROCS](https://go.dev/pkg/runtime/#GOMAXPROCS)の値(同時に実行されるゴルーチンの数)も1から論理CPUの数へと変わりました。リンカへの変更により、Goのパッケージを共有ライブラリとしてGoプログラムにリンクできるようになったほか、Cプログラムからリンクまたはロードできるアーカイブや共有ライブラリとしてGoのパッケージをビルドすることも可能になっています([設計ドキュメント](https://go.dev/s/execmodes))。

このリリースには[開発者向けツールの改善](https://go.dev/doc/go1.5#go_command)も含まれています。[「internal」パッケージ](https://go.dev/s/go14internal)のサポートにより、パッケージ間で実装の詳細を共有できます。外部依存関係の「ベンダリング」に対する[実験的なサポート](https://go.dev/s/go15vendor)は、Goプログラムにおける依存関係管理のための標準的な仕組みに向けた一歩です。新しい「[go tool trace](https://go.dev/cmd/trace/)」コマンドは、ランタイムの新しいトレース機構が生成するプログラムトレースを可視化します。新しい「[go doc](https://go.dev/cmd/go/#hdr-Show_documentation_for_package_or_symbol)」コマンドは、Goパッケージのドキュメントを閲覧するための改善されたコマンドラインインターフェースを提供します。

また、いくつかの[新しいオペレーティングシステムおよびアーキテクチャへの移植](https://go.dev/doc/go1.5#ports)も行われています。より成熟した新しい移植版はdarwin/arm、darwin/arm64(AppleのiPhoneおよびiPadデバイス向け)、そしてlinux/arm64です。さらにppc64とppc64le(IBMの64ビットPowerPC、ビッグエンディアンおよびリトルエンディアン)への実験的なサポートもあります。

新しいdarwin/arm64への移植と外部リンク機能は、[Go mobileプロジェクト](https://godoc.org/golang.org/x/mobile)を後押しします。これはAndroidやiOSデバイス上でアプリを構築するためにGoがどのように使えるかを探る実験的な取り組みです。(Go mobileの作業そのものは今回のリリースには含まれていません。)

言語仕様への変更はごく小さなものが1つだけです。[マップリテラルの構文にあった制限が緩和され](https://go.dev/doc/go1.5#language)、スライスリテラルとより簡潔で一貫した書き方ができます。

標準ライブラリにも多くの追加と改善がありました。flagパッケージは、より[すっきりした使用方法のメッセージ](https://go.dev/doc/go1.5#flag)を表示するようになりました。math/bigパッケージは、任意精度浮動小数点数を計算するための[Float](https://go.dev/pkg/math/big/#Float)型を新たに提供します。LinuxおよびBSD系システムにおけるDNSリゾルバの[改善](https://go.dev/doc/go1.5#net)によって、名前解決を行うプログラムでcgoが不要になりました。[go/types](https://go.dev/pkg/go/types/)パッケージは[golang.org/x/tools](https://godoc.org/golang.org/x/tools)リポジトリから標準ライブラリへと[移されました](https://go.dev/doc/go1.5#go_types)。(新しい[go/constant](https://go.dev/pkg/go/constant/)パッケージと[go/importer](https://go.dev/pkg/go/importer/)パッケージも、この移動に伴って生まれたものです。)reflectパッケージには、既存の[SliceOf](https://go.dev/pkg/reflect/#SliceOf)関数と同様の[ArrayOf](https://go.dev/pkg/reflect/#ArrayOf)関数と[FuncOf](https://go.dev/pkg/reflect/#FuncOf)関数が追加されました。そしてもちろん、いつも通り[細かな修正と改善のリスト](https://go.dev/doc/go1.5#minor_library_changes)もあります。

詳細については[リリースノート](https://go.dev/doc/go1.5)をご覧ください。あるいは、今すぐ試してみたいという方は、[ダウンロードページ](https://go.dev/dl/)からGo 1.5を入手してください。

By Andrew Gerrand

