Resurgence-VM-Development / Resurgence

The Resurgence VM, a register virtual machine designed for simplicity and ease of use, based on the old Rendor VM
https://crates.io/crates/resurgence
MIT License
14 stars 0 forks source link

Checklist for Alpha 0.2.0 #12

Open StandingPadAnimations opened 2 years ago

StandingPadAnimations commented 2 years ago

This checklist is the stuff left for the first alpha release of Resurgence:

@dynafide anything else we need to check off before we release alpha 0.2.0?

dynafide commented 2 years ago

Two things I just thought of:

Otherwise, this list looks good! I will post here if I think of anything else.

dynafide commented 2 years ago

We have a series of 0.1.x versions already, so it looks like we will need to use 0.2.x for the alpha versions instead

StandingPadAnimations commented 2 years ago

A mechanism for extcall callbacks to put data into the VM (perhaps via a special register, or by pushing to the stack?)

Forgot about that, thanks for reminding me. I think we'll just push to the stack, since we already do that for arguments

StandingPadAnimations commented 2 years ago

Oh yeah @dynafide, don't forget to add yourself to the authors section of Cargo.toml, I'll add that to the checklist

StandingPadAnimations commented 2 years ago

One more thing: we need to go over the documentation of the internals and make it more consistent. The format for most things is as follows:

Description
arg (`Type`): description of what the argument is

codeblock-
example rust code 
-codeblock
StandingPadAnimations commented 2 years ago

Ok so there's a security issue in Resurgence, though I'm not sure if we should make a separate issue tracking it since it may be unfixable

So it seems to be possible for an API function to create an interpreter instance and execute arbitrary code. RunTimeSeal can't do much, as it's a per-instance thing.

StandingPadAnimations commented 2 years ago

Alright, I've added Rust support for dropping values on the stack. Now we just need the C wrappers

StandingPadAnimations commented 2 years ago

One important thing: guarantee exception safety for the FFI, as the Rust standard library can still throw exceptions