Developer Menciptakan Runtime Pemrograman Personal dengan Message Passing Terinspirasi Erlang dan Sintaks Lisp

BigGo Editorial Team
Developer Menciptakan Runtime Pemrograman Personal dengan Message Passing Terinspirasi Erlang dan Sintaks Lisp

Seorang developer telah menciptakan VRS, sebuah runtime pemrograman personal yang menggabungkan ide-ide dari Erlang, Lisp, dan Unix ke dalam satu platform yang kohesif. Dibangun selama residensi di Recurse Center, sistem eksperimental ini bertujuan menciptakan pengalaman pemrograman yang menyenangkan melalui proses ringan dan komunikasi message-passing.

Arsitektur Berbasis Daemon Memungkinkan Komputasi Persisten

VRS berjalan sebagai daemon sistem, memungkinkan developer untuk terhubung dari berbagai klien, terputus, dan kembali lagi untuk menemukan proses mereka masih berjalan. Pendekatan ini berbeda dari lingkungan pengembangan tradisional di mana menghentikan proses utama akan mematikan semua kode yang sedang berjalan.

Sistem ini menggunakan green threads untuk mengimplementasikan proses ringan yang dapat berjalan dalam jutaan pada satu mesin. Setiap proses beroperasi dalam isolasi dengan namespace sendiri, berkomunikasi hanya melalui message passing daripada shared memory. Desain ini mencegah proses saling mengganggu sambil memungkinkan pemrograman bergaya terdistribusi yang kompleks pada satu sistem.

Komponen Sistem VRS

Komponen Deskripsi
sync Dialek Urg Tertanam dan Mesin Virtual
vasd Implementasi runtime sebagai daemon sistem
vim Binary yang dibagikan oleh vasd/vrs dan implementasi klien
vurx Klien CLI kaya fitur melalui libei
vexpj Klien bilah peluncur GUI

Dialek Lisp Kustom Menggerakkan Runtime

Platform ini menggunakan dialek Lisp kustom yang disebut lyric yang mencakup dukungan built-in untuk proses, message passing, dan cooperative multithreading melalui fibers. Bahasa ini memungkinkan developer menulis kode sekuensial untuk interaksi pengguna dan tugas-tugas yang berjalan lama tanpa memblokir thread utama.

Sebagai contoh, pekerjaan terjadwal tahunan dapat ditulis sebagai infinite loop sederhana yang tidur selama setahun, sementara alur antarmuka pengguna dapat diekspresikan sebagai kode sekuensial yang secara alami memblokir input pengguna tanpa mempengaruhi responsivitas sistem.

Fitur Inti VRS

  • Proses Ringan: Green threads yang dapat menjalankan jutaan proses pada satu mesin
  • Pengiriman Pesan: Proses terisolasi berkomunikasi hanya melalui mailbox
  • Registri Layanan: Sistem penemuan dan pengikatan layanan bernama
  • PubSub Bawaan: Mekanisme pesan publish-subscribe global
  • Multithreading Kooperatif: Fiber untuk coroutine dan generator dalam proses
  • Live Programming: Pengembangan berbasis REPL dengan introspeksi runtime

Komunitas Membahas Tantangan Implementasi

Developer dalam komunitas telah mengidentifikasi beberapa area di mana VRS dapat memperoleh manfaat dari fitur tambahan. Beberapa menyarankan untuk mengimplementasikan pola supervisor dan manajemen layanan yang lebih robust mirip dengan abstraksi gen_server Erlang, yang menangani timeout, pemulihan error, dan manajemen state untuk interaksi klien-server.

Erlang gen_srv, analog supervisor perlu dibuat, bersama dengan logika messaging Erlang standar di sekitarnya, agar proyek ini berguna.

Yang lain mengalami masalah teknis, termasuk crash pada sistem macOS yang sedang diselidiki oleh developer. Meskipun merupakan proyek personal yang saat ini tidak menerima kontribusi, sistem ini telah menarik minat dari developer yang bekerja pada lingkungan pemrograman eksperimental serupa.

Layanan Built-in dan Tools Pengembangan

VRS mencakup sistem registry layanan di mana proses yang berjalan lama dapat mendaftarkan diri mereka dengan nama dan mengekspos interface untuk proses lain untuk menemukan dan berkomunikasi dengan mereka. Runtime juga menyediakan mekanisme publish-subscribe global untuk menyiarkan data di seluruh sistem.

Tools pengembangan mencakup alur kerja yang digerakkan REPL melalui klien command-line dan integrasi dengan Emacs melalui major mode kustom. Sistem ini mendukung live programming dan debugging, memungkinkan developer untuk mengintrospeksi state runtime dan berinteraksi dengan layanan yang berjalan secara real-time.

Proyek ini merepresentasikan eksperimen menarik dalam menciptakan lingkungan komputasi personal yang memprioritaskan pengalaman developer dan kegembiraan daripada kompatibilitas luas atau fitur enterprise.

Referensi: vrs