Semantic Versioning (SemVer) nedir? 2.4.1 sürümündeki her sayı neyi ifade eder?
Cevap
Semantic Versioning, sürüm numarasını MAJOR.MINOR.PATCH biçiminde vererek bir güncellemenin geriye dönük uyumluluk açısından ne anlama geldiğini iletmenin standart bir yoludur (semver.org, sürüm 2.0.0).
2.4.1 için:
- MAJOR (2): geriye dönük uyumsuz (breaking) API değişikliği yapıldığında artar.
- MINOR (4): geriye uyumlu yeni özellik eklendiğinde artar; PATCH sıfırlanır.
- PATCH (1): geriye uyumlu hata düzeltmesinde artar.
| Değişiklik | Eski | Yeni |
|---|---|---|
| Bir bug düzeltildi | 2.4.1 | 2.4.2 |
| Yeni opsiyonel parametre eklendi | 2.4.1 | 2.5.0 |
| Bir public metot kaldırıldı | 2.4.1 | 3.0.0 |
Ek kurallar
- 0.y.z: ilk geliştirme aşaması; API her an değişebilir, kararlı kabul edilmez.
- Pre-release:
1.0.0-alpha.1,1.0.0-rc.2; normal sürümden önce sıralanır. - Build metadata:
1.0.0+20261022; sürüm önceliğini etkilemez. - Yayınlanmış bir sürümün içeriği değiştirilmez; düzeltme yeni sürümle yapılır.
Bağımlılık aralıkları (npm örneği)
{
"dependencies": {
"express": "^4.19.2",
"lodash": "~4.17.21",
"left-pad": "1.3.0"
}
}^4.19.2:>=4.19.2 <5.0.0(minor ve patch güncellemelerine izin).~4.17.21:>=4.17.21 <4.18.0(yalnızca patch).1.3.0: tam sürüm.
0.x sürümlerde ^ daha dar davranır: ^0.3.1 yalnızca <0.4.0 kabul eder.
Neden lock dosyası?
SemVer bir sözdür, garanti değil; bazı paketler minor sürümde de kırıcı değişiklik yapabilir. package-lock.json, poetry.lock, go.sum gibi dosyalar tüm ortamlarda aynı sürümlerin kurulmasını sağlar.
Otomasyon
Conventional Commits (feat:, fix:, feat!:) ile commit mesajlarından sürüm numarası ve changelog otomatik üretilebilir (semantic-release, release-please).
İlgili Yazılım Geliştirme Süreçleri soruları
- Testi olmayan büyük bir legacy kod tabanında değişiklik yapmanız gerekiyor. Nasıl ilerlersiniz?
- Teknik borç (technical debt) nedir? Ekipte teknik borcu nasıl yönetir ve iş tarafına nasıl anlatırsınız?
- CI/CD nedir? Continuous delivery ile continuous deployment arasındaki fark nedir? Tipik bir pipeline'da hangi adımlar olur?
- TDD (Test-Driven Development) nedir? Red-Green-Refactor döngüsünü bir örnekle anlatın.
- Test piramidi nedir? Unit, integration ve end-to-end testler arasındaki farklar nelerdir?
- Code review'da nelere dikkat edersiniz? İyi bir pull request nasıl hazırlanır?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.