Skip to content

Guarantee alignment of fixed-width integer primitives#2205

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

Guarantee alignment of fixed-width integer primitives#2205
joshlf wants to merge 4 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. 🔔

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