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


# Go 1.19 がリリースされました！

[Go 1.19 is released!](https://go.dev/blog/go1.19) by The Go Team

本日、Goチームは喜びとともにGo 1.19をリリースします。[ダウンロードページ](https://go.dev/dl/)から入手できます。

Go 1.19は、今年前半にリリースした大規模な[Go 1.18](https://go.dev/blog/go1.18)を洗練させ、改善するリリースです。
Go 1.19でのジェネリクスの開発は、コミュニティから報告されたこまかな問題やコーナーケースへの対応に力を入れました。
それに加えて、一部のジェネリックなプログラムでは最大20%というパフォーマンスの重要な改善も行われています。

docコメントは[リンク、リスト、そしてより明確な見出しの構文](https://go.dev/doc/comment)をサポートするようになりました。
この変更によって、特に大規模なAPIを持つパッケージでは、ユーザーがより明快でナビゲートしやすいdocコメントを
書けるようになります。この変更の一環として、`gofmt` はこれらの機能の使用箇所に標準的な整形を適用するように、
docコメントを再整形するようになりました。詳細はすべて「[Go Doc Comments](https://go.dev/doc/comment)」を参照してください。

[Goのメモリモデル](https://go.dev/ref/mem)は、[sync/atomicパッケージ](https://go.dev/pkg/sync/atomic/)の
振る舞いを明示的に定義するようになりました。happens-before関係の正式な定義は、C、C++、Java、JavaScript、Rust、
Swiftで使われているメモリモデルと足並みをそろえるように改訂されています。既存のプログラムへの影響はありません。
このメモリモデルの更新にあわせて、[atomic.Int64](https://go.dev/pkg/sync/atomic/#Int64)や
[atomic.Pointer[T]](https://go.dev/pkg/sync/atomic/#Pointer)といった
[sync/atomicパッケージの新しい型](https://go.dev/doc/go1.19#atomic_types)が加わり、アトミックな値をより
使いやすくしています。

[セキュリティ上の理由](https://go.dev/blog/path-security)から、os/execパッケージはPATH検索で
相対パスを尊重しなくなりました。詳細は[パッケージのドキュメント](https://go.dev/pkg/os/exec/#hdr-Executables_in_the_current_directory)
を参照してください。既存の[golang.org/x/sys/execabs](https://pkg.go.dev/golang.org/x/sys/execabs)の利用箇所は、
Go 1.19以降のみでビルドされるプログラムであればos/execに戻せます。

ガベージコレクタにはソフトメモリ制限のサポートが追加されました。詳細は
[新しいガベージコレクションガイド](https://go.dev/doc/gc-guide#Memory_limit)で詳しく説明しています。
この制限は、割り当てられたメモリ量が決まっているコンテナ内でGoプログラムをできるだけ効率的に動作させるように
最適化する際に特に役立ちます。

新しいビルド制約 `unix` は、対象のオペレーティングシステム(`GOOS`)がUnix系システムであれば満たされます。
現時点では、Unix系とはGoの対象オペレーティングシステムのうち `js`、`plan9`、`windows`、`zos` を除いたすべてを意味します。

最後に、Go 1.19には、スタックのコピーを減らすための初期ゴルーチンスタックの動的なサイズ調整、
ほとんどのUnixシステムでの追加のファイルディスクリプタの自動利用、x86-64とARM64における大規模なswitch文向けの
ジャンプテーブル、ARM64でのデバッガによる関数呼び出しの注入のサポート、RISC-Vでのレジスタベースの呼び出し規約
(register ABI)のサポート、そしてLoongson 64ビットアーキテクチャLoongArch(`GOARCH=loong64`)上で動作するLinuxの
実験的サポートなど、多岐にわたるパフォーマンスと実装の改善が含まれています。

コードを書き、バグを報告し、フィードバックを共有し、ベータ版やリリース候補版をテストすることでこのリリースに
貢献してくれたすべての人々に感謝します。皆さんの尽力のおかげで、Go 1.19はできる限り安定したものになりました。
いつものことですが、何か問題に気づいたら[issueを作成してください](https://go.dev/issue/new)。

Go 1.19をお楽しみください！

By The Go Team

