概要

2026年6月18日、Goチームはバージョン1.27の最初のリリース候補(RC1)を公開した。正式リリースは同年8月を予定しており、Goチームは本番環境や単体テストでのRCの検証とフィードバックの送付を呼びかけている。バイナリはgo installコマンドまたはgo.dev/dl/#go1.27rc1から入手できる。

最大の目玉は言語仕様への「ジェネリックメソッド」の追加だ。これまでGoのジェネリクスは関数をパッケージスコープで宣言する形に限られていたが、Go 1.27ではメソッド宣言が独自の型パラメータを持てるようになった。なおインターフェースのメソッドには型パラメータを宣言できない制約は残る。言語仕様の他の変更として、構造体リテラルのキーにトップレベルのフィールド名だけでなく有効なフィールドセレクタを使えるようになったこと、ジェネリック関数を関数型変数に代入するすべてのコンテキストで型推論が適用されるよう一般化されたことが挙げられる。

標準ライブラリの主要な追加

Go 1.27の標準ライブラリで最も影響が大きいのはencoding/json/v2jsontextパッケージの追加だ。encoding/json/v2は既存のencoding/jsonを大幅に刷新したもので、無効なUTF-8やJSONオブジェクト内の重複キーを拒否するなどより厳密な挙動を持つ。既存のencoding/json APIはv2実装を内部で使いつつ後方互換性を維持するが、GOEXPERIMENT=nojsonv2で旧動作に戻すことも可能だ。またjsontextパッケージが低レベルなJSON構文処理のためのエンコーダ・デコーダを提供する。

暗号関係では、FIPS 204で規定されたML-DSA署名スキームを実装したcrypto/mldsaパッケージが追加された。crypto/tlsはMLKEM1024鍵交換をサポートし、crypto/x509もML-DSAに対応した。その他の新パッケージとして、UUIDの生成とパースを行うuuid、実験的なポータブルSIMDサポートを提供するsimdおよびsimd/archsimdGOEXPERIMENT=simdで有効化)がある。ユーティリティ面ではbytesstringsCutLast()関数が、math/rand/v2にジェネリックなN()メソッドが、net/urlURL.Clone()Values.Clone()が追加されている。unicodeパッケージはUnicode 17へアップグレードされた。

ランタイムとツールの改善

ランタイムではメモリ割り当て速度の改善が注目される。サイズ特化の割り当てルーチンにより80バイト未満の小さい割り当てが最大30%高速化し、割り当て集約的なプログラム全体では約1%の性能向上が見込まれる(バイナリサイズは約60KB増加)。Go 1.26で実験的に導入されたゴルーチンリークプロファイル(/debug/pprof/goroutineleak)が正式機能に昇格した。またasynctimerchan GODEBUG設定が完全廃止となり、timeパッケージのチャネルは常にバッファなし(同期)で動作する。

ツール面ではgo docpackage@version構文をサポートし、特定バージョンのパッケージドキュメントを参照できるようになった。go fixatomictypesembedlitslicesbackwardunsafefuncsの新しいモダナイズツールが追加された。go mod tidyはGo 1.27以降のgo.modで重複したrequireブロックを自動マージし、最大2ブロック(直接依存・間接依存)に整理する。コンパイラのcompilelinkasmcgo等のツールが@file形式のレスポンスファイルに対応した。プラットフォームではmacOS 13 Ventura以降が必須となり、それ以前のバージョンはサポート対象外になった。bzrバージョン管理システムのサポートも削除されている。