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
140
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
瑠璃の宝石に学ぶ技術の声の聴き方 / 【劇場版】アニメから得た学びを発表会2026 #エンジニアニメ
mazrean
0
550
Go Proposal Weekly Digestの作り方 / Go Connect #11
mazrean
0
260
WebComponentとSSGで作る 個人開発Webフロントエンド / TechTalk #69
mazrean
0
200
Go 1.26でのsliceのメモリアロケーション最適化 / Go 1.26 リリースパーティ #go126party
mazrean
1
720
GC25 Recap: The Code You Reviewed is Not the Code You Built / #newt_gophercon_tour
mazrean
0
580
社会人になっても趣味開発を続けたい! / traPavilion
mazrean
1
550
KessokuのDIにおけるgoroutineスケジューリング / golang.tokyo #41
mazrean
0
660
作って理解するGOCACHEPROG / Go Conference 2025(Workshop)
mazrean
0
700
実用的なGOCACHEPROG実装をするために / golang.tokyo #40
mazrean
1
870
Other Decks in Programming
See All in Programming
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
500
AI Readyの正体はデータマネジメントだ メダリオン2.0の最前線
freee
PRO
0
360
How I Won Prize Money at a Hackathon Using Codex and Symphony Alpha
yasei_no_otoko
0
120
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
250
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
270
tsc.rip を支える技術 / Kyoto.なんか #8
susisu
0
140
承認済みなのに差戻しできてしまうバグ、型で潰せます
shinchit
0
100
freeeにおけるEvalsの実践例の紹介
freee
PRO
0
140
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
720
PyConJP2026_wat_Python × Signal Processing: How to Draw Pictures with Sound Using Spectrogram Art
wat
0
280
30年振りにコンパイラの定数整数除算を改善した
herumi
9
4.1k
リアルな遅延を測る仕様
kota_yata
1
120
Featured
See All Featured
First, design no harm
axbom
PRO
2
1.3k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
From π to Pie charts
rasagy
0
320
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
180
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
For a Future-Friendly Web
brad_frost
183
10k
Being A Developer After 40
akosma
91
590k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
210
The browser strikes back
jonoalderson
0
1.5k
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
580
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
660
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