世界を動かす技術を、日本語で。

Go 1.27

2026年8月20日原文(go.dev)

概要

  • Go 1.27 のリリース発表
  • 言語仕様、ツールチェーン、ランタイム、標準ライブラリの主な強化点
  • 代表的な新機能の紹介
  • パフォーマンス改善や新プロファイル追加
  • 新規パッケージ・機能の概要

Go 1.27 リリース概要

  • Go 1.27 のバイナリアーカイブとインストーラーは 公式ダウンロードページ で公開
  • 言語、ツールチェーン、ランタイム、標準ライブラリの 大幅な機能強化
  • 代表的な新機能や改善点のまとめ

言語仕様の変更

  • ジェネリックメソッド の正式サポート

    • 例: math/rand/v2.Rand における全整数型対応のメソッド追加
    • 旧来は型ごとに個別メソッド実装が必要
    • 新しいジェネリックメソッドで コードの重複削減
  • 構造体リテラルのフィールド指定 の柔軟化

    • ネストや埋め込み構造体のフィールドも 直接初期化可能
    • 例:Gopher{ Name: "Gopher", Burrow: "Burrow #42" }のような記述
  • 関数型推論の一般化

    • すべての代入コンテキストで ジェネリック関数の型引数自動推論
    • 合成リテラル、型変換、チャネル送信時も明示的な型指定不要

ツールチェーンの改善

  • go fix の新モダナイザー追加
    • atomictypes, embedlit, slicesbackward, unsafefuncsの対応
  • go docpackage@version形式のクエリサポート
    • 例:go doc example.com/pkg@v1.2.3
  • go mod tidy で複数のrequireブロックを自動統合
    • 直接・間接依存の2ブロック構成に標準化

パフォーマンス・ランタイムの強化

  • 小オブジェクト( 80バイト未満)向けのサイズ特化メモリアロケーション
    • 割当コスト最大 30%削減、割当多用プログラムで 約1%性能向上
  • goroutineleak プロファイルの一般提供
    • 永久ブロックしたゴルーチンの自動検出機能

標準ライブラリの追加・強化

  • encoding/json/v2 で高レベルJSON処理と厳格なデフォルト
    • 低レベルストリーミング用の encoding/json/jsontext も追加
    • 既存 encoding/json はv2実装を利用し、 高速化と互換性維持
  • crypto/mldsa でポスト量子暗号ML-DSA署名スキーム(FIPS 204)実装
    • crypto/x509crypto/tls に統合
  • uuid パッケージでUUIDの生成・解析をネイティブサポート
  • simd および simd/archsimd で実験的なSIMDサポート
  • net/http/httptestNewTestServer 追加
    • testing/synctest と組み合わせて使えるインメモリ偽ネットワーク

今後の情報と協力者への感謝

  • Go 1.27リリースノート に詳細情報を掲載
  • 今後数週間で関連トピックのブログ記事を順次公開予定
  • コード提供、バグ報告、実験機能の試用、リリース候補のテストに貢献した全てのユーザーに感謝
  • 問題発見時は issue報告 のお願い
  • Go 1.27 の利用促進

Hackerたちの意見

新しいuuidパッケージがリリースされてめっちゃ嬉しい!遅れてたけど、すごく歓迎される追加だね!もういくつかのプロジェクトでgithub.com/google/uuidをuuidに置き換えたよ。

これを見て、Goをもう一度試すためのサイドプロジェクトを探したくなった(最後に使ったのはジェネリクス前の仕事で)。やっぱり、識別されたユニオン(代数データ型)や、もうちょっと良いエラーハンドリングの使い勝手があればいいなと思ってる。

ユニオンについて: https://github.com/golang/go/issues/76920 もしまだフォローしてないなら、この提案を追ってみるといいよ。最近のもので、Goチームの「コアメンバー」たちが結構サポートしてる。1.28には入らないと思うけど、まだアクティブに議論されてる機能ってのがいいね。

やってみて! 書くのがめっちゃ楽しい言語だし、他の言語よりもずっと簡単に始められるよ。もちろんファンだけど、Goが大好きなんだ。

タグ付きユニオンはユーザーコードで実装できるから、実際には言語のサポートは必要ないよ。 https://github.com/splizard/tagged

ちなみに、golangci-lintとgoplsは、ジェネリックメソッドを使うと両方とも壊れちゃうよ。

お知らせありがとう!

Goにいい追加があったね。いつか、言語が最初からすべての機能を持ってスタートすることを想像してる。そうすれば、パッケージのエコシステムもそれに基づいて構築されるだろうし、より原始的な言語機能の遺産に依存することもなくなる。

今日Goを始めるのが15年前より良かったとは思わないな。Standard MLは90年代の完璧なプログラミング言語だけど、残念ながらパッケージのエコシステムはあまり良くない。

第二に、構造体リテラルのキーは、構造体タイプの有効なフィールドセレクタであれば何でも使えるようになり、ネストされたり埋め込まれた構造体のフィールドを直接初期化できるようになった しばらくゴーでトリビアルなこと以上のことを書いてなかったけど、これは大きなことだと思う。つまり、他の構造体でも一貫性があって再利用可能な構造体を定義できるってことだね。

これはかなりのQoLの問題だけど、大きなことなのかな? 機能的な観点からは何も変わらないし。

量子後の暗号に関して、クリプトチームがすごく積極的なのが好き。https://pkg.go.dev/crypto/mldsaをリリースしたし、リードメンテイナーのフィリッポ・ヴァルソルダがここでいい記事を書いてる[1]。テック界に十分なクオリティの量子後暗号を導入するよう促してるよ。[1] https://words.filippo.io/crqc-timeline/

Hacker Newsで議論の続きを見る