11 poin oleh GN⁺ 2025-12-15 | 3 komentar | Bagikan ke WhatsApp
  • uvm32 adalah sandbox mesin virtual minimalis untuk lingkungan dengan sumber daya terbatas seperti mikrokontroler, terdiri dari satu berkas C dan berjalan tanpa alokasi memori dinamis
  • Berbasis emulator RISC-V, menjalankan aplikasi bytecode yang ditulis dalam C, Zig, Rust, dan assembly, dengan desain asinkron untuk mencegah host terhenti
  • Dapat berjalan dengan flash di bawah 3KB dan RAM di bawah 1KB, dengan prioritas pada keamanan sehingga kode yang salah tidak membuat host crash
  • Menyediakan berbagai contoh host VM dan aplikasi sampel per bahasa, sehingga bisa diintegrasikan ke berbagai lingkungan seperti embedded, game, dan plugin
  • Dirilis dengan lisensi MIT, sehingga bebas digunakan untuk riset, produk, dan perangkat embedded

Ikhtisar uvm32

  • uvm32 adalah sandbox mesin virtual ringan tanpa dependensi, dirancang untuk mikrokontroler dan perangkat dengan keterbatasan sumber daya
    • Struktur satu berkas C, berbasis standar C99, desain asinkron, tanpa penggunaan memori dinamis
    • Pada STM32L0 (ARM Cortex-M0+), dapat berjalan dengan kurang dari 3KB flash / 1KB RAM
  • Dibangun di atas emulator RISC-V dan mencakup antarmuka manajemen serta alat build kode yang efisien

Tujuan penggunaan utama

  • Pengganti engine scripting embedded seperti Lua, Duktape, MicroPython
  • Isolasi kode yang tidak tepercaya melalui lingkungan sandbox
  • Mendukung pengembangan dengan bahasa sistem modern seperti Rust dan Zig
  • Meminimalkan pemeliharaan multi-platform dengan prinsip “Write once, run anywhere”

Fitur utama

  • Menyertakan contoh bytecode yang ditulis dalam C, Zig, Rust, assembly
  • Desain non-blocking sehingga kode yang bermasalah tidak menghentikan host
  • Tidak mengasumsikan I/O host, model eksekusi yang sederhana dan konsisten
  • Menyediakan FFI minimal yang aman
  • Dapat menjalankan mulai dari skrip kecil hingga aplikasi kompleks
  • Desain yang mengutamakan keamanan, error internal VM tidak merusak host
  • Berbasis emulator CPU penuh, tetapi bukan untuk tujuan simulasi hardware
Iklan

Perbandingan dengan alternatif

  • Jejak memori lebih kecil dibanding engine scripting embedded yang ada
  • Mendukung bahasa yang banyak digunakan seperti C, Rust, Zig
  • Mudah diintegrasikan dengan perangkat lunak yang sudah ada
  • Mendukung berbagai paradigma seperti event-driven, polling, multiprosesor
  • Memiliki ketahanan terhadap kode VM yang bermasalah
  • Namun, pemanggilan FFI langsung, efisiensi maksimum, pengalaman scripting sederhana, dan library standar bawaan bukanlah targetnya

Build dan menjalankan (Docker)

  • Dapat di-build hanya dengan kompiler C, dengan lingkungan Docker yang disediakan
    • Siapkan lingkungan dengan perintah make dockerbuild, make dockershell
    • Setelah menjalankan make di dalam shell Docker,
      ./hosts/host/host apps/helloworld/helloworld.bin dapat dijalankan
  • Opsi lengkap dapat dilihat dengan perintah host -h

Lisensi

  • Menggunakan MIT License
  • Bebas digunakan untuk riset, produk, perangkat embedded, dan lainnya

3 komentar

 
GN⁺ 2025-12-15
Komentar Hacker News
  • Setelah melihat kodenya, strukturnya benar-benar kompak
    Saya belum mencoba mengompilasi atau menjalankannya sendiri, tetapi ini mencakup ekstensi instruksi integer, perkalian, dan atomik RISC-V 32-bit
    Operasi floating-point tidak diemulasikan oleh emulator, melainkan oleh compiler (seperti gcc) melalui fungsi perangkat lunak
    Menurut saya, dukungan di berbagai compiler adalah desain yang cerdas
    Proyek dasar yang mengimplementasikan set instruksi sebenarnya adalah mini-rv32ima

  • Proyek ini tampaknya berada di ranah yang mirip dengan upaya membuat lingkungan eksekusi bersama seperti WASM
    Bedanya, fondasinya adalah RISC-V
    Saya ingin tahu lebih banyak soal keterbatasan atau kelebihan masing-masing pendekatan, tetapi bagaimanapun juga rasanya kita sedang menuju masa depan di mana aplikasi berjalan di atas VM bersama
    Menurut saya, web modern adalah contoh yang paling mendekatinya

    • Dulu saya sempat membandingkan WASM dan libriscv secara singkat, dan memilih WASM karena kompatibilitas browser
      libriscv juga proyek yang keren dan mengesankan
      Sebagai referensi, tautan diskusi terkait ada di sini
    • Melihat tulisan Wasefire di Google Open Source Blog, jejak kodenya tampak lebih kecil
      Namun, RISC-V mungkin tidak terlalu cocok untuk penggunaan seperti ini
      Misalnya, dekode immediate value yang ditangani lewat perangkat lunak akan lambat, walau di perangkat keras cepat
      Meski begitu, RISC-V tetap target yang stabil dan bisa disusun secara sederhana
  • Kodenya benar-benar rapi dan saya suka struktur file C tunggal-nya
    Cara menggunakan Docker untuk menjalankan contoh juga sangat praktis di lingkungan embedded
    Cakupan pengujiannya juga terlihat bagus, dan metriknya tampaknya menarik untuk dilihat
    Saat menambahkan fitur scripting ke perangkat medis, ini tampaknya memberi keuntungan karena kode inti tidak perlu divalidasi ulang setiap kali
    Menarik jika dibandingkan dengan interpreter WASM untuk embedded seperti WASM Micro Runtime
    Di Cortex M4F, ukurannya jauh lebih besar yaitu 56.3K
    Mungkin karena WASM adalah kumpulan instruksi yang lebih kompleks dibanding profil minimum RISC-V

  • Memperkenalkan contoh ZigDoom dengan kalimat “Just add rats”

  • Waktunya pas sekali
    Saya sedang mencari emulator ringan untuk pengujian firmware embedded, tetapi sebagian besar alternatif terlalu berat atau tidak stabil
    Jika mendukung simulasi IO yang dipetakan ke memori, ini tampaknya akan berguna untuk menguji driver IoT atau mikrokontroler tanpa perangkat keras nyata

    • Ini bisa diimplementasikan dengan mudah
      Inti emulator sudah mendukung IO yang dipetakan ke memori, tetapi uvm32 hanya memakainya sebagai blok RAM tambahan di host (seperti framebuffer atau heap terpisah)
      Write trap bisa ditangani di bagian ini, dan read trap di bagian ini
 
balthasar 2025-12-15

Saya juga tidak tahu dari komentar yang mana omong-omong soal phishing itu muncul di bagian akhir.

 
xguru 2025-12-15

Komentar itu ditandai sebagai spam lalu menghilang, jadi sepertinya hanya balasannya yang tersisa dan jadi terlihat aneh. Akan saya hapus.