Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Go 1.27からのGODEBUG / Go 1.27 リリースパーティ #go127party
Search
mazrean
August 18, 2026
Programming
460
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
Transcript
24 slides
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
More Decks by mazrean
See All by mazrean
kubernetes コンポーネント開発入門 / 新卒N年目の勉強会&交流会!〜〇〇への誘い〜 #n_study
mazrean
0
350
型解析で実現する Go の言語内 DSL / Conference に Go! タイムテーブルの歩き方 for Gophers
mazrean
0
260
瑠璃の宝石に学ぶ技術の声の聴き方 / 【劇場版】アニメから得た学びを発表会2026 #エンジニアニメ
mazrean
0
710
Go Proposal Weekly Digestの作り方 / Go Connect #11
mazrean
0
380
WebComponentとSSGで作る 個人開発Webフロントエンド / TechTalk #69
mazrean
0
310
Go 1.26でのsliceのメモリアロケーション最適化 / Go 1.26 リリースパーティ #go126party
mazrean
1
860
GC25 Recap: The Code You Reviewed is Not the Code You Built / #newt_gophercon_tour
mazrean
0
700
社会人になっても趣味開発を続けたい! / traPavilion
mazrean
1
660
KessokuのDIにおけるgoroutineスケジューリング / golang.tokyo #41
mazrean
0
780
Other Decks in Programming
See All in Programming
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
1
2k
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
3
1.7k
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
1.2k
Claude Code ハーネスDeep Dive – 君はどこまで制御する? -
takateeen_knj
6
5.7k
止まらない比較を止める — 余帰納法で無限ストリームを比べる
tarao
0
140
例外からRich Errorsまで Kotlinエラーハンドリングの進化を読み解く
shiita0903
0
130
クラウドエージェントは、 何がそんなに便利なのか / what makes cloud agents so useful
rkaga
5
860
Engineering Biometric UX Across Android Versions | DroidKnights 2026
ryunen344
1
200
動画プレイヤーはなぜカクつくのか 〜Flutterのレンダリングとネイティブの境界を解剖する〜
naruogram
0
340
そのデザイントークン、Flutterでも同じ見た目になりますか?
nakamizu
0
350
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
1.7k
Spec-driven Development with AI
simas
PRO
0
2.3k
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.9k
What's in a price? How to price your products and services
michaelherold
247
13k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
610
Navigating Weather and Climate Data
rabernat
0
590
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
750
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.3k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
330
Building a Scalable Design System with Sketch
lauravandoore
464
34k
The SEO identity crisis: Don't let AI make you average
varn
0
630
Practical Orchestrator
shlominoach
192
12k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1.1k