Skip to content

rust: bump min rust version to 1.81, update CI #5185

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 29 commits into from
Apr 15, 2025
Merged

rust: bump min rust version to 1.81, update CI #5185

merged 29 commits into from
Apr 15, 2025

Conversation

sdht0
Copy link
Contributor

@sdht0 sdht0 commented Apr 2, 2025

1.74 since 1.72 was already needed for arrow and 1.74 is the first version to support lints.clippy in Cargo.toml.

Moving to 1.81 for latest version of arrow and half while we're at it.

Shared builds on macOS now work.

Personal preference is to enable all clippy lints and then selectively disable the unwanted ones. Happy to consider disabling at least the pedantic ones by default.

Contributor agreement

@sdht0 sdht0 requested a review from benjaminwinger as a code owner April 2, 2025 23:03
Copy link

codecov bot commented Apr 2, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 86.97%. Comparing base (b321100) to head (cbcaa33).
Report is 9 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #5185      +/-   ##
==========================================
- Coverage   86.97%   86.97%   -0.01%     
==========================================
  Files        1405     1405              
  Lines       61635    61659      +24     
  Branches     7544     7550       +6     
==========================================
+ Hits        53607    53627      +20     
- Misses       7855     7859       +4     
  Partials      173      173              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

This comment was marked as outdated.

This comment was marked as outdated.

This comment was marked as outdated.

This comment was marked as outdated.

@sdht0 sdht0 changed the title rust: bump min rust version to 1.74 rust: bump min rust version to 1.81 Apr 12, 2025
@sdht0 sdht0 requested review from benjaminwinger and mewim April 13, 2025 17:40
@sdht0 sdht0 changed the title rust: bump min rust version to 1.81 rust: bump min rust version to 1.81, update CI Apr 13, 2025

This comment was marked as outdated.

Copy link

Benchmark Result

Master commit hash: 92ab7d9fc5cdf6688e47c73b223a8e787b7d51e0
Branch commit hash: 644bcdfb3f464f396c9e6eb83f2e7785d580d651

Query Group Query Name Mean Time - Commit (ms) Mean Time - Master (ms) Diff
aggregation q24 724.77 723.88 0.89 (0.12%)
aggregation q28 6549.03 6597.92 -48.89 (-0.74%)
filter q14 128.54 125.35 3.19 (2.54%)
filter q15 124.29 127.97 -3.69 (-2.88%)
filter q16 346.09 343.33 2.76 (0.80%)
filter q17 448.60 452.56 -3.96 (-0.88%)
filter q18 1904.79 1933.87 -29.08 (-1.50%)
filter zonemap-node 90.73 88.77 1.96 (2.21%)
filter zonemap-node-lhs-cast 90.00 88.88 1.11 (1.25%)
filter zonemap-node-null 90.23 89.32 0.91 (1.02%)
filter zonemap-rel 5739.71 5825.47 -85.76 (-1.47%)
fixed_size_expr_evaluator q07 680.67 679.55 1.12 (0.16%)
fixed_size_expr_evaluator q08 960.56 959.46 1.10 (0.11%)
fixed_size_expr_evaluator q09 961.28 959.08 2.20 (0.23%)
fixed_size_expr_evaluator q10 253.97 254.04 -0.07 (-0.03%)
fixed_size_expr_evaluator q11 254.25 254.27 -0.02 (-0.01%)
fixed_size_expr_evaluator q12 232.26 233.06 -0.80 (-0.34%)
fixed_size_expr_evaluator q13 1558.86 1559.09 -0.23 (-0.01%)
fixed_size_seq_scan q23 110.28 107.67 2.61 (2.42%)
join q29 715.05 736.25 -21.20 (-2.88%)
join q30 1689.35 1674.96 14.39 (0.86%)
join q31 6.74 5.05 1.69 (33.51%)
join SelectiveTwoHopJoin 63.42 45.44 17.99 (39.59%)
ldbc_snb_ic q35 9.45 10.35 -0.90 (-8.68%)
ldbc_snb_ic q36 101.25 79.71 21.54 (27.02%)
ldbc_snb_is q32 2.42 5.13 -2.70 (-52.74%)
ldbc_snb_is q33 17.41 15.49 1.91 (12.34%)
ldbc_snb_is q34 1.28 1.52 -0.24 (-15.90%)
multi-rel multi-rel-large-scan 1673.91 1667.51 6.40 (0.38%)
multi-rel multi-rel-lookup 7.72 11.45 -3.73 (-32.59%)
multi-rel multi-rel-small-scan 188.16 204.19 -16.03 (-7.85%)
order_by q25 125.64 130.73 -5.09 (-3.89%)
order_by q26 445.00 448.00 -3.00 (-0.67%)
order_by q27 1375.11 1378.86 -3.75 (-0.27%)
recursive_join recursive-join-bidirection 300.90 283.04 17.86 (6.31%)
recursive_join recursive-join-dense 7090.12 7100.80 -10.67 (-0.15%)
recursive_join recursive-join-path 23022.20 22721.09 301.11 (1.33%)
recursive_join recursive-join-sparse 626.21 633.31 -7.10 (-1.12%)
recursive_join recursive-join-trail 7116.34 7110.98 5.36 (0.08%)
scan_after_filter q01 169.73 170.53 -0.80 (-0.47%)
scan_after_filter q02 154.66 155.64 -0.98 (-0.63%)
shortest_path_ldbc100 q37 85.74 87.95 -2.22 (-2.52%)
shortest_path_ldbc100 q38 313.38 330.72 -17.34 (-5.24%)
shortest_path_ldbc100 q39 59.07 58.67 0.39 (0.67%)
shortest_path_ldbc100 q40 399.22 389.11 10.10 (2.60%)
var_size_expr_evaluator q03 2088.46 2093.06 -4.60 (-0.22%)
var_size_expr_evaluator q04 2239.12 2227.34 11.77 (0.53%)
var_size_expr_evaluator q05 2657.76 2658.81 -1.05 (-0.04%)
var_size_expr_evaluator q06 1338.61 1338.14 0.46 (0.03%)
var_size_seq_scan q19 1429.19 1426.64 2.55 (0.18%)
var_size_seq_scan q20 2767.49 2700.42 67.07 (2.48%)
var_size_seq_scan q21 2290.29 2271.33 18.96 (0.83%)
var_size_seq_scan q22 126.43 126.28 0.15 (0.12%)

Copy link

Benchmark Result

Master commit hash: e3d29086ecd3877bab88bb658da7ce71a02e6eac
Branch commit hash: ae75d9f59953af1cbaa34187e73774d78fe57d7c

Query Group Query Name Mean Time - Commit (ms) Mean Time - Master (ms) Diff
aggregation q24 725.36 727.89 -2.52 (-0.35%)
aggregation q28 6600.70 6551.91 48.79 (0.74%)
filter q14 125.56 125.75 -0.18 (-0.15%)
filter q15 123.84 122.86 0.98 (0.80%)
filter q16 344.45 343.66 0.79 (0.23%)
filter q17 445.96 444.64 1.32 (0.30%)
filter q18 1938.63 1912.22 26.41 (1.38%)
filter zonemap-node 89.14 89.81 -0.67 (-0.75%)
filter zonemap-node-lhs-cast 89.63 89.76 -0.13 (-0.14%)
filter zonemap-node-null 89.79 89.82 -0.02 (-0.02%)
filter zonemap-rel 5730.83 5727.57 3.27 (0.06%)
fixed_size_expr_evaluator q07 680.19 680.64 -0.44 (-0.07%)
fixed_size_expr_evaluator q08 961.19 965.44 -4.25 (-0.44%)
fixed_size_expr_evaluator q09 960.68 961.97 -1.28 (-0.13%)
fixed_size_expr_evaluator q10 253.01 254.14 -1.13 (-0.44%)
fixed_size_expr_evaluator q11 254.33 254.74 -0.41 (-0.16%)
fixed_size_expr_evaluator q12 232.37 233.16 -0.79 (-0.34%)
fixed_size_expr_evaluator q13 1557.43 1553.28 4.15 (0.27%)
fixed_size_seq_scan q23 108.01 112.98 -4.98 (-4.40%)
join q29 730.65 716.58 14.06 (1.96%)
join q30 1680.53 1697.15 -16.62 (-0.98%)
join q31 7.98 8.69 -0.72 (-8.23%)
join SelectiveTwoHopJoin 52.12 45.32 6.80 (15.00%)
ldbc_snb_ic q35 11.18 10.41 0.78 (7.46%)
ldbc_snb_ic q36 96.90 94.09 2.80 (2.98%)
ldbc_snb_is q32 4.96 2.35 2.62 (111.71%)
ldbc_snb_is q33 15.29 17.48 -2.20 (-12.56%)
ldbc_snb_is q34 1.18 1.34 -0.16 (-12.12%)
multi-rel multi-rel-large-scan 1698.14 2116.05 -417.91 (-19.75%)
multi-rel multi-rel-lookup 5.77 11.93 -6.16 (-51.63%)
multi-rel multi-rel-small-scan 202.00 198.66 3.34 (1.68%)
order_by q25 126.97 131.46 -4.50 (-3.42%)
order_by q26 446.48 446.31 0.16 (0.04%)
order_by q27 1387.07 1378.68 8.40 (0.61%)
recursive_join recursive-join-bidirection 335.62 285.21 50.41 (17.67%)
recursive_join recursive-join-dense 7139.49 7110.55 28.94 (0.41%)
recursive_join recursive-join-path 23062.97 23029.31 33.65 (0.15%)
recursive_join recursive-join-sparse 627.29 632.17 -4.88 (-0.77%)
recursive_join recursive-join-trail 7074.96 7099.59 -24.62 (-0.35%)
scan_after_filter q01 168.17 168.61 -0.44 (-0.26%)
scan_after_filter q02 155.70 153.21 2.49 (1.63%)
shortest_path_ldbc100 q37 92.37 87.91 4.46 (5.07%)
shortest_path_ldbc100 q38 375.29 374.19 1.11 (0.30%)
shortest_path_ldbc100 q39 52.63 54.66 -2.03 (-3.71%)
shortest_path_ldbc100 q40 446.36 388.24 58.13 (14.97%)
var_size_expr_evaluator q03 2093.12 2092.15 0.97 (0.05%)
var_size_expr_evaluator q04 2235.73 2228.78 6.95 (0.31%)
var_size_expr_evaluator q05 2652.93 2663.41 -10.47 (-0.39%)
var_size_expr_evaluator q06 1337.82 1337.33 0.49 (0.04%)
var_size_seq_scan q19 1427.43 1429.79 -2.36 (-0.16%)
var_size_seq_scan q20 2711.76 2710.84 0.92 (0.03%)
var_size_seq_scan q21 2275.32 2274.40 0.92 (0.04%)
var_size_seq_scan q22 126.25 126.24 0.01 (0.01%)

Copy link
Collaborator

@benjaminwinger benjaminwinger left a comment

Choose a reason for hiding this comment

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

I'm not sure we should be setting the minimum supported rust-version based on our dependencies (particularly optional ones).
Unfortunately, Cargo doesn't handle this very well, but eventually it will default to selecting versions based on their rust-version (see here), which means that we would be able to do things like indicating that we support a range of arrow versions and it will use the one supported by your current version of the compiler (currently we can also do that, but I think it will pull in the latest version and error saying that it needs a newer rust compiler, so you would have to manually pin the version of arrow that you want to use).

cxx = "1.0"
arrow = { version = "55", optional = true, default-features = false, features = ["ffi"] }
cxx = "=1.0.138" # latest version that builds on clang 15
rust_decimal = { version = "1.37", default-features = false }
Copy link
Collaborator

Choose a reason for hiding this comment

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

Why bump the rust_decimal version? We haven't changed anything we do with rust_decimal since adding it, so it's unlikely that it's no longer working with 1.35, and this keeps things compatible with another crate if they need to use 1.35/1.36 for some particular reason (E.g. the above cxx pin). We could probably even push the requirement back earlier since the only function we use was introduced in version 1.2.1 (I haven't tested it with that version though).

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I was following the "best practice" of updating frequently so that the ecosystem is not stuck on older version, esp through transitive dependencies.

Copy link
Collaborator

@benjaminwinger benjaminwinger Apr 15, 2025

Choose a reason for hiding this comment

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

This doesn't force 1.35 though; the default is the ^ operator which would mean >=1.35,<2 (see here)

@sdht0 sdht0 merged commit e1c3e4f into master Apr 15, 2025
28 checks passed
@sdht0 sdht0 deleted the rust-update branch April 15, 2025 15:30
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