0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Go: 1.23から1.25へのアップデート対応

0
Posted at

概要

本記事では私が管理しているコードの定期アップデートの Go 1.23 から 1.25 へのアップデートしたさいの振り返りを記載します。

  • 前提としての Go のサポートポリシー
  • アップデートのサイクル
  • やったこと

について記載していきます。

Go のサポートポリシー

公式の以下の個所に記載があります。

Each major Go release is supported until there are two newer major releases. For example, Go 1.5 was supported until the Go 1.7 release, and Go 1.6 was supported until the Go 1.8 release. We fix critical problems, including critical security problems, in supported releases as needed by issuing minor revisions (for example, Go 1.6.1, Go 1.6.2, and so on).
https://go.dev/doc/devel/release#policy

メジャーバージョンごとに最新2つのリリースをサポートする方針です(※セキュリティ対策などのクリティカルな問題がある場合は例外対応あり)。概ね半年に1回リリースがあります。

他の言語に比べると比較的頻度は高めですが、Go 1.x の間は API のインターフェース変更などの互換性担保に努める話があるため

どうにか対応できている感じがあります。

※新しいパッケージや関数が追加されていったり、OS などの最低要件は変わっていくので、それなりに変化はありますが

また、流石に Experimental なものは変更の可能性があるので(パッケージが変わる/消える、実装が変わってインターフェースは担保されてるが挙動が変わるなど)、そこの辺りは使わないようにして対応しています。

アップデート対応サイクル

利用しているマイナーバージョンが約1年でサポートから外れるので、アップデートは年に1回対応しています。

たまたま使い始めたタイミングが v1 の奇数マイナーバージョンだったので、夏に奇数マイナーバージョンをアップデートするサイクルになっています。今年はそれが1.23(2024-08-13)から1.25(2025-08-12)でした。

やったこと

他の言語とやることはあまり変わらないと思いますが

  • リリースノートを読んで影響箇所があるかの調査
  • 利用ツール/モジュールの対応状況の調査
    • 雑にやるならツールチェーンを 1.25 にアップしてテスト & Lint を実行して問題ないか見る
    • golangci-lintv1 -> v2 になって マイグレーションガイドが出てました
    • 問題があったら GODEBUG を設定してデバッグ
  • 開発環境にリリースして様子見
  • 様子見して問題なければ本番環境へリリース

といった次第です。

Generics をはじめとした途中から導入された大きめの機能はあまり使っていなかったという影響もあってか、大きな対応はなかったようです(記憶もちょっとない状態でした)。記録が残っている範囲だと以下の辺りは気にしていたようです。

math/rand/v2 の利用

資料見つからなかったのですが、 Co Conference 2025 の LT でもテーマになっていたようですね。

v1.22 のリリースノートに変更点があるので、該当部分の修正をしました。

tools.go のブランクインポートの代替

1.24 で tools が入ったりしましたが、Go に限らず外部ツール管理は別で対応することにしました。詳細は本カレンダー2日目の記事を参照してください。

encoding/jsonomitzero

これは使うケースがあると思うので覚えておこうと思います。

GOMAXPROCS の挙動変更の確認

昔関わっていたプロジェクトで使っていたような記憶があったので声をかけておきました。

おわりに

扱っているコードベースが小さかったり、用途が限定的なものなのですんなりアップデートできてしまったようで振り返りの記録があまり残っておらずでした。問題なくアップデートできるようにメンテされていることを評価するか、私のトライが足りないのかは悩ましいところです。

来年は開発にもう少し時間が避けるようにしていきたいなと思いました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?