Skip to content

Python Sürümlerinin Tarihi: 2'den 3.14'e, AI Winter'lardan 'No-GIL' Devrimine

Python 2 ile Python 3 arasındaki büyük ayrılık nasıl oldu, neden 12 yıl sürdü, ve modern Python sürümlerinde gelen yenilikler (3.10 match, 3.11 hız, 3.12 type system, 3.13 no-GIL) sana ne kazandırıyor — sürümleri sadece numarayla değil ruhuyla anlatıyoruz.

Şükrü Yusuf KAYA
16 min read
Beginner
Python Sürümlerinin Tarihi: 2'den 3.14'e, AI Winter'lardan 'No-GIL' Devrimine
📜 Bu ders neden önemli?
'Hangi Python sürümünü kuracağım?' — Python yolculuğunda ilk önemli karar bu. Yanlış cevap senin değil, yanlış zaman dilimi yaşamış olman. Bu derste sürüm tarihi anlatırken aslında 'doğru kararı nasıl verirsin' onu da öğreneceksin.

Bir programlama dilinin de yaşı vardır#

Bir gün bir Python kursuna girdin (selam!). Bir Stack Overflow yanıtında "Python 2 syntax" gördün. Bir GitHub repo'sunda
python_requires=">=3.8"
yazıyor. Bir blog yazısında "the GIL is gone in 3.13" diyor.
Bu cümlelerin hepsi aynı dile dair. Ama hangi sürümün ne özellik getirdiğini bilmezsen, internet okuduğunda kafan karışacak. Bu ders, kafa karışıklığını baştan engellemek için.
İki başlığa böleceğiz:
  1. Python 2 ve 3 ayrılığı — bu büyük bir hikâye, dil tarihinin en uzun ve sancılı sürümlü ayrılıklarından biri. Hâlâ "Python 2 dinozoru" görüyoruz internette; neden olduğunu bilelim.
  2. Python 3 gelişimi — 3.0'dan 3.14'e neler değişti, hangi sürüm ne kazandırdı, sen bugün hangisini kullanmalısın.
Bu ders bittiğinde, "Python 3.12 vs 3.13: hangisini kullanayım?" sorusuna kendi cevabını verebileceksin.

Python 2: Bir devrin bittiği gün — 1 Ocak 2020#

Python 2.0, 16 Ekim 2000'de yayınlandı. List comprehension, garbage collection, Unicode desteği — bunların hepsi Python 2 ile geldi. O dönem için modern, güçlü bir dildi.
Yıllar geçtikçe Python 2 büyüdü. 2.5, 2.6, 2.7... Her sürüm yeni özellikler getirdi. Python 2.7, 2010'da yayınlandı ve Python 2 serisinin son büyük sürümü oldu — ki bu sürüm 2020'ye kadar bakım gördü.
Ama bir sorun vardı.
Python 2'nin tasarımında, dil olgunlaştıkça net olan bazı eski kararlar geri dönülemez gibi görünüyordu. En kritik üç tanesi:

Sorun 1: String'ler#

Python 2'de
"merhaba"
yazdığında bunun bir byte dizisi mi yoksa Unicode string mi olduğu belirsizdi. Python 2 bunları aynı tipmiş gibi davranıyordu ama altta farklıydılar. Türkçe karakterlerle çalışırsan ister istemez bu çatışmaya tosluyordun:
# Python 2 tipik baş ağrısı print "İstanbul" # bazı sistemlerde çalışır, bazılarında "UnicodeDecodeError"
Bu durum dünya çapında o kadar baş ağrısı yarattı ki Python tasarımcıları "tamam, bu işi temizden başlatmamız lazım" dedi.

Sorun 2:
print
deyim mi, fonksiyon mu?#

Python 2'de
print
bir statement (deyim) idi:
print "merhaba"
Python 3'te
print
bir fonksiyon oldu:
print("merhaba")
Tek bir parantez gibi görünüyor ama bu, dilin tüm söz dizimi felsefesini etkileyen bir karar. (Ve internette "neden bu küçük şey için bütün ekosistemi bozdun" diye yıllar boyu kavga edildi.)

Sorun 3: Tam sayı bölme#

Python 2'de:
5 / 2 # sonuç: 2 (!) — çünkü ikisi de int, sonuç da int
Python 3'te:
5 / 2 # sonuç: 2.5 — daha doğal 5 // 2 # sonuç: 2 — eskisini istiyorsan iki slash
Yine küçük gibi görünüyor ama bilim/finans hesaplarında
5/2 = 2
davranışı sayısız gizli buga yol açtı.

Çözüm: Yeni sürüm, geri uyumsuz#

Python tasarımcıları zor bir karar aldılar: Python 3.0 geriye uyumlu olmayacak. Yani Python 2 kodu otomatik olarak Python 3'te çalışmayacak — yeniden yazılacak ya da çevrilecek.
3 Aralık 2008'de Python 3.0 yayınlandı. Ama ekosistem tamamen yeni sürüme geçmek için neredeyse 12 yıl sürdü. Çünkü:
  • Mevcut milyonlarca satır Python 2 kodu vardı.
  • Büyük kütüphaneler (Django, NumPy, Twisted...) iki sürümü de desteklemek zorundaydı.
  • Şirketler "ne zaman geçeriz?" diye yıllarca erteledi.
Sonunda Python Software Foundation 1 Ocak 2020'yi resmi son tarih olarak ilan etti. O gün geldikten sonra Python 2'ye artık güvenlik güncellemesi bile yapılmıyor.
⛔ Python 2 ile karşılaşırsan
Eğer bir gün eski bir kod tabanında Python 2 ile karşılaşırsan: (1) Hemen kaçma, ama (2) o projenin ya migration'ını planla ya da iletişimde olduğun ekibi uyar. Python 2'ye yeni kod yazmak 2026'da çivi çakarken kürdan kullanmak gibi. Var, ama yapma. Bu kursun hiçbir yerinde Python 2 öğretmeyeceğiz; sadece tarihçeyi bilmen için var.

Python 3: Sürümleri Tek Tek#

Python 3.0 (2008) sonrası her yıl civarında yeni bir minor sürüm geliyor. (
3.X.Y
'de X minor, Y patch.) Aşağıda her anlamlı minor sürümün getirdiği önemli değişiklikleri sıralıyorum — kafanı iyice şişirmek için değil, "şu sürümde şunu kazandık" mantığını oturtmak için.
Aşağıdaki accordion'da her sürümü ayrı ayrı açıp okuyabilirsin.
Hayat değiştiren özellik: f-string.
Önceden string formatlama için
"%s" % x
veya
"{}".format(x)
kullanırdın. f-string ile artık:
name = "Şükrü" print(f"Merhaba {name}, hoş geldin!")
Bu kadar basit. Ve performans olarak da en hızlı yöntem. f-string'leri saymadan modern Python kodu okumak imkansız hale geldi.
Diğer yenilikler: dict insertion order (CPython implementasyon detayı olarak — 3.7'de resmî oldu), variable annotation syntax (
x: int = 5
), pathlib iyileştirmeleri.

"Hangisini kuracağım?" sorusuna kesin cevap#

Stack Overflow'da bu soru her gün soruluyor. Cevabım kestirmeden:
1. Yeni öğrenmeye başlıyorsan: Python 3.12 veya 3.13 (kararlı sürümler).
2. Bir kütüphane veya araç kullanacaksan: O kütüphanenin desteklediği sürümü kontrol et. Çoğu modern kütüphane Python 3.9+ destekliyor; ama bazıları henüz 3.13'e geçmedi.
3. Production'da çalıştırıyorsan: En son stable (kararlı) minor sürümün önceki sürümünü kullan. Yani 3.13 stable çıktıysa, 3.12'yi kullan — daha test edilmiştir, kütüphane uyumu daha iyidir.
4. Linux dağıtımının paket yöneticisinden gelen Python'u kullanmamayı tercih et. Linux dağıtımları sistem stabilitesi için eski sürümleri kullanır; bunlar 1-2 yıl gerideyse şaşırma. Bu kurs boyunca bunu nasıl çözeceğimizi göstereceğim (pyenv ile).
5. macOS'a Apple'dan gelen Python'u da kullanma. Aynı sebepten — sistem Python'una dokunmamak en iyisi.
6. Windows kullanıcısıysan: python.org'dan resmi installer en güvenli yol. Microsoft Store'dan kurmaktan kaçın (PATH sorunları yaratabiliyor).
Bunlar bu kursun ileriki derslerinde tek tek ele alınacak — ama temel mantığı şimdi biliyorsun.
bash
# Komut satırından Python sürümünü kontrol etmek için:
python --version
# Veya:
python3 --version
 
# Detaylı sürüm bilgisi:
python -c "import sys; print(sys.version)"
 
# Çıktı tipik olarak:
# Python 3.12.7 (main, Oct 1 2024, 11:15:50) [Clang 14.0.6 ]
Sürüm sorgulamak için terminal komutları. İlerleyen kurulum derslerinde her platform için detaylandıracağız.

Sürümlerin "yaşam ömrü" — kim ne zaman emekli olur?#

Python her minor sürümünü 5 yıl boyunca destekliyor. İlk 1.5-2 yıl yeni özellik ve bug fix gelir; kalan yıllarda sadece güvenlik düzeltmeleri yapılır. Sonra End of Life (EOL) olur — yani artık kimse o sürüme dokunmaz.
Yaklaşık takvim:
SürümÇıkışEOL
3.8Ekim 2019Ekim 2024 (geçti)
3.9Ekim 2020Ekim 2025
3.10Ekim 2021Ekim 2026
3.11Ekim 2022Ekim 2027
3.12Ekim 2023Ekim 2028
3.13Ekim 2024Ekim 2029
3.14Ekim 2025Ekim 2030
Bu tablo işte sana "ne kadar 'yaşar' bu sürüm" diyor. Yeni bir proje başlatıyorsan en az 4 yıl ileri bakar bir sürüm seç. 3.12 ya da daha yeni demek, projenin 2028'e kadar nefes alacağı anlamına geliyor.
🪟 Windows kullanıcısına özel not: py launcher
Windows'a Python kurduğunda bilgisayara
py.exe
adında bir 'launcher' da yüklenir. Bu sayede
py -3.11 script.py
veya
py -3.12 script.py
gibi sürüm seçerek çalıştırabilirsin. macOS/Linux'taki
python3.11
,
python3.12
vs.'lerin Windows karşılığı diyebiliriz. İlerideki kurulum derslerinde bunu görsel olarak göstereceğim.

Bu derste neler kazandın?#

✓ Python 2 ile Python 3 ayrılığının neden ve nasıl olduğu — string belirsizliği, print fonksiyonu, integer division.
✓ Bu ayrılığın 12 yıl sürdüğü ve 1 Ocak 2020'de Python 2'nin resmen emekli olduğu.
✓ Python 3.6'dan 3.14'e her sürümün getirdiği temel özellikler — f-string, dataclass, walrus, match, no-GIL, JIT.
✓ Hangi sürümü kuracağına dair pratik kararlar — 3.12 veya 3.13 modern başlangıç için.
✓ Sürümlerin EOL takvimi — uzun yaşayacak proje için en az 3.12.
Sıradaki ders: Python yorumlayıcılarının çeşitleri. CPython, PyPy, MicroPython, Jython, IronPython, Pyodide... "Bunlar da neyin nesi?" diyeceğin bu isimlerin her birinin ne işe yaradığını öğreneceksin. Spoiler: çoğunluk için CPython, ama diğerlerinin niş kullanımları seni bir gün hayatın kurtarabilir.

Frequently Asked Questions

Net cevap: bilinmiyor. Guido van Rossum dahil çekirdek geliştiriciler defalarca 'Python 4'e ihtiyaç görmüyoruz' dediler. Python 2→3 ayrılığının yaratağı travma kimsede tekrar yaşanma isteği bırakmadı. Bunun yerine Python 3.x sürümleri yıldan yıla evrim geçiriyor. 3.13'ün no-GIL'i veya 3.12'nin yeni type syntax'i, başka dillerde 'major version'a yazılacak şeyler — ama Python ekibi geri-uyumluluğu koruyarak ekliyor. Yani yıllarca 'Python 3.X' göreceğiz, 4 değil.

Yorumlar & Soru-Cevap

(0)
Yorum yazmak için giriş yap.
Yorumlar yükleniyor...

Related Content