Pengumuman peluncuran beta ty
(astral.sh)- 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)
- 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
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
Astral ini fanatik Python atau fanatik Rust…
Benar-benar astral~
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
Itu cukup jauh dari hal-hal yang dianggap penting oleh pengguna nyata. (Saya ikut membuat spesifikasi dan tesnya di Python Typing Council)
Meski begitu, saya pengguna uv yang puas, jadi kalau Ty sudah cukup stabil saya berniat pindah
Astral sedang membuat alat yang hebat, jadi saya harap mereka bisa berkembang dengan baik tanpa monetisasi yang merusak
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
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
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
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?
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
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
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