Optionally store StaticPyObjStore on micropython heap via root pointer #20
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.
Related to #16
This optionally moves the
StaticPyObjStore
from being attached to a random module to a new global storage for micropython-wrap that uses a micropython root pointer. The root pointers are saved from garbage collection in micropythons internal implementation. As such the implementations should be equal.In the process a
MPyMapView
class was added, which allows for C++-style access to micropython maps.IMHO this should be default behaviour in the future: this makes the
_StaticPyObjStore
variable, which is an implementation detail of micropython-wrap, invisible to the user. I did not enable it by default here, as it breaks the interface by requiring explicit definition of the root pointer by the user. Once we have some confidence with this implementation, we could maybe add a deprecation#warning
in case it is not enabled? But maybe you also just want to keep the old behaviour.