BT

Go 1.9、型エイリアスを導入、ランタイムとツールを改善

| 作者: Sergio De Simone フォローする 17 人のフォロワー , 翻訳者 sasai フォローする 0 人のフォロワー 投稿日 2017年9月6日. 推定読書時間: 2 分 |

原文(投稿日:2017/08/28)へのリンク

最近リリースされた Go 1.9の最大の変更は、型エイリアス宣言を使った段階的なコード改修のサポート改善だ。Go 1.9では、ガベージコレクタとコンパイラも改善されている。

GoogleエンジニアのRuss Cox氏の説明によると、段階的なコード改修は、コードのリファクタリングに有用なアプローチで、大きなコードベースでは非常に有益だ。簡単に言うと、段階的なコード改修は、全ての変更をアトミックに(1つのコミットで)行うのではなく、一連のステップ(コミット)によって大きなリファクタリングを実行することを目指している。通常、アトミックなリファクタリングの方が、概念レベルではシンプルだが、大きなコードベースでは本当に巨大なコミットになる恐れがある。これはレビューやマージを困難にする。段階的なコード改修では、コードを3ステップでリファクタリングする。まず、古いAPIと共存できる新しいAPIを導入する。そのため、古いAPIを使っているところを一度に全部変更する必要はない。次に、古いAPIを使っているところを新しいAPIにコンバートする。最後に、古いAPIを削除する。

段階的なコード改修を可能にするには、定数、関数、変数、型に別名を付けられる必要がある。Goは次のような宣言で型エイリアスを定義できるようになる。

type OldAPI = NewPackage.API

これを使うと、OldAPIへの全ての参照を、リファクタリングした型を使うように変えることができる。段階的なコード改修に関する様々な議論について、Russ Cox氏の解説は必見だ。

GoogleエンジニアのFrancesc Campoy氏の説明によると、Go 1.9におけるエンジニアリング取り組みのほとんどは、ランタイム、コードライブラリ、ツールの改善に関連しているという。最も重要な変更は以下の通り。

  • 多数のライブラリ関数がコンカレントGCをトリガーするおかげで、Goガベージコレクタのパフォーマンスが改善された。これはプログラム全体ではなく呼び出し元のgoroutineだけをブロックする。加えて、大きなオブジェクトのヒープ割り当てが大幅に改善された。

  • Go 1.9コンパイラでは、同一パッケージに属する関数を並列にコンパイルできるようになった。別のパッケージの並列コンパイルはこれまでのコンパイラですでに可能だった。

  • コアライブラリフロントでは、モノトニック時刻(monotonic time)のトラッキングにより、timeパッケージを安全に利用できるようになる。これにより、ウォールクロック(wall clock)が調整された場合でも、Time値との比較が容易になる。加えて、syncパッケージに属する新しいMap型は、一定時間で読み出し、格納、削除できるスレッドセーフで並行アクセス可能なマップを提供する。

Go 1.9に導入された全ての変更について学ぶためには、公式のリリースノートを読むようにしよう。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT