「Go 1.14」リリース、goコマンドでのモジュールサポートが正式機能に
Googleの開発チームは2月25日、プログラミング言語Goの最新版となる「Go 1.14」を公開した。ランタイム、コンパイラの強化が図られたリリースとなる。
Go 1.14は2019年9月に公開されたGo 1.13に続く最新安定版となる。本リリースでは、goコマンドでのモジュールサポート機能が運用環境向けで利用できる段階となった。これにあわせて、すべてのユーザーに対し依存性管理にこの機能を利用するよう移行を推奨している。
今までインターフェイスにおいて同じメソッドを複数回宣言することは許されていなかったが、インターフェイスの埋め込みを利用する場合にこの制限が緩和されるよう仕様が変更された。
ランタイムでは、deferの性能を強化した。ほぼオーバーヘッドなしでの呼び出しができるようになり、性能への要求が高いコードでも使用できるとしている。また、goroutinesが非同期でプリエンプティブとなった。その結果、内部で関数呼び出しを行わないようなループでデッドロックが発生したり、ガベージコレクションの大幅な遅延が発生しなくなった。ページアロケータの効率も改善されるなど、ほかにもさまざまな強化が行われている。
コンパイラでは、新たに「-d=checkptr」オプションが追加された。コードがunsafe.Pointerの安全性ルールに動的に従っているかを確認するオプションで、Windows以外のプラットフォームではデフォルトで有効となっている。これを無効にするには、「-gcflags=all=-d=checkptr=0」オプションを設定する必要がある。
このほかにも多数の機能強化が加わった。ハードウェア側では、Linux上の64ビットRISC-Vの実験的サポートが加わり、FreeBSDでの64ビットARMのサポートも実現した。