Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Checklist for Alpha 0.2.0 #12

Open
7 of 12 tasks
StandingPadAnimations opened this issue Oct 31, 2022 · 8 comments
Open
7 of 12 tasks

Checklist for Alpha 0.2.0 #12

StandingPadAnimations opened this issue Oct 31, 2022 · 8 comments

Comments

@StandingPadAnimations
Copy link
Member

StandingPadAnimations commented Oct 31, 2022

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

  • Improve code stability #8
  • Improve verbosity of errors #9
  • Finish code generation interface #15
  • Finish C FFI (including returning errors instead of just status)
  • Make sure @dynafide adds himself to Cargo.toml
  • Add drop to stack methods for the Rust and C APIs
    - [x] Make sure RunTimeSeal can catch most if not all attempts of tampering the runtime (this will definitely not be finished by the first alpha, but we can try our best)
    EDIT: RunTimeSeal will be removed as it doesn't bring much benefit
  • Publish on Crates.io
  • Update diagrams in README
  • Port RASM to Rust (requires code gen API to be finished)
  • Make sure that RASM can compile all instructions
  • BIG ONE: add Global support for FrameAlloc and FrameFree
  • Make sure function visibility is correct (internals should not be usable to the end user)

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

@dynafide
Copy link
Collaborator

Two things I just thought of:

  • A mechanism for extcall callbacks to put data into the VM (perhaps via a special register, or by pushing to the stack?)
  • Some sort of way in the C FFI to retrieve the textual error message in the event that an error occurs (currently we only indicate the failure state by either returning a non-zero value or null pointers)

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

@dynafide
Copy link
Collaborator

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
Copy link
Member Author

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
Copy link
Member Author

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

@StandingPadAnimations StandingPadAnimations changed the title Checklist for Alpha 0.1.0 Checklist for Alpha 0.2.0 Oct 31, 2022
@StandingPadAnimations
Copy link
Member Author

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
Copy link
Member Author

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
Copy link
Member Author

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

@StandingPadAnimations
Copy link
Member Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants