You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase will rebase this PR
@dependabot recreate will recreate this PR, overwriting any edits that have been made to it
@dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
@dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
@dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
@dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
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 everydark-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:
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).
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.
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:
Migrate against the 0.15 changelog call-site by call-site, treating SegmentSelector and VirtAddr::try_new as semantic reviews, not textual fixes.
Gate merge on boot-smokeand a real nonos-mk-run boot, not just build. A green cargo build proves nothing about an IDT whose entries are now indexed differently.
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.
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
dependenciesPull requests that update a dependency filerustPull requests that update rust code
1 participant
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps x86_64 from 0.14.13 to 0.15.5.
Changelog
Sourced from x86_64's changelog.
... (truncated)
Commits
8ad38d5Merge pull request #596 from rust-osdev/release/0.15.588e5176release 0.15.575ea0feupdate changelog98d498bMerge pull request #593 from zhangxuan2011/master4c75925constify PhysFrame::from_pfn and PhysFrame::try_from_pfn8cc3adbrename InvalidPfn to PfnNotValid8f2866aimprove documentationb94acdcperf(addr): 🔥 Removed unnessary docs and code3a5107ffeat(paging): ✨ Added new error type about invalid pfn4a52e0efix(paging): 🐛 Fixed that the mul might cause overflow / panicDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)