21 puan yazan darjeeling 2025-05-20 | 12 yorum | WhatsApp'ta paylaş

Free Threading Python'a katkı yapmak için şimdi iyi bir zaman

PyCon US 2025'te şu ana kadar anladığım kadarıyla Free Threading Python'ı kısaca özetleyip katkı konusunu da toparlamaya çalışacağım.

Free Threading Python nedir?

Free Threading Python, Python'ın GIL'ini (Global Interpreter Lock) kaldırarak çok iş parçacıklı ortamlarda performansı artırmayı hedefleyen bir projedir. Bu proje, Python'ın multithreading performansını iyileştirmek ve CPU bound işlerde daha iyi performans sunmak için başlatıldı.

Henüz deneysel aşamada ve kurmak için ya yeniden derleyip yüklemeniz ya da uv üzerinden kurmanız gerekiyor.

Mevcut durum

Ben de yalnızca test ediyorum ama söylenene göre saf Python kütüphanelerinin çoğunda kullanım açısından bir sorun yok. Ancak yaygın olarak kullanılan kütüphanelerin çoğu, performans ya da uygulama nedenleriyle C/C++ ile yazılmış kütüphaneleri çağırıyor veya doğrudan extension olarak uygulanıyor; bu yüzden bu tür kütüphanelerde Free Threading Python kullanmak için çeşitli yöntemlere başvurmak gerekiyor.

Extension modülü kullanan durumlar

Çoğu durumda aşağıdaki yöntemler kullanılıyor ve bir de porting guide mevcut.

  • C API
  • Cython
  • PyBind11
  • nanonbind
  • PyO3
  • f2py

CFFI henüz desteklenmiyor ama Quansight'ın fork'u kullanılarak destek sağlanabiliyor.
Destek vermeyeceklerini söyleyen issue var, ancak CFFI çoğunlukla interfacing için kullanıldığı için bu karar anlaşılabilir. Fork'lanmış CFFI kullanılırsa Free Threading Python kullanılabilir, ancak daha ince ayarlı bir uygulama olmadığı için performansın düşeceğini düşünüyorum.

Katkı yapma yolları

Buradan sonrası biraz derin bir kuyuya atlamak gibi, ama sprint'e katıldığımda herkes olumlu yaklaşıyordu; bu yüzden hâlâ katkı yapmak için iyi bir zaman gibi görünüyor. Katkı yolları şöyle:

Aşağıdakilere bakarak free-threading-python uyumluluğunun iyi olup olmadığını kontrol edin

Test ettikten sonra issue açın

Önce 3.13 free-threading Python'ı kurup ardından kütüphaneyi yükleyin ve testleri çalıştırın.
Mümkünse 3.14t sürümünü de denemek iyi olur ama henüz beta olduğu için önce 3.13 sürümünü denemeniz daha iyi olur.

Port edip PR gönderin

Buradan sonrası biraz zor. Multithreading, çeşitli sistem çağrıları ve C/C++ ile Python'ın iç yapısı hakkında belli bir düzeyde anlayış gerekiyor.
En zor nokta, kütüphanelerin çoğu zaman birbirine bağımlı olması. Başka kütüphaneleri kullanıyorsunuz, ama ilgili kütüphane henüz destek vermiyorsa işe oradan başlamak gerekiyor.

Ben de sprint'e katılırken ancak genel resmi çıkarabildim; yapı aşağı yukarı şöyle oluyor.

  • fastapi -> uvicorn -> uvloop, cryptography, pycares

Katkı yapma yöntemleri hakkında yazı yazın

Ben şu anda bunu yapıyorum ama elbette eksik kalacaktır. Yazı yazıp farklı yerlere paylaşalım.

free-threading-python kullanımını anlatın

Türkçe içerik az olduğu için performans testleri yapıp kullanım şeklini yazmak, toparlamak ve yazı olarak paylaşmak faydalı olur.

Neden şimdi katkı yapılmalı?

Ben yaklaşık 25 yılı aşkın süredir açık kaynak ekosisteminin içindeyim sanırım. Büyük bir açık kaynak katkıcısı olduğumu söyleyemem ama yakın çevremde çok katkı yapan insanlar var; hatta iki CPython Core Developer da tanıyorum, bunun dışında da pek çok kişi var. Bu yüzden onlarla konuşurken oluşan bir sezgim var.

Hiçbir şeyin henüz olmadığı zamanlarda ya da büyük dönüşüm dönemlerinde katkı yapmak iyidir. Örneğin Python'ın ilk dönemlerinde katkı yapan Jang Hye, başka birçok şey de yaptı ama Unicode ve Korece codec'ler üzerinde de çalıştı. O dönemde ortada pek bir şey yoktu ve ana katkıcılar Korece codec'leri bilmediği için nispeten daha kolay yaklaşılabildiğini düşünüyorum. Sonraki büyük dönüşüm Python 3'e geçiş dönemiydi. Ondan sonra sıra asyncio tarafına geldi; burada Kim Jun-gi aklımda kalıyor, elbette başka birçok kişi de var. Şimdi ise free-threading adlı yeni özellik geldi. Ben bunun, katkı yapmak için en iyi zaman olduğunu düşünüyorum.

Diğer dillerde ise değişiklikler genelde şirketlerin kararıyla ya da zaten büyük şirketlerin yönettiği framework'lerde yapıldığı için katkı sunmak kolay olmuyor. Elbette Python da son derece kolay erişilebilir değil, ama sayısız kütüphane ve framework var; şimdi hepsini tek tek port etmek mümkün ve çok sayıda insan gücüne ihtiyaç var. Bu yüzden tam zamanı.

12 yorum

 
ahwjdekf 2025-05-22

Python'ın popüler olmasının büyük nedenlerinden biri, aslında böyle çoklu iş parçacığı meselelerini düşünmeye gerek olmamasıydı. Buna kadar da düşünmek gerekirse, sıradan insanların kolayca kullanamayacağı bir dil haline gelir herhalde.

 
darjeeling 2025-05-23

Bu hâlâ isteğe bağlı bir özellik ve multithreading’in de büyük olasılıkla seçenek olarak kalması muhtemel. (seçeneği açmak, ayrı kurulum yapmak vb.)
Ben de Type’ı pek kullanmıyorum; free-threading’i ise performans tarafındaki sorunlar nedeniyle biraz kullanırım gibi, ama sanırım çok sınırlı olur.

 
corona10 2025-05-23

Bunu isteğe bağlı olarak görmüyorum. PEP 779 onaylandıktan sonra, gelecekte varsayılan uygulamayı free-threaded hâle getirmek hedefleniyor.

 
darjeeling 2025-05-27

type gibi çok düşünmeden kullanılsa da olur gibi bir niyetti. Hehe.

 
ahwjdekf 2025-05-22

Free threading Python, bu gerçekten hiç de kolay bir iş olmayacak gibi. Pandora'nın kutusunu açmak gibi bir his. Şimdiye kadar gizlenmiş her türlü senkronizasyon hatasının ortalığı kaplama ihtimali var. Üstelik bunlar çalışma zamanında çok nadir patlayacak türden. Çoklu iş parçacığı geliştirmede baş ağrıtan sorunlar artık Python'da da ciddi biçimde başlayabilir gibi görünüyor. Yalnızca C ailesine bakılsa bile, thread-safe olmayan fonksiyonların kullanıldığı yerlerde hemen sorun çıkacaktır.

 
kissdesty 2025-05-21

Otomatik olarak port edip test eden bir Agent çıksa harika olurdu!

 
darjeeling 2025-05-21

Multithread meselesi olduğu için kolay olmayacaktır.

 
ilotoki0804 2025-05-21

Doğrudan derlemeniz gerekmeden, deadsnakes veya Windows ya da macOS resmi yükleyicilerinden de kolayca kurulabiliyor!

 
darjeeling 2025-05-20

Yazım hatası çok fazla. TT Burayı güncelleyemedim, bu yüzden blogda güncelledim.

 
jasonroh 2025-05-21

Merhaba, Google önerisiyle bu yazıyı görüp iletişime geçiyorum. Yurt dışında 5 yıldır Python geliştiricisi olarak çalıştım (genel geliştirme deneyimim 13 yıl), ancak şu anda kısa bir süreliğine Kore'de dinleniyorum. Katkıda bulunmak istiyorum; e-posta adresinizi paylaşmanız mümkün mü? Sizinle iletişime geçip bu konuda daha fazla şey öğrenmek istiyorum.

 
jasonroh 2025-05-21

E-posta adresim josephroh@naver.com. Teşekkür ederim.

 
darjeeling 2025-05-23

E-posta gönderdim. Teşekkür ederim.