Skip to content

Conversation

@killzoner
Copy link
Contributor

Which issue does this PR close?

It's an automated way to track msrv with upstream datafusion.
Currently cargo checks for msrv when adding a new dependency on latest resolver (https://rust-lang.github.io/rfcs/3537-msrv-resolver.html), not for existing ones.

Rationale for this change

This is one of the items from #1271

What changes are included in this PR?

Add a CI check to make sure MSRV is aligned with upstream datafusion projects.

Are there any user-facing changes?

No

@killzoner killzoner force-pushed the msrv-check branch 4 times, most recently from c32f572 to 5e88c60 Compare October 13, 2025 13:00
@killzoner killzoner marked this pull request as ready for review October 13, 2025 13:10
@killzoner killzoner mentioned this pull request Oct 13, 2025
2 tasks
Copy link
Contributor

@milenkovicm milenkovicm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks @killzoner,
it would be great if we get a bit of documentation for this, whats expected behaviour if there is MSRV mismatch, will it fail the CI? do we check only datafusion or others as well?

@killzoner
Copy link
Contributor Author

killzoner commented Oct 14, 2025

Hey @milenkovicm thanks for the review!

Right now we check only datafusion, as we need to make sure that there is a proper MSRV defined in the crate toml.
That's true for datafusion, but there is currently no way to check this if the dependency didn't provide any rust-version info.
This should fail the CI in case of incompatibility, I can do a commit to demonstrate it by bumping artificially ballista MSRV and see how it behaves.

Also I did a check with compat, but if we want stricter validation (like MSRV should be equal), I can change it accordingly

@killzoner killzoner force-pushed the msrv-check branch 3 times, most recently from 9c98dab to 52ac288 Compare October 14, 2025 15:00
@killzoner killzoner requested a review from milenkovicm October 14, 2025 15:00
@killzoner killzoner force-pushed the msrv-check branch 3 times, most recently from 73119e6 to be66115 Compare October 14, 2025 20:43
@killzoner
Copy link
Contributor Author

killzoner commented Oct 14, 2025

Example of failing check with MSRV downgraded:
killzoner@6d7022f
https://github.com/killzoner/datafusion-ballista/actions/runs/18509960270/job/52748285312#step:5:636

Current project MSRV: 1.85.0
thread 'main' panicked at src/main.rs:60:17:
package 'datafusion' has MSRV 1.86.0 not compatible with current project MSRV 1.85.0

@milenkovicm
Copy link
Contributor

Example of failing check with MSRV downgraded:

killzoner@6d7022f

https://github.com/killzoner/datafusion-ballista/actions/runs/18509960270/job/52748285312#step:5:636

Current project MSRV: 1.85.0

thread 'main' panicked at src/main.rs:60:17:

package 'datafusion' has MSRV 1.86.0 not compatible with current project MSRV 1.85.0

I see, should it be other way around I wonder. We need to support MSRV which datafusion supports or older

@killzoner
Copy link
Contributor Author

Example of failing check with MSRV downgraded:
killzoner@6d7022f
https://github.com/killzoner/datafusion-ballista/actions/runs/18509960270/job/52748285312#step:5:636

Current project MSRV: 1.85.0

thread 'main' panicked at src/main.rs:60:17:

package 'datafusion' has MSRV 1.86.0 not compatible with current project MSRV 1.85.0

I see, should it be other way around I wonder. We need to support MSRV which datafusion supports or older

It's a bit counter intuitive yes, but apparently this is well this way

See usage in cargo add (https://github.com/rust-lang/cargo/blob/367fd9f213750cd40317803dd0a5a3ce3f0c676d/src/cargo/ops/cargo_add/mod.rs#L947) and other places (https://github.com/rust-lang/cargo/blob/367fd9f213750cd40317803dd0a5a3ce3f0c676d/src/cargo/ops/cargo_update.rs#L754)

Basically whenever we update a dependency (here datafusion), we should make sure to adjust the one in ballista reflecting the new potentiel MSRV from the dependencies

@milenkovicm
Copy link
Contributor

all right, if I understand correctly, if datafusion is 1.85 we could decide to have ballista at 1.86 but not 1.84, as datafusion might not work in 1.84?

@killzoner
Copy link
Contributor Author

all right, if I understand correctly, if datafusion is 1.85 we could decide to have ballista at 1.86 but not 1.84, as datafusion might not work in 1.84?

That's my understanding yes

@milenkovicm
Copy link
Contributor

thanks @killzoner

@milenkovicm milenkovicm merged commit 1bc171e into apache:main Oct 16, 2025
28 checks passed
@killzoner killzoner deleted the msrv-check branch October 17, 2025 06:23
@killzoner
Copy link
Contributor Author

thanks @killzoner

Thank you for the detailed reviews

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants