-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Open
Labels
development-processRelated to development process of DataFusionRelated to development process of DataFusion
Description
What
We run cargo semver-checks
before (pre-)releasing a new version. Maybe even for every PR (it's rather expensive though).
Why
Also see #13648.
While it doesn't necessarily prevent breaking changes, but it might make accidental ones more visible. For example, running this for 2ac8af8 (which compares against v43.0.0), we get the following things that I think could be avoided (this is a small subset of what the tool found):
--- failure enum_variant_added: enum variant added on exhaustive enum ---
Description:
A publicly-visible enum without #[non_exhaustive] has a new variant.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#enum-variant-new
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/enum_variant_added.ron
Failed in:
variant PlanType:PhysicalPlanError in /home/mneumann/src/arrow-datafusion/datafusion/common/src/display/mod.rs:66
--- failure struct_missing: pub struct removed or renamed ---
Description:
A publicly-visible struct cannot be imported by its prior path. A `pub use` may have been removed, or the struct itself may have been renamed or removed entirely.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/struct_missing.ron
Failed in:
struct datafusion_expr::DocumentationBuilder, previously in file /home/mneumann/.cargo/registry/src/index.crates.io-6f17d22bba15001f/datafusion-expr-43.0.0/src/udf_docs.rs:95
struct datafusion_expr::DocSection, previously in file /home/mneumann/.cargo/registry/src/index.crates.io-6f17d22bba15001f/datafusion-expr-43.0.0/src/udf_docs.rs:67
struct datafusion_expr::Documentation, previously in file /home/mneumann/.cargo/registry/src/index.crates.io-6f17d22bba15001f/datafusion-expr-43.0.0/src/udf_docs.rs:35
We could even add a config to the repo that defines what we accept, for example:
--- failure auto_trait_impl_removed: auto trait no longer implemented ---
Description:
A public type has stopped implementing one or more auto traits. This can break downstream code that depends on the traits being implemented.
ref: https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.37.0/src/lints/auto_trait_impl_removed.ron
Failed in:
type Max is no longer UnwindSafe, in /home/mneumann/src/arrow-datafusion/datafusion/expr/src/test/function_stub.rs:383
type Max is no longer RefUnwindSafe, in /home/mneumann/src/arrow-datafusion/datafusion/expr/src/test/function_stub.rs:383
type Min is no longer UnwindSafe, in /home/mneumann/src/arrow-datafusion/datafusion/expr/src/test/function_stub.rs:298
type Min is no longer RefUnwindSafe, in /home/mneumann/src/arrow-datafusion/datafusion/expr/src/test/function_stub.rs:298
type Count is no longer UnwindSafe, in /home/mneumann/src/arrow-datafusion/datafusion/expr/src/test/function_stub.rs:214
type Count is no longer RefUnwindSafe, in /home/mneumann/src/arrow-datafusion/datafusion/expr/src/test/function_stub.rs:214
type Sum is no longer UnwindSafe, in /home/mneumann/src/arrow-datafusion/datafusion/expr/src/test/function_stub.rs:101
type Sum is no longer RefUnwindSafe, in /home/mneumann/src/arrow-datafusion/datafusion/expr/src/test/function_stub.rs:101
type Statement is no longer UnwindSafe, in /home/mneumann/src/arrow-datafusion/datafusion/expr/src/logical_plan/statement.rs:33
type Statement is no longer RefUnwindSafe, in /home/mneumann/src/arrow-datafusion/datafusion/expr/src/logical_plan/statement.rs:33
type Statement is no longer UnwindSafe, in /home/mneumann/src/arrow-datafusion/datafusion/expr/src/logical_plan/statement.rs:33
type Statement is no longer RefUnwindSafe, in /home/mneumann/src/arrow-datafusion/datafusion/expr/src/logical_plan/statement.rs:33
type Avg is no longer UnwindSafe, in /home/mneumann/src/arrow-datafusion/datafusion/expr/src/test/function_stub.rs:456
type Avg is no longer RefUnwindSafe, in /home/mneumann/src/arrow-datafusion/datafusion/expr/src/test/function_stub.rs:456
How
TBD
comphead
Metadata
Metadata
Assignees
Labels
development-processRelated to development process of DataFusionRelated to development process of DataFusion