It's not possible to share a Rust object across two Rust-Python libraries that were compiled independently.
This means that for Zarrista to natively work with icechunk as a store (where zarrista manages icechunk from Rust without going through Python) Zarrista has to serialize the icechunk state from the icechunk python library and create a new icechunk session in the statically-compiled icechunk version in zarrista.
Unlike obstore, Icechunk is not stateless, so perhaps there could be bad things that happen if two different sessions are trying to work on the same "repo" at the same time?
I think this session serialization may be the same process done when an icechunk session is pickled, so hopefully it won't be a problem, but I don't know.
It's not possible to share a Rust object across two Rust-Python libraries that were compiled independently.
This means that for Zarrista to natively work with icechunk as a store (where zarrista manages icechunk from Rust without going through Python) Zarrista has to serialize the icechunk state from the icechunk python library and create a new icechunk session in the statically-compiled icechunk version in zarrista.
Unlike obstore, Icechunk is not stateless, so perhaps there could be bad things that happen if two different sessions are trying to work on the same "repo" at the same time?
I think this session serialization may be the same process done when an icechunk session is pickled, so hopefully it won't be a problem, but I don't know.