You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently the features are non additive. E.g., using arrow-50 and arrow-49 will select arrow=50. In large dependency trees this may cause issues as multiple crates might select different versions of the underlying crates.
User A builds a crate on top of serde_arrow using say the arrow48 feature and user B else builds a crate on top of serde_arrow using the arrow49 feature. As soon as someone combines both of these crates, feature unification will select both the arrow48 and arrow49 features. In this case, serde_arrow will select the arrow=49 depedency and user A's crate will break, in probably hard to diagnose ways. Library authors should be able to select a fixed arrow version and stick with it, regardless of the larger context of the program.
Potential interface
stick with one fixed arrow version for each major version of serde_arrow
track only this fixed version using the shorthand functions
export a versioned module for each supported version
Currently the features are non additive. E.g., using
arrow-50
andarrow-49
will selectarrow=50
. In large dependency trees this may cause issues as multiple crates might select different versions of the underlying crates.User A builds a crate on top of
serde_arrow
using say thearrow48
feature and user B else builds a crate on top ofserde_arrow
using thearrow49
feature. As soon as someone combines both of these crates, feature unification will select both thearrow48
andarrow49
features. In this case, serde_arrow will select thearrow=49
depedency and user A's crate will break, in probably hard to diagnose ways. Library authors should be able to select a fixed arrow version and stick with it, regardless of the larger context of the program.Potential interface
serde_arrow
serde_arrow::to_arrow
=> fixed version,serde_arrow::arrow_49::to_arrow
=>arrow=49
Option 1: Generate wrappers
@generated
marker to the generated files (see Include @generated in output file capnproto/capnproto-rust#153)Option 2: Use FFI
Only maintain support for the latest arrow version and use the FFI interface to convert between version?
Alternatives
The text was updated successfully, but these errors were encountered: