7 poin oleh GN⁺ 2025-12-17 | 2 komentar | Bagikan ke WhatsApp
  • ty, type checker dan language server Python supercepat yang ditulis dengan Rust, kini dirilis dalam versi beta
  • Dirancang sebagai alternatif untuk mypy, Pyright, dan Pylance, dengan performa 10–60 kali lebih cepat
  • Melalui arsitektur inkremental, hanya bagian yang diperlukan yang dihitung ulang saat kode diubah, sehingga memaksimalkan kecepatan respons real-time
  • Dengan fokus pada akurasi dan kegunaan, ty mendukung fitur sistem tipe modern seperti intersection types, advanced type narrowing, dan reachability analysis
  • Astral berencana mengembangkan ty bersama Ruff dan uv sebagai alat pengembangan inti dalam ekosistem Python

Ikhtisar ty

  • ty adalah type checker dan language server Python yang dikembangkan oleh Astral dan diimplementasikan dengan Rust
    • Dirancang sebagai alternatif yang jauh lebih cepat daripada mypy, Pyright, dan Pylance
    • Sudah digunakan di berbagai proyek internal Astral, dan pada tahap beta kini direkomendasikan juga untuk pengguna eksternal
  • Astral adalah tim yang membuat alat pengembangan berperforma tinggi untuk ekosistem Python, dan dikenal lewat uv (package manager) dan Ruff (linter dan formatter)

Performa dan arsitektur

  • ty dirancang dengan struktur berpusat pada language server, dan mengadopsi pemrosesan inkremental yang hanya menjalankan ulang operasi yang diperlukan saat file diubah
    • Karena itu, kecepatan pembaruan real-time di editor menjadi sangat tinggi
  • Bahkan saat dijalankan tanpa cache, ty tetap 10–60 kali lebih cepat daripada mypy dan Pyright
    • Contoh: saat file utama di repositori PyTorch diubah, kecepatan perhitungan ulang diagnostik mencapai 4.7ms, 80 kali lebih cepat daripada Pyright (386ms) dan 500 kali lebih cepat daripada Pyrefly (2.38 detik)
    Iklan
  • Bahkan pada proyek berskala besar, selisih performa saat pembaruan inkremental bisa mencapai puluhan kali lipat atau lebih

Sistem tipe dan akurasi

  • ty mendukung intersection types, advanced type narrowing, dan reachability analysis berbasis tipe
    • Melalui fitur-fitur ini, ty memberikan umpan balik tipe yang akurat dan mengurangi false positive yang tidak perlu
  • Tujuannya bukan sekadar meningkatkan kecepatan, tetapi membangun type checker yang meningkatkan akurasi sekaligus pengalaman pengguna

Sistem diagnostik

  • ty menyertakan sistem diagnostik canggih yang terinspirasi dari sistem pesan galat kompiler Rust
    • Dalam satu pesan diagnostik, konteks dari beberapa file dapat ditampilkan bersama untuk memperjelas penyebab masalah dan arah perbaikannya
    • Contoh: saat ada penetapan key dictionary yang salah, lokasi ketidakcocokan tipe dan lokasi deklarasi ditampilkan bersamaan
  • Output diagnostik adalah antarmuka inti ty, dan dirancang dengan struktur yang mudah dipahami oleh manusia maupun AI
Iklan

Fitur language server

  • ty dapat digunakan di semua editor yang mendukung LSP (Language Server Protocol), seperti VS Code dan Cursor
    • Mendukung seluruh fitur language server modern seperti go to definition, rename symbol, autocompletion, auto-import, semantic syntax highlighting, dan inlay hints
  • Dapat dipasang melalui ekstensi VS Code, dan CLI juga bisa diinstal dengan perintah uv tool install ty@latest

Rencana ke depan

  • Target jangka pendek setelah beta adalah peningkatan stabilitas dan perbaikan bug, penyelesaian spesifikasi tipe Python, serta dukungan untuk Pydantic dan Django
  • Dalam jangka panjang, ty akan diperluas menjadi mesin fitur berbasis semantik dalam toolchain Astral
    • Fitur yang direncanakan mencakup penghapusan dead code, deteksi dependensi yang tidak terpakai, reachability analysis untuk kerentanan keamanan (CVE), dan linting yang memahami tipe
  • Astral menargetkan peningkatan ty secara berkelanjutan untuk menjadikan Python sebagai ekosistem pemrograman paling produktif

Ucapan terima kasih

  • Pengembangan ty melibatkan puluhan kontributor open source, dan dirilis di bawah lisensi MIT
  • Berbagai tokoh dan tim dari Salsa, Elixir, dan komunitas typing Python memberikan kolaborasi teknis serta inspirasi
  • Tim inti Astral mengembangkan ty berdasarkan pemahaman mendalam tentang teori tipe, semantik runtime Python, dan pola pemanfaatan ekosistem

2 komentar

 
iolothebard 2025-12-19

Astral ini fanatik Python atau fanatik Rust…
Benar-benar astral~

 
GN⁺ 2025-12-17
Opini Hacker News
  • Akan bagus kalau Ty ditambahkan ke tabel perbandingan ini
    Melihat tabel hasil konformitas Python typing, menurut saya kemampuan Pyright tidak boleh diremehkan
    Saya sempat mencoba Ty (LSP) sebentar di Emacs dan kerjanya cukup baik. Hanya saja, saat signature method ditampilkan, anotasi tipe untuk beberapa parameter terlihat terlalu bertele-tele dan agak mengganggu
    Meski begitu, dalam jangka panjang saya rasa kemungkinan besar saya akan memakai Ty. Selamat atas rilis beta pertamanya

    • Kepatuhan pada spesifikasi memang penting, tetapi saya tidak menyarankan memilih type checker berdasarkan itu
      Itu cukup jauh dari hal-hal yang dianggap penting oleh pengguna nyata. (Saya ikut membuat spesifikasi dan tesnya di Python Typing Council)
    • Kami juga akan segera menambahkannya ke tabel itu. Mungkin perlu waktu untuk menyamai tingkat conformance Pyright, tetapi itulah target kami sebelum rilis resmi
    • Pyright juga bagus, tetapi BasedPyright adalah versi yang lebih ditingkatkan di atasnya
      Meski begitu, saya pengguna uv yang puas, jadi kalau Ty sudah cukup stabil saya berniat pindah
    • PR ini masih berstatus WIP, tetapi ini memotivasi saya untuk mulai lagi berkontribusi ke OSS
    • Pyright bagus, tetapi kecepatannya lambat. Responsivitas LSP sangat memengaruhi UX, jadi saya penasaran seberapa besar peningkatan yang dibawa Ty
  • Astral sedang membuat alat yang hebat, jadi saya harap mereka bisa berkembang dengan baik tanpa monetisasi yang merusak

    • Produk komersial pertama Astral adalah pyx. Semoga sukses dan terus membuat alat open source yang keren
    • Menurut saya, pekerjaan mereka sejauh ini sudah setara dengan layanan publik untuk komunitas Python
    • Arah yang diambil terasa mirip bun
    • Hanya saja, agak disayangkan ketika mengklaim akan sepenuhnya menggantikan alat yang sudah ada, padahal sebenarnya belum semua fitur diimplementasikan
      Akhirnya ada situasi di mana kita harus kembali ke alat lama. Bagi saya, pemeriksaan tipe yang akurat lebih penting daripada kecepatan
  • Terima kasih kepada tim Astral. Kami banyak memakai Pydantic, jadi saya senang mendengar bahwa dukungan kelas satu direncanakan untuk rilis resmi Ty
    Saat ini kami menjalankan Pyright dan Mypy bersama-sama, tetapi karena keduanya menangkap error yang berbeda, rasanya jadi redundan
    Menurut tabel ini, Pyright adalah superset, tetapi pengalaman nyata saya berbeda
    Itu analisis dua tahun lalu, jadi mungkin sekarang sudah berbeda. Saya penasaran apakah ada kasus penyatuan ke Pyright saja pada codebase besar

    • Saya juga sebagai pengguna awal mypy sempat membandingkannya saat Pyright ditambahkan ke VS Code
      Sering kali mypy lebih fleksibel dan lebih akurat dalam inferensi, sementara Pyright punya banyak false positive sampai pernah saya nonaktifkan
      Mungkin Pyright sekarang sudah jauh berkembang, tetapi BasedPyright justru terasa tidak produktif
      Di komunitas ada suasana kuat yang meremehkan mypy dan memuji Pyright, tetapi pengalaman saya agak berbeda
    • Sekali lagi, tes kepatuhan spesifikasi tidak mencerminkan pengalaman pengguna yang sebenarnya
      Tes itu terutama berfokus pada semantik anotasi, jadi kurang tepat dijadikan dasar memilih type checker
      (Saya juga ikut membuat spesifikasi dan tes ini di Python Typing Council)
  • Menurut saya judul “Pengumuman rilis beta Ty” akan lebih tepat
    Saya lebih suka Pyrefly daripada Pyright, tetapi karena bug terbaru saya jadi harus mengunci ke versi sebelumnya dan itu merepotkan
    Saat saya mencoba memasang Ty, muncul error kompatibilitas versi Cursor

    • Kalau ada pesan error tambahan, tolong buat issue. Saya sendiri sudah beberapa minggu memakai ekstensi Ty di Cursor tanpa masalah, jadi sulit mereproduksinya
    • (Saya maintainer Pyrefly) Akan bagus juga kalau crash itu dilaporkan sebagai issue di repositori Pyrefly
  • Saya masih tidak mengerti kenapa satu bahasa masih punya begitu banyak type checker
    Apakah pembuat library harus menguji terhadap semua checker? Apakah developer harus hanya memakai library yang mendukung checker tertentu?

    • Python adalah bahasa duck typing + anotasi tipe opsional, jadi wajar kalau muncul banyak implementasi berbeda
    • Sebagiannya muncul karena perbedaan dalam cakupan inferensi pemanggil atau kebijakan kebutuhan tipe eksplisit
      Di batas paket, tipe eksplisit memang dibutuhkan, tetapi di kode internal ada banyak ambiguitas
      Astral secara khusus menjadikan kinerja pemrosesan inkremental sebagai tujuan desain utama
    • Dalam praktiknya, kebanyakan orang menguji berdasarkan mypy. Pyright makin meluas pengaruhnya berkat ekstensi bawaan VS Code
      Jika perlu, Anda juga bisa menyediakan type stub sendiri untuk menjamin kompatibilitas
  • Saya suka bahwa Ty mengambil posisi “tidak perlu menambahkan anotasi demi memuaskan type checker”
    Checker sebelumnya sering mengganggu dengan peringatan sepele, tetapi Ty tampaknya bagus dalam menangkap kesalahan logis yang nyata

  • Baru hari ini saya tahu bahwa Ty juga berfungsi sebagai language server (LSP)
    Artinya, di Neovim atau VSCode, Ty bisa menggantikan mypy dan Pyright sekaligus

  • Saya penasaran seperti apa dukungan untuk Django. Django punya banyak magic code, jadi sulit ditangani oleh type checker

    • Ty belum mendukung Django dan juga tidak punya sistem plugin
      Kalau Anda memakai Django, untuk sementara lebih baik tetap menggunakan mypy atau Pyright
  • Walaupun Ty tidak cepat, menurut saya dukungan intersection type (A & B) saja sudah membuatnya layak dipakai
    Senang melihat fitur yang selama ini absen dari sistem tipe Python standar

  • Saya penasaran apakah Ruby punya sesuatu seperti uv. Di Python atau TypeScript saya memakai uv atau bun, tetapi Ruby terasa tertinggal

    • Ada alat manajemen Ruby baru bernama Rv. Mungkin itu bisa menjadi alternatifnya