refactor: store Env<'a> instead of the raw rustler::wrapper::NIF_ENV pointer - #86
Merged
Merged
Conversation
…pointer ProgressEmitter and CancelGuard now borrow the calling NIF's Env<'a> instead of a raw NIF_ENV pointer. This removes the last use of rustler::wrapper, which rusterlium/rustler#768 deletes, and drops ffi_helpers::reconstruct_env, a safe function that returned an Env with an arbitrary lifetime. No behavior change.
3 of 4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Upstream draft PR rusterlium/rustler#768 deletes the
rustler::wrappermodule.ProgressEmitterandCancelGuardused it to keep a rawNIF_ENVpointer and rebuild anEnvfor each message or liveness check.Both now hold the calling NIF's
Env<'a>directly. The lifetime keeps them inside the NIF call, so the compiler now checks what the old comments promised.This also deletes
ffi_helpers::reconstruct_env. It was a safe function that returned anEnvwith any lifetime the caller picked, which is unsound.No behavior change. The README section on
unsafeno longer lists the env rebuild.Checks run locally against FFmpeg 9.0.1:
cargo clippy --all-targets -- -D warnings,cargo fmt --check,cargo test(17 passed),mix compile --warnings-as-errors,mix test --include integration(104 passed).