HackerTrans
TopNewTrendsCommentsPastAskShowJobs

trj

no profile record

Submissions

Show HN: Tiny VM sandbox in C with apps in Rust, C and Zig

github.com
196 points·by trj·vor 7 Monaten·12 comments

comments

trj
·vor 7 Monaten·discuss
This could be easily done. The emulator core supports memory mapped IO, but uvm32 only uses this to map an extra block of RAM from the host (for a framebuffer, or a separare memory heap). You can trap the writes here: https://github.com/ringtailsoftware/uvm32/blob/main/uvm32/uv... and the reads here https://github.com/ringtailsoftware/uvm32/blob/main/uvm32/uv...
trj
·vor 7 Monaten·discuss
libriscv looks amazing but its's much larger. It says "Less than 40kB total memory usage". My first version (unpublished) of uvm32 was called uvm80 and emulated a Zilog Z80 CPU. My aim is to have a safe, embeddable sandbox for any device, rather than the best performance.
trj
·vor 7 Monaten·discuss
Thanks for the link, Wasefire looks interesting. I suspect that their design goals are very different to mine. https://github.com/ringtailsoftware/uvm32?tab=readme-ov-file...
trj
·vor 7 Monaten·discuss
"Just add rats" https://github.com/ringtailsoftware/uvm32/tree/main/apps/zig...
trj
·vor 7 Monaten·discuss
I'm working on an embeddable mini VM (RISC-V rather than WASM) and am considering this. In my model, there's something akin to a hardware watchdog where the VM is considered hung if it executes too many instructions without calling a yield() function in the host, then there's the ability to set a maximum number of instructions to execute before returning to the caller.

This lets it be handled asynchronously at the pace the host code chooses https://github.com/ringtailsoftware/uvm32