RETRO

Yazılım ve Yapay Zekâ · programming language · software · Windows, macOS, Linux

Python 3.15.0: tembel modüller, donmuş sözlükler ve iki haftada gelen iki yama

Python 3.15.0: tembel modüller, donmuş sözlükler ve iki haftada gelen iki yama
Görsel: yayıncı basın kiti

Bu ay masamızda ne var, biliyor musunuz? Bir oyun yok, bir ekran kartı da yok. Bir programlama dili var. Python 3.15.0, 9 Ekim 2026'da yayınlandı. Sürüm yöneticisi Hugo van Kemenade. Her yıl ekim ayında gelen bu sürümlerden biri daha diye geçip gidebilirsiniz, ama bu sefer değişikliklerin bir kısmı her gün yazdığınız koda dokunuyor. Hemen söyleyeyim: bu yazı sürümün python.org'daki sayfasına, ilgili PEP belgelerine ve sürüm notlarına dayanıyor. Biz kurup ölçmedik.

Künye: Python 3.15.0. Python Software Foundation. Açık kaynak, ücretsiz. İndirme adresi python.org.

Nereye kuruluyor?

Windows kullanıcıları için önerilen yol artık Python install manager (py install 3.15 yazıyorsunuz, iş bitiyor). İsteyene 64 bit, 32 bit ve ARM64 kurucular da var, gömülebilir paketler de. 64 bit Windows sürümleri bu kez tail-calling yorumlayıcıyla geliyor. Bu, yorumlayıcının iç döngüsünün derleyiciye daha uygun bir biçimde kurulması demek. Hız farkının ne kadar olduğunu sürüm sayfası Windows için ayrıca vermiyor.

macOS tarafında 10.15 ve sonrası için kurucu var. free-threading (GIL'siz, yani genel yorumlayıcı kilidi olmadan çalışan yapı) artık varsayılan olarak kuruluyor. Linux'çular her zamanki gibi kaynak arşivini (gzip ve xz, SHA-256 sağlama değerleri ve Sigstore imzalarıyla) alıyor. Asıl beklenen ise dağıtımlarının paketi. python.org Linux için ikili dosya dağıtmıyor, bunu hep dağıtımlar yapıyor. Bir de Android (aarch64 ve x86_64) için gömülebilir paketler ve iOS için bir XCframework var. Telefonda Python, bir zamanlar ancak şaka olarak söylenirdi!

Gelelim yorumlayıcıya

Tembel importlar (PEP 810). Bir modülü dosyanın başında içe aktarıyorsunuz ama o modül gerçekten kullanılana kadar yüklenmiyor. Bunun açıkça, programcının isteğiyle yapılması önemli: kimsenin kodu arkasından değişmiyor. Kazanç başlangıç süresinde. Komut satırı aracı yazanlar bunu en çok sevecek, çünkü --help yazınca yarım saniye boyunca kırk modül yükleyen araçlar artık mazeret bulamayacak.

frozendict (PEP 814). Değiştirilemeyen, yerleşik bir sözlük tipi. Yıllardır herkes bunu kendi kodunda bir yerlerde yarım yamalak taklit ediyordu. Artık dilin içinde. Bence oldukça şirin ve oldukça geç kalmış bir ekleme.

sentinel (PEP 661). "Burada hiçbir değer yok" demenin None'dan farklı bir yolu. Bir fonksiyona None verilmesiyle hiçbir şey verilmemesini birbirinden ayırmak isteyenler bugüne kadar object() ile kendi işaretçilerini yaratırdı. Artık bunun yerleşik bir tipi var.

Python 3.15.0: tembel modüller, donmuş sözlükler ve iki haftada gelen iki yama
Görsel: yayıncı basın kiti

Comprehension içinde açma (PEP 798). Liste ve sözlük comprehension'larında * ve ** ile açma yapılabiliyor. İç içe listeleri düzleştirmek için yazılan o çift for'lu satırlar daha okunur hâle gelecek.

Varsayılan kodlama UTF-8 (PEP 686). Bu sürümün sessiz ama en etkili değişikliği bu olabilir. open() ile bir dosyayı kodlama belirtmeden açtığınızda Windows'ta sistemin yerel kod sayfası devreye girerdi. Türkçe Windows'ta bu cp1254 demek. Linux'ta yazılmış bir programın Windows'ta "ş" harfine takılıp kalması bu yüzdendi. Artık iki tarafta da aynı varsayılan geçerli. Ama dikkat: eski kod sayfasıyla kaydedilmiş dosyaları kodlama belirtmeden okuyan eski programlarınız varsa, onlar bu kez ters yönden hata verebilir. Geçmeden önce encoding= parametresini açıkça yazın, iş garantiye girsin.

Paket başlangıç yapılandırma dosyaları (PEP 829) ve her sürümde olduğu gibi daha iyi hata mesajları da var. Python'un hata mesajları son birkaç sürümdür gerçekten insanla konuşuyor. "Bunu mu demek istediniz?" diyen bir derleyici görmek, eski kuşaktan biri için hâlâ biraz tuhaf.

JIT: yüzde 7–8

Deneysel JIT derleyici güncellendi. python.org'a göre x86-64 Linux'ta geometrik ortalamada yüzde 7–8 civarında hız kazancı sağlıyor. Abartılacak bir rakam değil, ama küçümsenecek bir rakam da değil. Üstelik "deneysel" sözcüğü hâlâ orada duruyor. Yani yarın sabah üretimdeki sunucunuzu JIT'le çalıştırmanızı kimse istemiyor. Rakamın yalnızca x86-64 Linux için verildiğini de unutmayın. ARM'lı bir Mac'te ya da Windows'ta ne olacağını sürüm sayfası söylemiyor, biz de söyleyemiyoruz.

Standart kütüphane ve tipler

Kütüphanede en ilginç ekleme Tachyon (PEP 799): yüksek frekanslı, istatistiksel örnekleme yapan bir profiler. Aynı PEP, profil araçlarını tek bir çatı altında toplayan yeni bir profiling paketi de getiriyor. Hangi profiler hangi modülde diye aramak tarihe karışıyor (eh, umalım). Terminal çıktısında renk kullanan yerlerin sayısı da arttı.

Tip sisteminde TypedDict için tipli ek öğeler (PEP 728), TypeForm (PEP 747) ve ayrık tabanlar (PEP 800) geliyor. Bunlar daha çok tip denetleyicisi yazanları ve büyük kod tabanlarında tip disiplini kuranları ilgilendiriyor. Günlük betik yazan biri bu değişikliklerin farkına bile varmayabilir.

C tarafı: asıl haber burada gizli

Eklenti modülü yazanlar için en önemli satır şu: free-threaded yapılar için stable ABI (PEP 803, 820 ve 793). Bunun ne anlama geldiğini açayım. ABI (Application Binary Interface, Uygulama İkili Arayüzü), derlenmiş bir eklentinin yorumlayıcıyla nasıl konuştuğunu tanımlar. Stable ABI ise aynı derlenmiş paketin birden çok Python sürümünde çalışabilmesi demek. GIL'siz Python'un yaygınlaşmasının önündeki en büyük engel, her eklentinin bu yapı için ayrıca derlenmesi gerekmesiydi. Bu engel artık kalkıyor. Ayrıca yeni bir PyBytesWriter API'si (PEP 782) ve yorumlayıcı kapanırken iş parçacıklarını koruyan bir sonlandırma güvencesi (PEP 788) var.

Derleme tarafında frame pointer'lar artık varsayılan olarak açık (PEP 831). Bu, perf gibi sistem profilerlarının Python yığınını doğru okuyabilmesi demek. Tachyon'la birlikte düşünülünce bu sürümün gizli teması belli oluyor: Python kendi yavaşlığını ölçmeyi kolaylaştırıyor. Bunu oldukça dürüst bir tavır olarak görüyorum.

Python 3.15.0: tembel modüller, donmuş sözlükler ve iki haftada gelen iki yama
Görsel: yayıncı basın kiti

(Küçük bir sapma: sürüm sayfasında Barry Warsaw'un yazdığı "whatsnewt" adında bir metin macerası var. uvx --python 3.15 whatsnewt yazınca sürüm notlarını oyun olarak geziyorsunuz. Değişiklik listesini bir macera oyununa çevirmek, bir dil sürümü için çok şirin bir jest. Neyse, konumuza dönelim.)

Pürüzler

Şimdi işin daha az eğlenceli kısmına gelelim. Sürüm sayfası açık bir uyarı veriyor: macOS 27.0'da IDLE ve Tk tabanlı öteki uygulamalar donabilir. Gelişmeler CPython'da #158053 numaralı kayıtta izleniyor. Python'u IDLE ile öğretenler, öğrencilerinin Mac'lerini güncellemeden önce bu kaydın kapanmasını bekleseler iyi olur. (Linux'çular bu satırı okurken gülümsüyorsa haklılar, ama fazla gülmesinler. Onlar da dağıtımlarının paketini bekliyor.)

İkinci pürüz takvimde görülüyor. 3.15.1, 21 Ekim'de çıktı. 3.15.2 ise acele edilmiş bir güvenlik sürümü. python.org sayfasında 25 Ekim, PEP 790'da 26 Ekim yazıyor, büyük ihtimalle saat dilimi farkı. Bu sürüm ssl modülünde ele geçirilmiş eMudhra ara sertifika anahtarlarına güvenmeyi bırakıyor (CVE-2026-115557). tarfile.tar_filter'daki bir bağlantı sorununu kapatıyor (CVE-2026-114583). http.cookiejar negatif sürümlü çerezleri artık reddediyor. Bunların yanında 70 katkıcıdan gelen 130 kadar düzeltme daha var. Yayından sonraki iki buçuk hafta içinde iki bakım sürümü gelmiş olması kötü bir işaret değil. Aksine sorunların hızla kapatıldığını gösteriyor. Ama uyarı açık: 3.15.0'ın sayfası bile artık kendisinin 3.15.2 ile geçersizleştiğini söylüyor. 3.15.0 KURMAYIN, en son 3.15.x neyse onu kurun!

Ne zamana kadar destekleniyor?

PEP 790'a göre yaklaşık iki ayda bir hata düzeltme sürümü gelecek. Son düzenli düzeltme sürümü olan 3.15.14, 3 Ekim 2028'e planlanmış. Ondan sonra yalnızca kaynak kodu olarak dağıtılan güvenlik düzeltmeleri, yaklaşık Ekim 2031'e kadar sürecek. Beş yıllık bir ömür, hem de ücretsiz. Lisans parasıyla yazılım alınan zamanlardan gelen biri için bu cömertlik hâlâ insanı şaşırtıyor. Bunu mümkün kılan emeği de unutmayın: hata bulursanız raporlayın, kaydı açın, bir PR atın.

Bizim hükmümüz

Python 3.15, bir sürümden çok bir altyapı yatırımı. Gösterişli tek bir özelliği yok. Tembel importlar ve UTF-8 varsayılanı günlük hayatı kolaylaştırıyor. frozendict ile sentinel, yıllardır elle yapılan işleri dilin içine alıyor. Free-threaded stable ABI ise GIL'siz geleceğin önündeki en somut engeli kaldırıyor. JIT'in yüzde 7–8'i iyi bir başlangıç, ama henüz neyin vaadi olduğu belli değil.

Geçmeli misiniz? Yeni projede evet, hem de en son 3.15.x ile. Var olan projede önce sanal bir ortamda test paketinizi çalıştırın. Özellikle dosya okuyan ve kodlama belirtmeyen yerlere bakın. Bunu yapmadan üretime taşımayın. Ve geçişten önce MUTLAKA ortamınızın, kilit dosyalarınızın bir kopyasını alın. macOS 27 üzerinde IDLE'a bağlıysanız kayıt kapanana kadar bekleyin.

Python'dan şimdilik bu kadar. Hangi özelliği ilk kullanacağınızı merak ediyorum, yazın. Mektup yazmaya üşenenler bir yorum bıraksın, o da olur. Görüşmek üzere, hoşçakalın!..

Kaynaklar

İçindekiler · Sayı 02 · Ekim 2026