ついに来るか?Go 1.27で期待される新機能と進化を徹底予測
Go 1.27
Go 1.27
現在、Go 1.27に関する具体的な仕様やリリースノートは公開されていません。しかし、コミュニティでは次世代のGoに対する期待が高まっています。言語仕様のさらなる改善やパフォーマンスの向上、そしてGoチームが注力しているツールチェーンの進化について、最新の動向をウォッチしていきましょう。
新しいuuidパッケージが導入されたのは本当に嬉しい。待ちに待った機能だし、すごく歓迎してる!すでにいくつかのプロジェクトで github.com/google/uuid を uuid に置き換えたよ。
これを見て、Goをもう一度触ってみるためのサイドプロジェクトを探したくなった(仕事で最後に使ったのはジェネリクス導入前だったからね)。今でも判別共用体(代数的データ型)と、もっと扱いやすいエラーハンドリングがあればいいなとは思う。
第二に、構造体リテラルのキーとして構造体型の有効なフィールドセレクタが使えるようになり、ネストされた構造体や埋め込み構造体のフィールドを直接初期化できるようになった
Goでちょっとしたスクリプト以上のものを書いてからしばらく経つけど、これはかなり大きな変更じゃないか?つまり、一貫性があって他の構造体でも再利用可能な構造体を定義できるってことだよね。
cryptoチームが耐量子計算機暗号に対して積極的な姿勢なのは素晴らしいね。https://pkg.go.dev/crypto/mldsa がリリースされた。リードメンテナーのFilippo Valsordaが、テック界に耐量子暗号の適切なバージョンへの移行を促す素晴らしい記事[1]を書いているよ。
第一に、ジェネリックメソッドがサポートされた
ジェネリック関数で明示的な型引数が不要になった
最高!これは汎用的なハンドラーやコントローラーのジェネリックを作成しようとしていた時にぶつかったコーディング上の問題だったんだ。引数のコピーを持たずにリクエストボディから引数をハイドレート(展開)できるような仕組みを作ろうとしてた時にな:https://github.com/xeoncross/mid/blob/main/handler.go#L12
google/uuid [1] から標準の uuid パッケージ [2] に乗り換えるプルリクエストが大量に押し寄せる準備をしておこうぜ。Kubernetesプロジェクトが最初になるはずだ[3]、間違いないね。
[1] https://pkg.go.dev/github.com/google/uuid
[2] https://go.dev/pkg/uuid
[3] https://github.com/kubernetes/kubernetes/blob/2220c3853a2402ffc0502995c49b383f84ae8ceb/go.mod#L36
[4] https://github.com/google/uuid/issues/221
言及されてないけど、浮動小数点のパースとフォーマットにRuss Coxのuscaleアルゴリズムが採用されたよ。
https://research.swtch.com/fp
https://github.com/golang/go/blob/go1.27.0/src/internal/strconv/uscale.go
SIMD関連は最高だね。かなり楽しませてもらってる。LLMを使ってスカラーからSIMDへのトランスパイラとして使うと、驚くほど上手くいくよ。もちろん、SIMDの専門家が手書きでアセンブリを書くほうが、この新しい組み込み関数を使うLLMより良い結果を出せるだろうけど、それでも圧倒的に速いよ。
リリースノートは大好きだけど、Goブログにもシンタックスハイライトを追加してほしいな。go.devのリンクを開くたびに、コードの視認性が本来あるべき姿より少し悪くて、少し驚いたりガッカリしたりするんだ。
Goを好きになりたいんだけど、コードを見ていると耐えられないんだよね。エラーハンドリングが本当にやる気を削ぐ。