Goブログ
Go 1.19がリリースされました!
本日、GoチームはGo 1.19のリリースを発表できることを大変嬉しく思っています。 ダウンロードページから入手できます。
Go 1.19は、今年初めにリリースされた大規模なGo 1.18リリースを改良し、改善しています。Go 1.19のジェネリクス開発では、コミュニティから報告された微妙な問題や特殊なケースに対処することに重点を置き、重要なパフォーマンスの向上(一部のジェネリックプログラムでは最大20%)も実現しました。
ドキュメントコメントは、リンク、リスト、より明確な見出し構文をサポートするようになりました。この変更により、ユーザーは、特に大規模なAPIを持つパッケージで、より明確で、ナビゲーションしやすいドキュメントコメントを作成できます。この変更の一環として、gofmt
はこれらの機能の使用に標準的なフォーマットを適用するようにドキュメントコメントを再フォーマットするようになりました。「Goドキュメントコメント」で詳細を確認してください。
Goのメモリモデルは、sync/atomicパッケージの動作を明示的に定義するようになりました。happens-before関係の正式な定義は、C、C++、Java、JavaScript、Rust、Swiftで使用されているメモリモデルと整合するように改訂されました。既存のプログラムには影響ありません。メモリモデルの更新と合わせて、sync/atomicパッケージに新しい型が追加されました(atomic.Int64やatomic.Pointer[T]など)。これにより、アトミック値の使用が容易になります。
セキュリティ上の理由から、os/execパッケージはPATHの検索で相対パスを尊重しなくなりました。詳細はパッケージドキュメントを参照してください。Go 1.19以降のみでビルドするプログラムでは、golang.org/x/sys/execabsの既存の使用をos/execに戻すことができます。
ガベージコレクターは、新しいガベージコレクションガイドで詳しく説明されているソフトメモリ制限をサポートするようになりました。この制限は、専用のメモリ量を持つコンテナでGoプログラムを可能な限り効率的に実行するために最適化する際に特に役立ちます。
新しいビルド制約unix
は、ターゲットオペレーティングシステム(GOOS
)がUnixライクシステムの場合に満たされます。現在、Unixライクとは、js
、plan9
、windows
、zos
を除くすべてのGoのターゲットオペレーティングシステムを意味します。
最後に、Go 1.19には、初期ゴルーチンのスタックの動的サイズ変更によるスタックコピーの削減、ほとんどのUnixシステムでの追加ファイル記述子の自動使用、x86-64およびARM64の大規模なswitch文に対するジャンプテーブル、ARM64でのデバッガー挿入関数呼び出しのサポート、RISC-VでのレジスタABIサポート、Loongson 64ビットアーキテクチャLoongArch(GOARCH=loong64
)で動作するLinuxの実験的サポートなど、さまざまなパフォーマンスと実装の改善が含まれています。
コードの記述、バグの報告、フィードバックの共有、ベータ版とリリース候補のテストを通じて、このリリースに貢献してくれた皆様に感謝いたします。皆様の努力のおかげで、Go 1.19は可能な限り安定したものとなっています。いつものように、問題が発生した場合は、問題を報告してください。
Go 1.19をお楽しみください!
次の記事:Goの脆弱性管理
前の記事:Goを使った開発に関するフィードバックを共有しましょう
ブログインデックス