7 puan yazan GN⁺ 2025-12-17 | 2 yorum | WhatsApp'ta paylaş
  • Rust ile yazılmış ultra hızlı bir Python tür denetleyicisi ve dil sunucusu olan ty, beta sürümüyle yayımlandı
  • mypy, Pyright ve Pylance için bir alternatif olarak tasarlandı ve 10 ila 60 kat daha yüksek performans sunuyor
  • Artımlı mimari sayesinde kod değiştirildiğinde yalnızca gerekli bölümler yeniden hesaplanarak gerçek zamanlı yanıt hızı en üst düzeye çıkarılıyor
  • Doğruluk ve kullanılabilirlik odağıyla kesişim türleri, gelişmiş tür daraltma ve erişilebilirlik analizi gibi modern tür sistemi özelliklerini destekliyor
  • Astral, ty'yi Ruff ve uv ile birlikte Python ekosisteminin temel geliştirme araçlarından biri hâline getirmeyi planlıyor

ty'ye genel bakış

  • ty, Astral tarafından geliştirilen bir Python tür denetleyicisi ve dil sunucusu olup Rust ile implemente edilmiştir
    • Mevcut mypy, Pyright ve Pylance'a kıyasla çok daha hızlı bir alternatif olarak tasarlandı
    • Astral'ın kurum içi projelerinde hâlihazırda kullanılıyor ve beta aşamasında dış kullanıcılara da öneriliyor
  • Astral, Python ekosistemi için yüksek performanslı geliştirme araçları üreten bir ekip olup uv (paket yöneticisi) ve Ruff (linter ve formatter) ile tanınıyor

Performans ve mimari

  • ty, dil sunucusu merkezli yapı ile tasarlandı ve dosya değiştirildiğinde yalnızca gerekli işlemleri yeniden çalıştıran artımlı işleme yaklaşımını benimsiyor
    • Bu sayede editör içindeki gerçek zamanlı güncelleme hızı çok yüksek oluyor
  • Önbellek olmadan çalıştırıldığında bile mypy ve Pyright'tan 10 ila 60 kat daha hızlı
    • Örnek: PyTorch deposundaki ana dosyalarda değişiklik yapıldığında tanıların yeniden hesaplanma süresi 4,7 ms olup, bu değer Pyright'tan (386 ms) 80 kat, Pyrefly'dan (2,38 saniye) 500 kat daha hızlı
  • Büyük ölçekli projelerde de artımlı güncellemelerde performans farkı onlarca katı aşıyor

Tür sistemi ve doğruluk

  • ty, kesişim türleri (intersection types), gelişmiş tür daraltma (advanced type narrowing) ve tür tabanlı erişilebilirlik analizi (reachability analysis) gibi özellikleri destekliyor
    • Bu özellikler sayesinde doğru tür geri bildirimi sağlıyor ve gereksiz yanlış pozitifleri azaltıyor
  • Hedef yalnızca hız artışı değil, doğruluğu ve kullanıcı deneyimini birlikte iyileştiren bir tür denetleyicisi kurmak

Tanı sistemi

  • ty, Rust derleyicisinin hata mesajı sisteminden ilham alan gelişmiş bir tanı sistemi içeriyor
    • Tek bir tanı mesajında birden fazla dosyanın bağlamını birlikte sunarak sorunun nedenini ve çözüm yönünü açıkça gösteriyor
    • Örnek: Hatalı sözlük anahtarı atamasında, tür uyumsuzluğunun olduğu yer ile bildirimin yapıldığı yeri birlikte gösteriyor
  • Tanı çıktısı, ty'nin temel arayüzü olarak hem insanlar hem de yapay zeka için anlaşılması kolay bir yapıda tasarlandı

Dil sunucusu özellikleri

  • ty, VS Code ve Cursor gibi LSP (Language Server Protocol) destekleyen tüm editörlerde kullanılabiliyor
    • Tanıma git, sembol yeniden adlandırma, otomatik tamamlama, otomatik import, anlamsal sözdizimi vurgulama ve inlay hint gibi modern dil sunucusu özelliklerinin tamamını destekliyor
  • VS Code uzantısı üzerinden kurulabiliyor; CLI kurulumu için uv tool install ty@latest komutu da kullanılabiliyor

Gelecek planları

  • Beta sonrası kısa vadeli hedefler arasında kararlılığın güçlendirilmesi ve hata düzeltmeleri, Python tür spesifikasyonunun tamamlanması ve Pydantic ile Django desteği yer alıyor
  • Uzun vadede ty'nin, Astral araç zincirinin anlamsal özellik motoru olarak genişletilmesi hedefleniyor
    • Ölü kod kaldırma, kullanılmayan bağımlılıkları tespit etme, güvenlik açığı (CVE) erişilebilirlik analizi ve tür farkındalıklı linting gibi özellikler planlanıyor
  • Astral, ty'yi sürekli geliştirerek Python'u en üretken programlama ekosistemi hâline getirmeyi hedefliyor

Teşekkür

  • ty'nin geliştirilmesine onlarca açık kaynak katkıcısı katıldı ve proje MIT lisansı ile yayımlandı
  • Salsa, Elixir ve Python typing topluluğundan çeşitli kişi ve ekipler teknik iş birliği ve ilham sağladı
  • Astral'ın çekirdek ekibi, tür teorisi, Python çalışma zamanı anlambilimi ve ekosistem kullanım kalıpları konusundaki derin anlayışa dayanarak ty'yi geliştirdi

2 yorum

 
iolothebard 2025-12-19

Astral bir Python fanı mı yoksa Rust fanı mı…
Tam Astral’likmiş~

 
GN⁺ 2025-12-17
Hacker News görüşleri
  • Ty'nin bu karşılaştırma tablosuna eklenmesi iyi olurdu
    Python typing conformance sonuç tablosu'na bakınca Pyright performansını küçümsememek gerektiğini düşünüyorum
    Emacs'te Ty'yi (LSP) kısa süre denedim ve oldukça iyi çalıştı. Yalnız yöntem imzaları gösterilirken bazı parametrelerin tür notasyonlarının fazla uzun uzadıya görünmesi biraz rahatsız etti
    Yine de uzun vadede Ty kullanma ihtimalimin yüksek olduğunu düşünüyorum. İlk beta sürüm için tebrikler

    • Spesifikasyona uyum önemli ama sırf buna bakarak bir type checker seçmeyi önermem
      Gerçek kullanıcıların önem verdiği şeylerle pek örtüşmüyor. (Ben Python Typing Council içinde bu spesifikasyon ve testleri birlikte hazırladım)
    • Biz de yakında o tabloya ekleneceğiz. Pyright seviyesinde conformance yakalamak biraz zaman alacak ama resmî sürümden önce hedefimiz bu
    • Pyright da harika ama BasedPyright onun üstüne iyileştirilmiş bir sürüm
      Yine de uv'den memnun bir kullanıcıyım, Ty yeterince kararlı olduğunda geçmeyi düşünüyorum
    • Bu PR hâlâ WIP durumda ama yeniden OSS katkısı yapmaya başlamak için motivasyon verdi
    • Pyright iyi ama hızı yavaş. LSP'nin tepki hızı UX üzerinde büyük etki yarattığı için Ty'nin ne kadar iyileştiğini görmek için sabırsızlanıyorum
  • Astral harika araçlar yapıyor, umarım yıkıcı para kazanma yöntemleri olmadan iyi şekilde büyürler

    • Astral'ın ilk ticari ürünü pyx. Umarım başarılı olur da harika açık kaynak araçlar yapmaya devam ederler
    • Şimdiye kadarki çalışmalarının Python topluluğu için bir kamu hizmeti düzeyinde olduğunu düşünüyorum
    • Yön olarak biraz bun'a benziyor gibi hissettiriyor
    • Ama mevcut araçları tamamen değiştirdiğini iddia edip pratikte tüm özellikleri sunmaması biraz hayal kırıklığı yaratıyor
      Sonunda eski araçlara geri dönmek zorunda kaldığınız durumlar oluyor. Benim için hızdan çok doğru type checking daha önemli
  • Astral ekibine teşekkürler. Biz Pydantic'i çok kullanıyoruz, bu yüzden Ty'nin resmî sürümünde birinci sınıf destek planlandığını duymak sevindirici
    Şu anda Pyright ve Mypy'yi birlikte çalıştırıyoruz, ama farklı hataları yakaladıkları için biraz tekrarlı hissettiriyor
    Bu tabloya göre Pyright bir superset gibi görünüyor ama benim gerçek deneyimim farklıydı
    Analiz 2 yıl öncesine ait, şimdi durum değişmiş olabilir. Büyük ölçekli bir kod tabanında yalnızca Pyright'a geçmiş olan var mı merak ediyorum

    • Ben de mypy'nin ilk kullanıcılarından biri olarak Pyright VS Code'a eklendiğinde karşılaştırmıştım
      mypy'nin daha esnek ve daha doğru çıkarım yaptığı durumlar sık oluyordu, Pyright ise çok false positive üretiyordu; hatta bir ara kapatmıştım
      Bugünlerde Pyright çok gelişmiş olabilir ama BasedPyright bana tam tersine verimsiz geldi
      Toplulukta mypy'yi küçümseyip Pyright'ı aşırı öven güçlü bir hava var ama benim deneyimim biraz farklı
    • Tekrar söyleyeyim, spesifikasyona uyum testleri gerçek kullanıcı deneyimini yansıtmaz
      Daha çok notasyonların semantiğine odaklandıkları için type checker seçme ölçütü olarak uygun değiller
      (Ben de Python Typing Council içinde bu spesifikasyon ve testleri hazırlayanlardan biriydim)
  • Başlık olarak “Ty beta sürüm duyurusu” daha uygun olurdu sanırım
    Ben Pyrefly'ı Pyright'a tercih ediyordum ama yakın zamanda çıkan bir hata yüzünden eski sürüme sabitlemek zorunda kaldım, bu da can sıkıcıydı
    Ty'yi kurmaya çalıştığımda Cursor sürümü uyumluluk hatası aldım

    • Ek hata mesajların varsa lütfen issue aç. Ben birkaç haftadır Cursor'da Ty eklentisini sorunsuz kullanıyorum, bu yüzden yeniden üretmem zor oluyor
    • (Pyrefly ana bakımcısıyım) O çökme için de Pyrefly deposunda issue açarsan iyi olur
  • Hâlâ tek bir dil için neden bu kadar çok type checker olduğunu anlamıyorum
    Kütüphane geliştiricileri hepsine karşı test mi yapmalı? Geliştiriciler yalnızca belirli checker'ları destekleyen kütüphaneleri mi kullanmalı?

    • Python, duck typing + isteğe bağlı tür notasyonu kullanan bir dil olduğu için farklı uygulamaların çıkması kaçınılmaz
    • Bazıları çağıran taraf çıkarımının kapsamı ya da açık tür zorunluluğu politikası gibi farklardan doğuyor
      Paket sınırlarında açık türler gerekebiliyor ama iç kodda çok fazla belirsizlik var
      Astral özellikle artımlı işleme performansını ana tasarım hedeflerinden biri yapıyor
    • Pratikte çoğu kişi mypy'ye göre test ediyor. Pyright ise VS Code'un varsayılan eklentisi sayesinde giderek etkisini artırıyor
      Gerekirse uyumluluğu sağlamak için doğrudan type stub da sunabilirsin
  • Ty'nin “type checker'ı memnun etmek için notasyon eklemek gerekmez” yaklaşımını benimsemesi hoşuma gitti
    Önceki checker'lar ufak uyarılarla insanı yoruyordu ama Ty gerçek mantıksal hataları iyi yakalıyor

  • Ty'nin aynı zamanda dil sunucusu (LSP) olarak da çalıştığını bugün ilk kez öğrendim
    Yani Neovim veya VSCode'da hem mypy'nin hem de Pyright'ın yerini alabilir

  • Django desteğinin nasıl olduğunu merak ediyorum. Django'da çok fazla magic code var, bu da type checker'ların işini zorlaştırıyor

    • Ty henüz Django'yu desteklemiyor ve bir eklenti sistemi de yok
      Django kullanıyorsan bir süre daha mypy veya Pyright'la devam etmen daha iyi olur
  • Ty hızlı olmasa bile yalnızca intersection type (A & B) desteğiyle bile kullanmaya değer bence
    Standart Python tür sisteminde eksik olan bir özellik olduğu için sevindirici

  • Ruby için de uv benzeri bir şey var mı merak ediyorum. Python veya TypeScript'te uv ya da bun kullanıyorum ama Ruby biraz geride kalmış gibi geliyor

    • Rv diye yeni bir Ruby yönetim aracı var. Belki o bunun alternatifi olabilir