Python 3.15.0, 9 Ekim 2026'da yayımlandı. Günlük kodu en çok etkileyecek değişiklikleri ve yükseltmeden önce bakılması gerekenleri derledim.
Açık "lazy import" (PEP 810)
Büyük bağımlılıkları olan komut satırı araçlarında başlangıç süresi ciddi bir sorun. 3.15 ile bir import'u, modül ilk kullanıldığında yüklenecek şekilde işaretleyebiliyorsunuz:
lazy import pandas as pd
lazy from requests import Session
def rapor():
df = pd.DataFrame(...) # pandas burada yüklenir
--help çalıştırıldığında pandas hiç yüklenmez. Güvenlik açısından not: modül yüklenirken oluşan hatalar artık import satırında değil, ilk kullanımda ortaya çıkar; hata yönetiminizi buna göre gözden geçirin.
Yerleşik frozendict (PEP 814)
Değiştirilemez, hash'lenebilir sözlük nihayet standart kütüphanede değil doğrudan yerleşik tür olarak geldi. Yapılandırma nesneleri ve önbellek anahtarları için kullanışlı:
AYARLAR = frozendict(debug=False, max_upload=2_000_000)
AYARLAR["debug"] = True # TypeError
UTF-8 artık varsayılan (PEP 686)
open() gibi fonksiyonlar, kodlama belirtilmediğinde artık sistem yerel ayarından bağımsız olarak UTF-8 kullanıyor. Türkçe karakterlerle Windows'ta yaşanan klasik UnicodeDecodeError sorunlarının büyük kısmı ortadan kalkıyor. Ancak eski cp1254 (Windows Türkçe) kodlamalı dosyaları okuyan kodunuz varsa artık kodlamayı açıkça belirtmeniz gerekir:
with open("eski_rapor.txt", encoding="cp1254") as f:
...
Diğer yenilikler
- PEP 798: Liste ve sözlük üreteçlerinde açma (unpacking):
[*parca for parca in parcalar]. - PEP 661: Yerleşik sentinel türü; "değer verilmedi" ile
None'ı ayırmak için. - Tachyon: Yüksek frekanslı, örnekleme tabanlı yeni profilleyici; profil araçları PEP 799 ile ayrı bir pakette toplandı.
- JIT: Deneysel JIT, x86-64 Linux'ta standart yorumlayıcıya göre ortalama %7-8 hız artışı sağlıyor.
- Tip sistemi:
TypedDictiçin tipli ek alanlar (PEP 728),TypeForm(PEP 747). - Serbest iş parçacıklı (free-threaded) yapı: C eklentileri için kararlı ABI (PEP 803, 820, 793); macOS kurulumlarında artık varsayılan olarak geliyor.
Yükseltmeden önce
- Dosya okuyan/yazan kodda
encodingparametresi verilmemiş yerleri arayın (-X warn_default_encodingeski sürümlerde bunu gösterir). - Bağımlılıklarınızın 3.15 için tekerlek (wheel) yayımlayıp yayımlamadığını kontrol edin.
- CI'da 3.14 ve 3.15'i birlikte çalıştırarak geçiş yapın.
Lazy import'u kendi araçlarınızda denediyseniz başlangıç süresindeki farkı paylaşın.
