fix memory leaks in generated bindings #153
Merged
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.
This addresses a couple of issues:
We weren't freeing canonical ABI results after calling imports and then converting the results to Python values.
We were using the PyO3
Bound
APIs incorrectly in a few places, resulting in refcounts being incremented too many times.While debugging the latter issue, I took the opportunity to update to the latest PyO3 release, which required addressing the usual API breakage. It also required temporarily forking the repo to add a patch to disable
extern "C-unwind"
inpyo3_ffi
onwasm32
. We should be able to drop that fork once we upgrade everything to Python 3.14.Finally, I discovered
https://pyo3.rs/v0.25.0/features.html#pyo3_disable_reference_pool which supposedly optimizes Rust<->Python transitions by disabling a feature we don't rely on anyway, so I went ahead and enabled it.
Fixes #152