Skip to content

Conversation

@pitaj
Copy link
Contributor

@pitaj pitaj commented Nov 8, 2025

Based on #128666. For your convenience, here is the diff from that PR.

When overflow_checks are enabled, the following code will output as shown

for n in std::range::RangeFrom::from(253_u8..) {
    println!("{n}");
}
// 253
// 254
// 255
// panic

Which is a change from the current behavior, where it will panic after printing 254.

This behavior was requested by the libs team

r? @Mark-Simulacrum

pitaj added 4 commits October 25, 2025 14:30
check overflow after yielding MAX value
`0_u8..` will yield `255` and only panic on the subsequent `next()`
@rustbot
Copy link
Collaborator

rustbot commented Nov 8, 2025

Some changes occurred in compiler/rustc_codegen_cranelift

cc @bjorn3

Some changes occurred to MIR optimizations

cc @rust-lang/wg-mir-opt

Some changes occurred to the intrinsics. Make sure the CTFE / Miri interpreter
gets adapted for the changes, if necessary.

cc @rust-lang/miri, @RalfJung, @oli-obk, @lcnr

This PR changes rustc_public

cc @oli-obk, @celinval, @ouz-a

Some changes occurred to the CTFE / Miri interpreter

cc @rust-lang/miri

This PR changes MIR

cc @oli-obk, @RalfJung, @JakobDegen, @vakaras

The Miri subtree was changed

cc @rust-lang/miri

Some changes occurred to the CTFE machinery

cc @RalfJung, @oli-obk, @lcnr

Some changes occurred to constck

cc @fee1-dead

Some changes occurred in compiler/rustc_codegen_ssa

cc @WaffleLapkin

Some changes occurred in src/tools/clippy

cc @rust-lang/clippy

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-clippy Relevant to the Clippy team. labels Nov 8, 2025
@rustbot rustbot added T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. labels Nov 8, 2025
@oli-obk
Copy link
Contributor

oli-obk commented Nov 8, 2025

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rust-bors

This comment has been minimized.

rust-bors bot added a commit that referenced this pull request Nov 8, 2025
Use `overflow_checks` intrinsic so `IterRangeFrom` yields MAX before panicking in debug
@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Nov 8, 2025
@rust-bors
Copy link

rust-bors bot commented Nov 8, 2025

☀️ Try build successful (CI)
Build commit: 9714d5d (9714d5d8a54e3a1cf65e4d45ba7cf4c169034a36, parent: 87f9dcd5e28a301fce81515bd4bea792444dcf29)

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (9714d5d): comparison URL.

Overall result: ❌ regressions - no action needed

Benchmarking this pull request means it may be perf-sensitive – we'll automatically label it not fit for rolling up. You can override this, but we strongly advise not to, due to possible changes in compiler perf.

@bors rollup=never
@rustbot label: -S-waiting-on-perf -perf-regression

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

mean range count
Regressions ❌
(primary)
0.8% [0.1%, 1.5%] 2
Regressions ❌
(secondary)
1.4% [1.4%, 1.4%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 0.8% [0.1%, 1.5%] 2

Max RSS (memory usage)

Results (primary -2.3%, secondary -4.2%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-2.3% [-2.3%, -2.3%] 1
Improvements ✅
(secondary)
-4.2% [-4.2%, -4.2%] 2
All ❌✅ (primary) -2.3% [-2.3%, -2.3%] 1

Cycles

Results (primary 2.5%, secondary 2.8%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
2.5% [2.5%, 2.5%] 1
Regressions ❌
(secondary)
2.8% [2.8%, 2.8%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 2.5% [2.5%, 2.5%] 1

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 475.809s -> 478.419s (0.55%)
Artifact size: 390.93 MiB -> 390.91 MiB (-0.01%)

@rustbot rustbot removed the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Nov 8, 2025
@Mark-Simulacrum
Copy link
Member

This behavior was #125687 (comment)

Does this affect the stable surface area? Or only new(?) range API?

If it does affect stable surface area, I suspect we'll want libs-api FCP (maybe with crater results) on the behavior change, which I don't think has happened yet?

r=me on the implementation itself.

@saethlin
Copy link
Member

saethlin commented Nov 9, 2025

I don't see any reason to wait on a crater run
@craterbot run mode=build-and-test

@craterbot
Copy link
Collaborator

👌 Experiment pr-148703 created and queued.
🤖 Automatically detected try build 9714d5d
🔍 You can check out the queue and this experiment's details.

ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more

@craterbot craterbot added S-waiting-on-crater Status: Waiting on a crater run to be completed. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Nov 9, 2025
@pitaj
Copy link
Contributor Author

pitaj commented Nov 10, 2025

Does this affect the stable surface area? Or only new(?) range API?

It only affects the unstable new range API. IterRangeFrom is the IntoIter for the new RangeFrom.

So I don't really see a reason to run crater.

@saethlin
Copy link
Member

Ah. That seems to contradict the PR description.
@craterbot cancel

@craterbot
Copy link
Collaborator

🗑️ Experiment pr-148703 deleted!

ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more

@craterbot craterbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-crater Status: Waiting on a crater run to be completed. labels Nov 10, 2025
@pitaj
Copy link
Contributor Author

pitaj commented Nov 10, 2025

Oh, good point. Just updated the PR description. Sorry for the confusion.

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

Labels

S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-clippy Relevant to the Clippy team. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants