- Pyrefly dari Meta adalah pemeriksa tipe Python sumber terbuka sekaligus ekstensi IDE yang dikembangkan dengan Rust
- Mendukung performa analisis supercepat dan fitur integrasi IDE, serta dikembangkan untuk mengatasi keterbatasan Pyre
- Mengusung inferensi tipe otomatis, dukungan untuk codebase berukuran besar, dan filosofi sumber terbuka sebagai prinsip utama
- Bertujuan meningkatkan sistem tipe di seluruh ekosistem melalui kolaborasi dan kontribusi dengan komunitas Python
- Saat ini telah merilis versi alfa dan secara aktif meminta umpan balik serta kontribusi dari komunitas
Pengantar
- Pyrefly adalah proyek sumber terbuka berupa pemeriksa tipe statis Python sekaligus ekstensi IDE yang dikembangkan Meta dengan Rust
- Mendukung deteksi error lebih awal dengan memverifikasi konsistensi tipe sebelum kode dijalankan
- Dapat digunakan baik melalui integrasi IDE maupun CLI, sehingga menyediakan alur kerja yang fleksibel
- Menargetkan kontribusi pada pengembangan sistem tipe Python dan berbagai library melalui kolaborasi dengan komunitas open source
Latar belakang pengembangan Pyrefly
- Pada 2017, Meta mengembangkan pemeriksa tipe baru (yang kemudian menjadi Pyre) untuk codebase Python Instagram berskala besar
- Pyre dikembangkan dengan OCaml demi performa, sambil merujuk pada desain yang kuat dari Hack, Flow, dan lainnya
- Seiring waktu, muncul keterbatasan ketika kebutuhan akan perkembangan sistem tipe dan integrasi IDE makin besar
- Meta juga menggunakan alat komunitas seperti Pyright, tetapi karena ada batasan dalam memenuhi kebutuhan seperti penelusuran kode skala besar dan ekspor tipe, mereka mencoba mengembangkan Pyrefly
Prinsip utama Pyrefly
-
1. Performa
- Pengembang membutuhkan pemeriksaan tipe cepat pada setiap penekanan tombol segera setelah menulis kode
- Pyrefly menggunakan arsitektur implementasi Rust berperforma tinggi yang mampu memeriksa 1,8 juta baris per detik bahkan pada codebase yang sangat besar
-
2. Desain berpusat pada IDE
- Abstraksi dirancang sejak awal agar IDE dan CLI dapat mempertahankan sudut pandang yang sama
- Pada Pyre hal ini merupakan perbaikan belakangan, tetapi pada Pyrefly konsistensi ditekankan sejak tahap desain
-
3. Inferensi
- Mendukung inferensi tipe otomatis bahkan untuk kode Python tanpa anotasi dan tanpa tipe yang dinyatakan secara eksplisit
- Menampilkan tipe nilai kembalian dan variabel lokal di IDE, dan untuk membantu penulisan kode yang lebih baik, tipe hasil inferensi dapat disisipkan otomatis dengan klik ganda
-
4. Sumber terbuka
- Pyrefly dirilis di GitHub dengan lisensi MIT, dan menyambut PR komunitas serta laporan issue
- Berupaya menjalin komunikasi aktif melalui kanal Discord sambil terhubung dengan ekosistem Python dan library utama Meta seperti PyTorch
Masa depan Pyrefly
- Aktif bergerak dengan tujuan meningkatkan bahasa Python dan pengalaman pengembang bersama komunitas
- Sejak awal pengembangan Pyre, Meta terus membuka kode sumber dan berkontribusi ke PEP; melalui Pyrefly, mereka juga berencana memaksimalkan manfaat penggunaan tipe bagi berbagai pengembang, library, dan pemula
- Berdasarkan pengalaman dan hasil pemanfaatan tipe di bahasa dinamis, Meta berencana membagikan berbagai pengalaman dan mendorong peningkatan kualitas tipe di ekosistem
- Saat ini Pyrefly masih versi alfa, tetapi menargetkan peluncuran resmi pada musim panas ini sambil terus melakukan perbaikan bug dan penambahan fitur
- Umpan balik komunitas sangat penting, dan mereka secara aktif meminta laporan issue serta permintaan perbaikan setelah menggunakan Pyrefly
Panduan penggunaan versi alfa Pyrefly dan komunitas
- Proses pengembangan Pyrefly dan detail teknisnya telah dibagikan melalui Meta Tech Podcast dan presentasi PyCon US
- Kabar tambahan disediakan melalui berbagai kanal seperti situs terkait Meta Open Source, YouTube, Facebook, Threads, X, dan LinkedIn
1 komentar
Komentar Hacker News
uvsangat tinggi sehingga ada firasattyakan menang di ranah ini. Jika salah langkah, bisa muncul situasi seperti Atom atau Flow, ketika tim internal kalah dari open source eksternal lalu dari atas muncul suasana "apa tim ini benar-benar masih perlu? kenapa tidak dijadikan open source saja?". Rasanya ini hal yang perlu diperhatikan oleh manajemen (Aaron Pollack?).gitmenyoroti penggunaan monorepo dan menolak perbaikan untuk di-upstream, mereka beralih kemercurial, dan pihakmercurialdengan senang hati menerima kontribusi. Karena perubahan pada alat internal berlangsung sangat cepat, memiliki sendiri proyek tersebut dianggap masuk akal.mypyyang sudah ada juga masih tetap bertahan.Pyright, berbasis Typescript, namun menurut pengalaman pribadi tetap lebih cepat daripadamypy."[deskripsi alat] rust"untuk dengan mudah menemukan perangkat lunak yang cepat. Sekitar 95% alat yang dipakainya ditulis dengan Rust dan sebagian besar memuaskan.Pylintyang dibuat dengan Python melakukan pemeriksaan satu per satu per baris kode dan bisa memakan waktu lebih dari 30 detik, sehingga ini memang area yang sensitif terhadap performa.pyreflytidak hanya terikat padavscode, dan diminta agar lebih mempertimbangkan bahwa orang punya preferensi yang berbeda-beda.pycharmjuga tidak otomatis lebih baik. Ia pribadi merasa pengembangan jarak jauh divscodesangat nyaman, dan tidak merasa perlu menulis di internet bahwapycharmburuk.