> Source: https://www.ymotongpoo.com/works/goblog-ja/go1.26/


# Go 1.26 リリース

[Go 1.26 is released](https://go.dev/blog/go1.26) by Carlos Amedee, on behalf of the Go team

本日、GoチームはGo 1.26をリリースしました。
バイナリアーカイブとインストーラーは[ダウンロードページ](https://go.dev/dl/)から入手できます。

## 言語仕様の変更

Go 1.26では、[言語の構文と型システム](https://go.dev/doc/go1.26#language)に2つの重要な改良が加えられました。

1つ目は、新しい変数を作成する組み込み関数`new`です。
これまでは型のみを指定できましたが、今後はオペランドとして式を指定できるようになり、変数の初期値を指定できます。

簡単な例を挙げます。
次のようなコードがあるとします。

```go
x := int64(300)
ptr := &x
```

次のように簡略化できます。

```go
ptr := new(int64(300))
```

2つ目は、ジェネリック型が自身の型パラメータリストの中で自分自身を参照できるようになったことです。
この変更により、複雑なデータ構造やインターフェースの実装が簡単になります。

## パフォーマンスの向上

これまで実験的機能だった[Green Teaガベージコレクタ](https://go.dev/doc/go1.26#new-garbage-collector)が、デフォルトで有効になりました。

ベースラインの[cgo呼び出しのオーバーヘッドが約30%削減](https://go.dev/doc/go1.26#faster-cgo-calls)されました。

コンパイラは、より多くの状況でスライスの[バッキングストアをスタック上に確保](https://go.dev/doc/go1.26#compiler)できるようになり、パフォーマンスが向上しました。

## ツールの改善

`go fix`コマンドは[Go analysisフレームワーク](https://go.dev/pkg/golang.org/x/tools/go/analysis)を使うように全面的に書き直され、コードが言語や標準ライブラリの新しい機能を活用できるように安全な修正を提案するアナライザーである「[モダナイザー](https://go.dev/pkg/golang.org/x/tools/go/analysis/passes/modernize)」を数十個含むようになりました。
また、`//go:fix inline`ディレクティブが付与された各関数へのすべての呼び出しをインライン化しようとする[`inline`アナライザー](https://go.dev/pkg/golang.org/x/tools/go/analysis/passes/inline#hdr-Analyzer_inline)も含まれています。
これらの機能については、近日公開予定の2本のブログ記事で詳しく取り上げます。

## その他の改善と変更

Go 1.26では、Go 1.25と比べて[ツール](https://go.dev/doc/go1.26#tools)、[ランタイム](https://go.dev/doc/go1.26#runtime)、[コンパイラ](https://go.dev/doc/go1.26#compiler)、[リンカ](https://go.dev/doc/go1.26#linker)、[標準ライブラリ](https://go.dev/doc/go1.26#library)にわたる多くの改善が加えられています。
これには、[`crypto/hpke`](https://go.dev/doc/go1.26#new-cryptohpke-package)、[`crypto/mlkem/mlkemtest`](https://go.dev/doc/go1.26#cryptomlkempkgcryptomlkem)、[`testing/cryptotest`](https://go.dev/doc/go1.26#testingcryptotestpkgtestingcryptotest)という3つの新しいパッケージの追加が含まれます。
また[移植版ごとの変更](https://go.dev/doc/go1.26#ports)や[`GODEBUG`設定](https://go.dev/doc/godebug#go-126)の更新もあります。

Go 1.26の追加機能のいくつかはまだ実験段階にあり、明示的にオプトインした場合にのみ利用可能になります。
特に次のものがあります。

* [実験的な`simd/archsimd`パッケージ](https://go.dev/doc/go1.26#simd)は、「単一命令・複数データ」(SIMD) 演算へのアクセスを提供します。

* [実験的な`runtime/secret`パッケージ](https://go.dev/doc/go1.26#new-experimental-runtimesecret-package)は、主に暗号関連の秘密情報を扱うコードで使われる一時変数を安全に消去するための機能を提供します。

* `runtime/pprof`パッケージの[実験的な`goroutineleak`プロファイル](https://go.dev/doc/go1.26#goroutineleak-profiles)は、リークしたゴルーチンを報告します。

これらの実験的機能は、いずれ将来のGoのバージョンで一般提供される見込みです。
ぜひ一足先に試してみてください。
皆さんのフィードバックを心よりお待ちしています。

Go 1.26における追加、変更、改善の完全なリストについては、[Go 1.26リリースノート](https://go.dev/doc/go1.26)を参照してください。

今後数週間にわたり、Go 1.26に関連するトピックのいくつかを詳しく取り上げるフォローアップのブログ記事を公開していきます。
また後日ご確認ください。

コードを書いたり、バグを報告したり、実験的な追加機能を試したり、フィードバックを共有したり、リリース候補版をテストしたりして、今回のリリースに貢献してくださったすべての方々に感謝します。
皆さんの努力のおかげで、Go 1.26はできる限り安定したものになりました。
いつものように、何か問題に気づいた場合は[イシューを報告](https://go.dev/issue/new)してください。

新しいリリースを楽しんでいただければ幸いです。

By Carlos Amedee, on behalf of the Go team

