rust-osdev / rust-osdev/x86_64

0.15 Tracking issue

Open
#262 19 comments 0 reactions 0 assignees View on GitHub

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 function software_interrupt<const NUM: u8>(). Done in #227 (and also #259 and #260)
  • Change the idt::Entry and idt::EntryOptions structures to move the code selector into EntryOptions. Also, introduce the InterruptFn trait which allows for abstracting over all function pointers that can be used as interrupt handlers. Done in #226 (and also in #261)
  • Use step_trait to implement Step for PhysFrame and Page. See #212 . This may or may not be a breaking change, depending on how we handle PageRange/PageRangeInclusive/etc....
    • Given that step_trait isn't going to be stable for awhile, this doesn't seem like something we need to do for 0.15.
  • Use correct types for InterruptStackFrameValue. See #263:
    • code_segment should be a SegmentSelector (what about padding?)
    • cpu_flags should be a RFlags #324
    • stack_segment should be a SegmentSelector (what about padding?)
    • What about non-canonical rip and rsp?
  • Rename control flags to have better names
  • #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 VirtAddrNotValid and PhysAddrNotValid to actually contain the invalid address instead of just containing the bad high bits. Done in #347 against the master branch.
  • Remove usize impls for Add/Sub on VirtAddr/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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.