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 dakikalık okuma
Başlangıç📜 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 yazıyor. Bir blog yazısında "the GIL is gone in 3.13" diyor.
python_requires=">=3.8"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:
- 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.
- 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 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:
"merhaba"# 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?#
printPython 2'de bir statement (deyim) idi:
printprint "merhaba"
Python 3'te bir fonksiyon oldu:
printprint("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 davranışı sayısız gizli buga yol açtı.
5/2 = 2Çö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. ('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.
3.X.YAş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 veya kullanırdın. f-string ile artık:
"%s" % x"{}".format(x)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 (), pathlib iyileştirmeleri.
x: int = 5"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.8 | Ekim 2019 | Ekim 2024 (geçti) |
| 3.9 | Ekim 2020 | Ekim 2025 |
| 3.10 | Ekim 2021 | Ekim 2026 |
| 3.11 | Ekim 2022 | Ekim 2027 |
| 3.12 | Ekim 2023 | Ekim 2028 |
| 3.13 | Ekim 2024 | Ekim 2029 |
| 3.14 | Ekim 2025 | Ekim 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 adında bir 'launcher' da yüklenir. Bu sayede veya gibi sürüm seçerek çalıştırabilirsin. macOS/Linux'taki , vs.'lerin Windows karşılığı diyebiliriz. İlerideki kurulum derslerinde bunu görsel olarak göstereceğim.
py.exepy -3.11 script.pypy -3.12 script.pypython3.11python3.12Bu 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.
Sık Sorulan Sorular
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...