Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Go 1.27からのGODEBUG / Go 1.27 リリースパーティ #go127party
Search
mazrean
August 18, 2026
Programming
280
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Go 1.27からのGODEBUG / Go 1.27 リリースパーティ #go127party
mazrean
August 18, 2026
More Decks by mazrean
See All by mazrean
kubernetes コンポーネント開発入門 / 新卒N年目の勉強会&交流会!〜〇〇への誘い〜 #n_study
mazrean
0
140
型解析で実現する Go の言語内 DSL / Conference に Go! タイムテーブルの歩き方 for Gophers
mazrean
0
97
瑠璃の宝石に学ぶ技術の声の聴き方 / 【劇場版】アニメから得た学びを発表会2026 #エンジニアニメ
mazrean
0
570
Go Proposal Weekly Digestの作り方 / Go Connect #11
mazrean
0
270
WebComponentとSSGで作る 個人開発Webフロントエンド / TechTalk #69
mazrean
0
200
Go 1.26でのsliceのメモリアロケーション最適化 / Go 1.26 リリースパーティ #go126party
mazrean
1
730
GC25 Recap: The Code You Reviewed is Not the Code You Built / #newt_gophercon_tour
mazrean
0
600
社会人になっても趣味開発を続けたい! / traPavilion
mazrean
1
560
KessokuのDIにおけるgoroutineスケジューリング / golang.tokyo #41
mazrean
0
670
Other Decks in Programming
See All in Programming
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
490
「つくるAI」だけではバグは見つからない ~テストに必要な「見つけるAI」を分離させる戦略~
mfunaki
0
230
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
900
PyO3 で既存 Python 評価器を Rust core 化する ー wasm-bindgen でブラウザにも配るための設計
kdash
1
210
[PyCon KR 2026] More Variants, More Diversity for AI Accelerators
achimnol
0
130
tsc.rip を支える技術 / Kyoto.なんか #8
susisu
0
4.2k
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
0
170
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
190
Hello, Hiroshima Geospatial Data! — Exploring DoboX with Python
ra0kley
0
150
MySQLとPostgreSQLって何が違うの?
akagami
PRO
0
160
Hono + Inertia + React で LP を構築した話
oukayuka
2
200
GKE アップグレード前に知っておきたい Blue/Green と PDB の関係
stkk
0
130
Featured
See All Featured
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
360
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Evolving SEO for Evolving Search Engines
ryanjones
0
280
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
310
Technical Leadership for Architectural Decision Making
baasie
3
550
Making Projects Easy
brettharned
120
6.7k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
310
Chasing Engaging Ingredients in Design
codingconduct
0
290
Optimizing for Happiness
mojombo
378
71k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Transcript
Go 1.27 リリースパーティ Go 1.27からのGODEBUG @mazrean
マズリーン mazrean ▪ Goでツール等を作っている • DIツール Kessoku ▪ Proposalまとめサイト開発 ▪
SRE @DeNA @mazrean22 2
GODEBUG知っている✋
1.27でGODEBUGフラグが いくつか消えるのに気が付いた✋
目次 1 GODEBUGとは 2 GODEBUG削除ポリシー策定 3 これからの注意点 4 まとめ 5
Go 1の後方互換性 ソースコードレベルの後方互換性を保障[1] ▪ 新バージョンでもコンパイル が通る ▪ 正しく実行できる ▪ 例外はある
• • セキュリティ上の問題・コンパイラバグ 過去にも複数回発生 [1]: https://go.dev/doc/go1compat 6
Q. バージョン更新で絶対に壊れないか?
Q. バージョン更新で絶対に壊れないか? A. 壊れるときは壊れる
Kubernetesの事例 毎年1つ程度、Go起因の破壊的変更 が発生[2] ▪ 1.17: net.ParseIPで先頭0付きアドレス拒否 • • • 一部の設定が拒否されるようになった
最終的に1.17以前のコピー実装を使用して対応 例) 0127.0000.0000.0001 が拒否されるように ▪ 1.15: SANsなし証明書CN fallback削除 • リリースノートでユーザーへ警告して対応 [2]: https://github.com/golang/go/discussions/55090 9
GODEBUGによる後方互換性拡張 1.21 以降、GODEBUGで挙動を戻せる ように[3] ▪ フラグを設定して切り替え • • 環境変数・//go:debug コメント・go.modで設定
例) GODEBUG=http2client=0 ▪ 一度入れたフラグは、最低2年維持 • 永続含む、2年以上維持する場合もあり [3]: https://go.dev/blog/compat 10
目次 1 GODEBUGとは 2 GODEBUG削除ポリシー策定 3 これからの注意点 4 まとめ 11
増えていくGODEBUGフラグ 1.26時点、フラグは53個にまで増加 ▪ Go Teamのメンテナンス負担 が大きい • テストで網羅しきれない ▪ 削除数より追加数の方が多い
• 削除自体はされているが少ない 12
13
GODEBUGフラグ削除手順 永続 or 削除予定 を導入時点で決める ▪ 削除予定なら削除予定リリース も設定 ▪ 1リリース前
に削除予定を必ず宣言 新規フラグ 既存フラグ Go issue trackerに記録 permanent slated for removal Proposal accept 必須 removed 14
GODEBUGフラグ削除手順 永続 or 削除予定 を導入時点で決める ▪ 削除予定なら削除予定リリース も設定 ▪ 1リリース前
に削除予定を必ず宣言 新規フラグ 既存フラグ Go issue trackerに記録 permanent slated for removal Proposal accept 必須 removed 15
GODEBUGフラグ削除手順 永続 or 削除予定 を導入時点で決める ▪ 削除予定なら削除予定リリース も設定 ▪ 1リリース前
に削除予定を必ず宣言 新規フラグ 既存フラグ Go issue trackerに記録 permanent slated for removal Proposal accept 必須 removed 16
削除済みGODEBUGフラグの挙動 最終的なデフォルト値以外 の有効値は拒否 ▪ コンパイルエラー ・起動時panicする • ただし、実行中のos.Setenvでの動的設定は例外 ▪ 最終的なデフォルト値なら正常に動作
例) gotypesalias バージョン デフォルト値 1.22(導入) gotypesalias=0 1.23 gotypesalias=1 1.27 フラグ削除 gotypesalias=0で コンパイルエラー・panic! 17
削除済みフラグの扱い internal/godebugs/table.go に記述 古い値を判定する関数が設定 18
削除予定GODEBUGフラグのwarn 削除予定フラグはgo vetで報告する ▪ go.mod・コメント設定 のみが対象 • 環境変数 で設定しているものは気づけない ▪
まだ削除予定フラグがないため未実装 19
目次 1 GODEBUGとは 2 GODEBUG削除ポリシー策定 3 これからの注意点 4 まとめ 20
1.27時点で考えるべきこと 削除フラグを使用箇所がないことを確認 ▪ 環境変数で使っていると起動時panic ▪ 1.27で削除されるのは以下 • • • •
• • • gotypesalias tlsunsafeekm tlsrsakex tls3des tls10server x509keypairleaf asynctimerchan 21
将来的に考えるべきこと GODEBUGフラグは短期かつ最小限で使う ▪ 使用しているGODEBUGフラグ把握 ▪ 非permanentフラグからの脱却 • 4バージョン後、削除可能性あり ▪ 使わないで良いのがベスト(個人的見解)
• 使うならリリースノートは注視する 22
目次 1 GODEBUGとは 2 GODEBUG削除ポリシー策定 3 これからの注意点 4 まとめ 23
まとめ ▪ 後方互換性 のためGODEBUGフラグがある ▪ GODEBUGフラグの削除ルール が決まった • • 永続のもの以外は導入時に削除予定リリースが設定
1リリース前までに削除予定であることが宣言 ▪ 削除されると最終デフォルト値以外拒否 • コンパイルエラー ・起動時panic ▪ 1.27で7個のフラグが削除される • 特に環境変数 で設定している場合は注意 24