Sebuah tool command-line baru bernama run telah muncul dari komunitas developer, menjanjikan untuk menyatukan pengalaman bekerja dengan lebih dari 25 bahasa pemrograman melalui satu interface tunggal. Dibangun dengan Rust oleh developer Esubaalew , tool ini bertujuan menghilangkan kebutuhan akan REPL terpisah dan menyediakan eksekusi yang konsisten di berbagai bahasa pemrograman.
Proyek ini telah menghasilkan diskusi signifikan di antara para developer, khususnya seputar proposisi nilai inti dan implementasi teknisnya. Run memungkinkan developer untuk mengeksekusi potongan kode, mengkompilasi program, dan mengakses REPL interaktif untuk bahasa mulai dari Python dan JavaScript hingga Rust dan Go , semuanya melalui satu interface command-line yang terpadu.
Bahasa yang Didukung berdasarkan Kategori
| Kategori | Bahasa & Alias | Persyaratan Toolchain |
|---|---|---|
| Scripting & shells | Bash, Python (py, python), Ruby (rb, ruby), PHP, Perl, Lua, R, Elixir (ex, elixir) | Interpreter yang sesuai pada PATH |
| Web & typed scripting | JavaScript (js, node), TypeScript (ts, deno), Dart, Swift, Kotlin (kt, kotlin) | node, deno, dart, swift, kotlinc + JRE |
| Systems & compiled | C, C++ (cpp, cxx), Rust (rs, rust), Go, Zig, Nim, Haskell (hs, haskell), Crystal (cr, crystal), C (cs, csharp), Java, Julia (jl, julia) | Compiler/toolchain masing-masing |
Komunitas Mempertanyakan Kebutuhan akan Layer Abstraksi Lain
Komunitas developer telah mengajukan pertanyaan penting tentang apakah tool ini mengatasi masalah nyata atau hanya menambah layer kompleksitas lain. Beberapa developer menunjukkan bahwa solusi yang sudah ada seperti shebang lines dan /usr/bin/env sudah menyediakan kemampuan deteksi dan eksekusi bahasa yang telah bekerja dengan andal selama puluhan tahun.
Diskusi ini mengungkap ketegangan fundamental antara inovasi dan praktik yang sudah mapan. Sementara beberapa melihat nilai dalam memiliki interface terpadu untuk multiple bahasa, yang lain mempertanyakan apakah penghematan waktu membenarkan mempelajari tool lain lagi ketika solusi yang ada sudah bekerja efektif.
Kontroversi Klasifikasi Bahasa Muncul
Sebagian besar diskusi komunitas telah fokus pada bagaimana tool ini mengkategorikan berbagai bahasa pemrograman. Swift , misalnya, saat ini terdaftar di bawah Web & typed scripting meskipun merupakan bahasa compiled yang menggunakan LLVM sebagai backend-nya, mirip dengan Rust dan C++ . Kesalahan klasifikasi ini telah memicu percakapan lebih luas tentang bagaimana kita mendefinisikan dan mengkategorikan bahasa pemrograman.
Perdebatan meluas melampaui kesalahan kategorisasi sederhana hingga pertanyaan fundamental tentang properti bahasa. Kotlin menyajikan kasus menarik lainnya, karena dapat dikompilasi menjadi native code untuk pengembangan Android dan JavaScript untuk aplikasi web, membuat klasifikasinya bergantung pada konteks.
Kekhawatiran Implementasi Teknis dan Ekstensibilitas
Dari perspektif teknis, tool ini beroperasi dengan shelling out ke toolchain bahasa yang sudah ada daripada mengimplementasikan interpreter sendiri. Setiap language engine mengimplementasikan trait kecil yang menangani deteksi toolchain, persiapan workspace, eksekusi kode, dan manajemen state REPL . Pendekatan ini menjaga core tetap ringan sambil mempertahankan kompatibilitas dengan lingkungan pengembangan yang ada.
Developer telah menunjukkan minat pada ekstensibilitas sistem, dengan diskusi mengungkap bahwa menambahkan bahasa baru memerlukan implementasi trait LanguageEngine dan menambahkan bahasa ke konfigurasi utama. Proses yang relatif mudah ini telah dipuji sebagai accessible, bahkan untuk developer yang baru mengenal Rust .
Perintah REPL yang Tersedia
| Perintah | Tujuan |
|---|---|
:help |
Menampilkan daftar perintah meta yang tersedia |
:languages |
Menampilkan engine yang terdeteksi dan statusnya |
:lang <id> |
Beralih bahasa aktif (py, go, dll.) |
:detect on/off/toggle |
Mengontrol deteksi otomatis bahasa snippet |
:load path/to/file |
Menjalankan file dalam sesi saat ini |
:reset |
Menghapus status sesi yang terakumulasi |
:exit / :quit |
Keluar dari REPL |
Visi Masa Depan dan Integrasi Cross-Language
Mungkin aspek paling menarik dari proyek ini adalah potensinya untuk berbagi variabel cross-language dan integrasi. Developer telah mengindikasikan rencana untuk memungkinkan berbagi variabel antara bahasa berbeda dalam sesi yang sama, yang dapat membuka kemungkinan menarik untuk workflow pemrograman polyglot.
Fitur ini, jika berhasil diimplementasikan, dapat membedakan tool dari solusi yang ada dan memberikan nilai asli untuk developer yang bekerja di berbagai ekosistem bahasa. Namun, tantangan teknis mempertahankan type safety dan konsistensi data di berbagai lingkungan runtime tetap menjadi rintangan signifikan.
Proyek ini merepresentasikan eksperimen menarik dalam tooling developer, meskipun utilitas ultimatnya masih harus dibuktikan. Apakah akan mendapat traksi di komunitas pengembangan yang lebih luas kemungkinan akan bergantung pada seberapa baik mengatasi pain point workflow nyata versus menambah kompleksitas yang tidak perlu pada praktik yang sudah mapan.
Referensi: run
