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şiklikEskiYeni
Bir bug düzeltildi2.4.12.4.2
Yeni opsiyonel parametre eklendi2.4.12.5.0
Bir public metot kaldırıldı2.4.13.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).

  1. Testi olmayan büyük bir legacy kod tabanında değişiklik yapmanız gerekiyor. Nasıl ilerlersiniz?ZorYazılım Geliştirme SüreçleriYazılım Müh.
  2. Teknik borç (technical debt) nedir? Ekipte teknik borcu nasıl yönetir ve iş tarafına nasıl anlatırsınız?ZorYazılım Geliştirme SüreçleriYazılım Müh.
  3. CI/CD nedir? Continuous delivery ile continuous deployment arasındaki fark nedir? Tipik bir pipeline'da hangi adımlar olur?OrtaYazılım Geliştirme SüreçleriYazılım Müh.
  4. TDD (Test-Driven Development) nedir? Red-Green-Refactor döngüsünü bir örnekle anlatın.OrtaYazılım Geliştirme SüreçleriYazılım Müh.
  5. Test piramidi nedir? Unit, integration ve end-to-end testler arasındaki farklar nelerdir?OrtaYazılım Geliştirme SüreçleriYazılım Müh.
  6. Code review'da nelere dikkat edersiniz? İyi bir pull request nasıl hazırlanır?OrtaYazılım Geliştirme SüreçleriYazılım Müh.

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle