rust-osdev / rust-osdev/x86_64
0.15 Tracking issue
Open
Nobody has claimed this yet.
- #446 by @Freax13 — closed without merging
- Dominant language
- Rust
- Stars
- 940
- Forks
- 157
- Avg merge
- 1d 10h
- Merged PRs (30d)
- 3
Description
This issue tracks any breaking changes we want to make for 0.15.
NOTE: All breaking changes should be made against the next branch, this branch should then be merged in right before releasing 0.15. Also, remember to update Changelog.md.
- Change
software_interrupt!()macro to be a cosnt generic functionsoftware_interrupt<const NUM: u8>(). Done in #227 (and also #259 and #260) - Change the
idt::Entryandidt::EntryOptionsstructures to move the code selector intoEntryOptions. Also, introduce theInterruptFntrait which allows for abstracting over all function pointers that can be used as interrupt handlers. Done in #226 (and also in #261) - Use
step_traitto implementStepforPhysFrameandPage. See #212 . This may or may not be a breaking change, depending on how we handlePageRange/PageRangeInclusive/etc....- Given that
step_traitisn't going to be stable for awhile, this doesn't seem like something we need to do for 0.15.
- Given that
- Use correct types for
InterruptStackFrameValue. See #263:code_segmentshould be aSegmentSelector(what about padding?)cpu_flagsshould be aRFlags#324stack_segmentshould be aSegmentSelector(what about padding?)- What about non-canonical
ripandrsp?
- Rename control flags to have better names
Cr4Flags::PROTECTION_KEY=>Cr4Flags::PROTECTION_KEY_USERXCr0Flags::YMM=>XCr0Flags::AVX- Initial PR: https://github.com/rust-osdev/x86_64/pull/272
- Revised PR (without breaking changes): https://github.com/rust-osdev/x86_64/pull/273
- #448
- Should there be a common abstraction? Some way to traverse the two formats of XSAVE data?
- This is additive, so it can wait until after we release 0.15
- Should we change the behavior of
VirtAddr::try_new- Tracked in #299
- Done in #370
- We may also want to change
VirtAddrNotValidandPhysAddrNotValidto actually contain the invalid address instead of just containing the bad high bits. Done in #347 against themasterbranch. - Remove
usizeimpls forAdd/SubonVirtAddr/PhysAddr, see https://github.com/rust-osdev/x86_64/issues/293#issuecomment-901804330 Breaking change done in #364 - Make 1.59 the unconditional MSRV. Done in #359
- #333 Done in #360
- #363
- Interior mutability of the GDT
- Pointed out in #322
- Initial fix in #323
- Add entry type in #380
- Allow shared reference in #381
- Use an array with
from_raw_entries?
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Review the remaining unchecked items, especially #212 and #448, along with the next branch requirement and Changelog.md. Confirm which breaking-change work is still intended for 0.15; completion would require an agreed scope, implementation, and updated tracking checklist.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- operating-systems
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 15/100