Skip to content

Guarantee alignment of fixed-width integer primitives#2205

Open
joshlf wants to merge 5 commits intorust-lang:masterfrom
joshlf:patch-11
Open

Guarantee alignment of fixed-width integer primitives#2205
joshlf wants to merge 5 commits intorust-lang:masterfrom
joshlf:patch-11

Conversation

@joshlf
Copy link
Contributor

@joshlf joshlf commented Mar 11, 2026

Follows up on #2200 (comment)

As an optional extension, we could consider guaranteeing equality between the alignments of:

  • u32 and char
  • u32 and f32
  • u64 and f64

Those equalities strike me as less important, and I'm not sure if they're even valid (ie, whether they hold on all platforms).

@rustbot rustbot added the S-waiting-on-review Status: The marked PR is awaiting review from a maintainer label Mar 11, 2026
@traviscross traviscross added T-lang Relevant to the language team. I-lang-nominated Nominated for discussion during a lang team meeting. P-lang-drag-1 Lang team prioritization drag level 1. I-lang-radar Items that are on lang's radar and will need eventual work or consideration. labels Mar 11, 2026
@traviscross
Copy link
Contributor

traviscross commented Mar 11, 2026

Thanks. I pushed a clarification and separated out the rules.

Clearly we want to guarantee this for fixed-width integers of the same size.

@rfcbot fcp merge lang

@rust-rfcbot
Copy link
Collaborator

rust-rfcbot commented Mar 11, 2026

Team member @traviscross has proposed to merge this. The next step is review by the rest of the tagged team members:

No concerns currently listed.

Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up!

cc @rust-lang/lang-advisors: FCP proposed for lang, please feel free to register concerns.
See this document for info about what commands tagged team members can give me.

The purpose of the existing `layout.primitive.align` rule is to state
that the alignment of primitives is platform-specific.  Adding a
separate alignment guarantee for integers overloads this a bit.  Let's
instead separate out the rules; we'll rename the existing rule since
there are now two rules speaking to alignment.
Let's make this wording a bit more clear, and let's fix the em dash to
use `---` since that's what our renderer expects.
@scottmcm
Copy link
Member

Good to see this being specifically about for the stated N. I hope we don't need usize ever aligned differently from the uN of the same size, but that's less "well obviously", so sticking with just "the i vs u doesn't impact alignment" as the guarantee sounds good.

@rfcbot reviewed

@traviscross traviscross removed I-lang-nominated Nominated for discussion during a lang team meeting. P-lang-drag-1 Lang team prioritization drag level 1. labels Mar 18, 2026
@rust-rfcbot
Copy link
Collaborator

🔔 This is now entering its final comment period, as per the review above. 🔔

@rustbot

This comment has been minimized.

@rustbot
Copy link
Collaborator

rustbot commented Mar 24, 2026

This PR was rebased onto a different master commit. Here's a range-diff highlighting what actually changed.

Rebasing is a normal part of keeping PRs up to date, so no action is needed—this note is just to help reviewers.

@joshlf
Copy link
Contributor Author

joshlf commented Mar 24, 2026

Now that the usize/isize language has merged (#2200), the diff in this PR is slightly changed. PTAL and confirm that the updated language and organization still looks good.

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

Labels

disposition-merge final-comment-period I-lang-radar Items that are on lang's radar and will need eventual work or consideration. S-waiting-on-review Status: The marked PR is awaiting review from a maintainer T-lang Relevant to the language team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants