모듈 버전 번호
모듈 버전 번호
모듈 개발자는 버전 번호의 각 부분을 써서 그 버전의 안정성과 하위 호환성을 알려 줍니다. 새 릴리스를 낼 때마다 모듈의 릴리스 버전 번호는 직전 릴리스 이후 모듈에 어떤 변화가 있었는지를 구체적으로 반영해요. 외부 모듈을 쓰는 코드를 개발할 땐 버전 번호로 그 모듈의 안정성을 가늠할 수 있고, 내 모듈을 개발할 땐 내 버전 번호가 다른 개발자에게 내 모듈의 안정성과 하위 호환성을 알려 주는 역할을 합니다. 이 글에서는 모듈 버전 번호가 무엇을 의미하는지 정리합니다.
출처: Go 공식 문서
시맨틱 버저닝 모델
릴리스된 모듈은 시맨틱 버저닝(semantic versioning) 모델의 버전 번호와 함께 게시됩니다. 버전 번호의 각 부분이 모듈의 안정성과 하위 호환성을 어떻게 나타내는지는 아래 표와 같습니다.
| 버전 단계 | 예시 | 개발자에게 전하는 메시지 |
|---|---|---|
| 개발 중 (In development) | v0.x.x |
모듈이 아직 안정적이지 않으니, API가 바뀔 수 있다. 안정적인 API를 원한다면 아직 쓰지 않는 게 좋다. |
| 사전 릴리스 (Pre-release) | vx.x.x-beta.2 |
이 버전은 아직 준비 중이며, 이전 버전과 호환되지 않을 수 있다. |
| Minor 버전 | vx.4.x |
새 기능이 추가되지만 이전 버전과 하위 호환된다. |
| Patch 버전 | vx.x.1 |
하위 호환되는 버그 수정이 들어 있다. |
| Major 버전 | v2.0.0 |
이전 버전과 호환되지 않는 변경이 있다. |
버전 번호의 역할
개발자가 자신의 코드에서 외부 모듈을 사용할 때, 업그레이드를 고려한다면 버전 번호로 외부 모듈의 안정성을 파악할 수 있습니다. 내 모듈을 개발할 때는 그 반대로, 내 버전 번호가 다른 개발자들에게 내 모듈의 안정성과 하위 호환성을 신호로 전달하죠.
시맨틱 버저닝 모델에서 각 부분을 살펴볼게요.
- Major 버전 — 하위 호환되지 않는 변경이 있을 때 올라갑니다. 예를 들어 모듈의 메이저 버전이 올라가면 사용자는 자기 코드를 바꿔야 할 수 있어요. 메이저 버전
2이상이 되면 모듈 경로에도 메이저 버전이 붙습니다.
module example.com/mymodule/v2 v2.0.0
- Minor 버전 — 하위 호환되는 새 기능이 추가될 때 올라갑니다.
vx.4.x
- Patch 버전 — 하위 호환되는 버그 수정이 있을 때 올라갑니다.
vx.x.1
v0과 사전 릴리스
- v0 번호(
v0.x.x) — 메이저 버전0은 모듈이 아직 안정적이지 않다는 뜻입니다. 이 시점에는 언제든 호환되지 않는 변경이 일어날 수 있어요. - 사전 릴리스 버전 — 안정성이 보장되지 않는 준비 중인 릴리스입니다.
vx.x.x-beta.2
더 알아보기 (Learn more)
- 코드에서 외부 패키지를 사용할 때 의존성을 관리하는 법은 'Managing dependencies'를 보세요.
- 모듈을 게시할 때 버전 번호를 달고 저장소에 태그를 거는 절차는 "Publishing a module"을 참고하세요.
- 시맨틱 버저닝 자체에 대한 자세한 규칙은 semver.org를 확인하세요.