Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
We wanted to have some implicit global variables that are exposed to the script by the runtime. In contrast with global constants, these are defined per invocation and are therefore more flexible. There's a test in here that shows how to use it:
The default context is just
()
, so if no context is defined a&mut ()
should be passed in.Under the hood, this is implemented as passing around a single pointer to all functions which refers to the location of the context struct. Note that the context type does not need
#[repr(C)]
or anything like that, because we get the information on the field offsets in that struct from Rust. All the types mentioned in the context type should be registered in Roto though.There's a couple of things to do in follow-up PRs:
Also, this could use some more complex tests.