Skip to content

v2.0.0

Choose a tag to compare

@github-actions github-actions released this 07 Nov 20:52
· 1447 commits to refs/heads/main since this release
1f25c3b

What's Changed

  • Reuse `guid_fmt` @berlin-with0ut-return (#154)
    Change Details
      ## Description Use `guid_fmt!` macro from mu_rust_helpers to reduce code duplication.
    • Impacts functionality?
    • Impacts security?
    • Breaking change?
    • Includes tests?
    • Includes documentation?

    How This Was Tested

    No functional changes.

    Integration Instructions

    No functional changes.




  • image loader: Fix Freeing Stack @os-d (#151)
    Change Details
      ## Description

    Currently image stacks can't be freed because the memory code cannot apply attributes across blocks, so core_free_pages returns not found. There are multiple blocks because of the stack guard having a different attribute (RP) than the rest of the stack (XP). This is fixed by removing the RP attribute and setting XP before freeing the stack, so that the blocks are coalesced and core_free_pages can free the single block.

    There is a larger discussion on attribute handling in the memory subsystem that will be revisted later.

    • Impacts functionality?
    • Impacts security?
    • Breaking change?
    • Includes tests?
    • Includes documentation?

    How This Was Tested

    Tested on platforms that were seeing stacks failing to be freed.

    Integration Instructions

    N/A.




⚠️ Breaking Changes

  • [REBASE\&FF] Update CI workflows @Javagedes (#138)
    Change Details
      This pull request makes three changes to the CI workflow: (1) Adds documentation tests, (2) Builds the mdbook if it exists, (3) Runs cargo clippy

    Add Documentation tests

    By default, cargo test (cargo make test) runs all tests, including doc tests. We use cargo tarpaulin (cargo make coverage) in our CI system so that we don't compile and run all tests twice; however cargo tarpaulin does not run doc tests by default:

    --all-targets                Test all targets (excluding doctests)
    --lib                        Test only this package's library unit tests
    

    One solution is to pass --all-targets --doc to cargo tarpaulin, but when a doc test fails, it provides no valuable error message to the user. Due to this, the decision was to run cargo test --doc in the CI workflow as it does show a proper, valuable, error message.

    Build the mdbook

    Adds a mdbook build step to build the mdbook if it exists. Previously, we only attempted to build the mdbook post-merge if the mdbook-path is set.

    Add cargo clippy tests

    Cargo clippy was purposefully not added to the CI workflow as it is opinionated and following its suggestions can result in unintended changes to the code. However our documentation states that the developer should run cargo clippy and evaluate its suggestions, applying them or adding skip attributes to the code. Due to this, adding the clippy check to the CI workflow makes sense.

    Description

    • Impacts functionality?
    • Impacts security?
    • Breaking change?
    • Includes tests?
    • Includes documentation?

    How This Was Tested

    CI passes and Q35 continues to boot to UEFI Shell.

    Integration Instructions

    Platforms reusing this workflow must now ensure all doc tests and clippy checks are passing in their repository.




🚀 Features & ✨ Enhancements

  • uefi\_test: cleanup macro usage @Javagedes (#144)
    Change Details
      ## Description

    in the uefi_test macro, we originally manually expanded the code generated by the distributed_slice macro from linkme, as we were under the impression that the path to the linkme crate was hardcoded as ::linkme. After additional review of the linkme code (because it was not mentioned in the linkme documentation), it was discovered that an attribute macro is available to override the path to the linkme crate (#[linkme(crate = "path::to::linkme")]).

    This commit removes the manual expansion of the macro and replaces it with the macro itself, using the path override attribute to specify the path to the linkme crate. An additional benefit is that the tests can now focus only on the static test case our macro is generating.

    • Impacts functionality?
    • Impacts security?
    • Breaking change?
    • Includes tests?
    • Includes documentation?

    How This Was Tested

    Verified that the code continues to compile and the tests continue to be located.

    Integration Instructions

    N/A




📖 Documentation Updates

  • Document error handling best practices @berlin-with0ut-return (#153)
    Change Details
      ## Description
    • Impacts functionality?
    • Impacts security?
    • Breaking change?
    • Includes tests?
    • Includes documentation?

    How This Was Tested

    N/A. Documentation only.

    Integration Instructions

    N/A. Documentation only.




Full Changelog: v1.0.1...v2.0.0