Open2

Go Module Version numbering

taitotaito

Goのモジュールのバージョンについての理解しなければならない理由

  • モジュール作成者側として
    • モジュールの安定性や広報互換性を周知するために、バージョンを適切に割り当てる必要があるため。
  • モジュール利用者側として
    • バージョン更新後のモジュールの安定性や広報互換性を、知る必要があるため。

概要

Semverに従う。

  • v0.x.x (Major versionが0)
    • 開発中であることを意味する。
    • 安定していない。ちゃんと動かないかも。
    • 開発中、後方互換性がない変更が入るかも。開発が進むにつれて、現在公開されているAPIの仕様が突然後方互換性のない変更がされる可能性があります、ということ。
  • v1.x.x (Major versionが更新された)
    • 公開されているAPIが、後方互換性のない更新がされたことを意味する。
    • あるコードが、更新されたAPIを使用していた場合、そのコードは動かなくなる可能性がある。
  • vx.4.x (Minor versionが更新された)
    • 公開されているAPIが、後方互換性のある更新がされたことを意味する。
    • あるコードが、更新されたAPIを使用していた場合、そのコードは今まで通り動く。
    • 後方互換性のある更新とは、例えば、APIとして新しい関数が「追加」とか、enum値が追加された、などなど。
  • vx.x.1 (Patch versionが更新された)
    • 公開されているAPIに影響のない更新がされたことを意味する。
  • v.x.x.x-beta.2 (Prerelease identifierが更新された)
    • バージョンx.x.xのプレリリースバージョンであることを意味する。すなわち。
    • 大体動くけど、一部動かないとかあるかも。
    • バージョンx.x.xがリリースされるまでの間で、後方互換性がない変更が入るかも。。開発が進むにつれて、現在公開されているAPIの仕様が突然後方互換性のない変更がされる可能性があります、ということ。