Skip to content

build(deps): bump x86_64 from 0.14.13 to 0.15.5 - #599

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/cargo/x86_64-0.15.5
Open

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/cargo/x86_64-0.15.5

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

Bumps x86_64 from 0.14.13 to 0.15.5.

Changelog

Sourced from x86_64's changelog.

0.15.5 – 2026-07-11

This release is compatible with Rust nightlies starting with nightly-2026-07-10 (this only applies when the nightly feature is used).

New Features

Fixes

Other Improvements

0.15.4 – 2025-11-24

New Features

Fixes

Other Improvements

0.15.3 – 2025-11-19

New Features

... (truncated)

Commits
  • 8ad38d5 Merge pull request #596 from rust-osdev/release/0.15.5
  • 88e5176 release 0.15.5
  • 75ea0fe update changelog
  • 98d498b Merge pull request #593 from zhangxuan2011/master
  • 4c75925 constify PhysFrame::from_pfn and PhysFrame::try_from_pfn
  • 8cc3adb rename InvalidPfn to PfnNotValid
  • 8f2866a improve documentation
  • b94acdc perf(addr): 🔥 Removed unnessary docs and code
  • 3a5107f feat(paging): ✨ Added new error type about invalid pfn
  • 4a52e0e fix(paging): 🐛 Fixed that the mul might cause overflow / panic
  • Additional commits viewable in compare view

@dependabot dependabot Bot added dependencies Pull requests that update a dependency file rust Pull requests that update rust code labels Oct 3, 2026
@dependabot
dependabot Bot requested a review from eKisNonos as a code owner October 3, 2026 11:23
@senseix21

Copy link
Copy Markdown
Collaborator

Review: do not merge as-is — x86_64 0.15 is a breaking API change that needs a code migration

CI is not flaky here, it is correct. build, benchmark, attestation, reproducible, evidence and every dark-features-compile variant fail. Pulled the compiler diagnostics:

error[E0605]: non-primitive cast: `SegmentSelector` as `u64`
error[E0605]: non-primitive cast: `SegmentSelector` as `u16`
error[E0599]: no method named `as_u64` found for enum `core::result::Result<T, E>`
error[E0277]: the type `InterruptDescriptorTable` cannot be indexed by `usize`
error[E0282]: type annotations needed
error[E0308]: mismatched types

Those are four distinct upstream breaking changes landing on us at once, and each maps to a real place in our arch layer:

  1. SegmentSelector is no longer a transparent integer. Every sel as u64 / sel as u16 in GDT/TSS setup needs .0 (or .index() where we want the index, not the raw selector — these are not the same value, and picking the wrong one silently corrupts segment loads rather than failing to compile).
  2. InterruptDescriptorTable dropped usize indexing in favour of u8. Our IDT wiring indexes with usize in many places — this is the bulk of the error volume, and the companion E0282 annotations are fallout from the same expressions.
  3. VirtAddr::try_new now returns Result, so .as_u64() on the result no longer resolves. Each site needs an explicit decision: propagate, or expect with a reason. This is the one I'd watch hardest — "just unwrap it" turns a compile error into a boot-time panic in address-space setup.

Architectural position: this is not a dependency bump, it is an arch-layer refactor wearing a bump's clothing. x86_64 is the single most TCB-critical third-party crate we have — it is the typed wrapper over GDT, IDT, page tables and control registers, and it is the one dependency where a silent semantic change (selector-vs-index, VirtAddr canonicality) produces a triple fault rather than a test failure. Given this repo's history of boot faults rooted in exactly this layer (segment/GS-base handling, IDT entry wiring, page-table setup), a mechanical "make it compile" pass is not sufficient evidence.

Recommended path — close this PR in favour of a hand-written migration branch:

  1. Migrate against the 0.15 changelog call-site by call-site, treating SegmentSelector and VirtAddr::try_new as semantic reviews, not textual fixes.
  2. Gate merge on boot-smoke and a real nonos-mk-run boot, not just build. A green cargo build proves nothing about an IDT whose entries are now indexed differently.
  3. Keep the abi_x86_interrupt + instructions feature pair and default-features = false exactly as they are, and confirm abi_x86_interrupt still behaves identically on our pinned toolchain.
  4. Land it on its own, never batched with other dependency updates, so a boot regression bisects to one commit.

Happy to be proven wrong by a green boot lane, but Dependabot cannot produce that here. Holding.

Bumps [x86_64](https://github.com/rust-osdev/x86_64) from 0.14.13 to 0.15.5.
- [Changelog](https://github.com/rust-osdev/x86_64/blob/master/Changelog.md)
- [Commits](rust-osdev/x86_64@v0.14.13...v0.15.5)

---
updated-dependencies:
- dependency-name: x86_64
  dependency-version: 0.15.5
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot
dependabot Bot force-pushed the dependabot/cargo/x86_64-0.15.5 branch from 5a96601 to 7363da1 Compare October 9, 2026 05:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file rust Pull requests that update rust code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant