Skip to content

patina-v8.0.0

Choose a tag to compare

@github-actions github-actions released this 05 Sep 20:13
· 758 commits to refs/heads/main since this release

What's Changed

  • Make copyrights consistent @makubacki (#727)
    Change Details
      ## Description

    Files had been added to the repo with a mix of Microsoft copyright format. The correct format is:

    "Copyright (c) Microsoft Corporation."

    Unrelated to the change, but the SPDX identifier is used so tools like GitHub license detection can parse the license.

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

    How This Was Tested

    • cargo make all

    Integration Instructions

    N/A




  • chore: Release @Javagedes (#726)
    Change Details
      ## Description
    • Impacts functionality?
    • Impacts security?
    • Breaking change?
    • Includes tests?
    • Includes documentation?

    How This Was Tested

    N/A

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    

⚠️ Breaking Changes

  • [REBASE\&FF] Always produce UefiDecompress protocol / section extractor @Javagedes (#702)
    Change Details
      ## Description

    This PR converts the SectionExtractor trait to be consumed as a service rather than as a special method in the Core. This makes the section extractor optional, so a core section extractor implementation is now provided which always provide Tiano / UEFI decompression functionality. Registering a SectionExtractor implementation will add additional capabilities to the core section extractor.

    In addition to this, the EfiDecompress protocol is now always produced by the core, in compliance with the SCTs

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

    How This Was Tested

    Continued boot with Q35

    Integration Instructions

    1. patina_section_extractor::NullSectionExtractor has been removed, as it is the same as not registering the service.

    2. platforms must now register their section extractor with .with_service(<extractor>) or .with_component(<comp_to_produce_service>) instead of relying on the default implementation when initializing the core. If a platform is using .with_section_extractor(...), it must be removed. If they are using .with_section_extractor(...) with a section extractor from patina_section_extractor, then they can simply move it after the init_memory method and update it to .with_service(...)

    // Old
    Core::default()
      .with_section_extractor(patina_section_extactor::CompositeSectionExtractor::default())
      .init_memory(physical_hob_list)
      .start()
    // New
    Core::default()
      .init_memory(physical_hob_list)
      .with_service(patina_section_extractor::CompositeSectionExtractor::default())
      .start()
      </blockquote>
      <hr>
    </details>
    

🚀 Features & ✨ Enhancements

  • [REBASE\&FF] Allow services to be registered with the core @Javagedes (#703)
    Change Details
      ## Description

    This pull request allows services that have no dependencies to be directly registered with the core during Core setup, which prevents the need for a wrapper component to simply instantiate and register a component. This makes the service immediately available and reduces the number of components that must be executed. This supports the ability for the core to directly take soft dependencies on services.

    Additionally, This PR adds documentation to clarify that if a service can be directly registered with the core, the service implementation should go in the crates service module.

    Additionally, this adds more documentation on Components and services to clarify to what a component is, what makes up a component, and how a component differs from configuration and services.

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

    How This Was Tested

    N/A

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    

📖 Documentation Updates

  • [REBASE\&FF] Always produce UefiDecompress protocol / section extractor @Javagedes (#702)
    Change Details
      ## Description

    This PR converts the SectionExtractor trait to be consumed as a service rather than as a special method in the Core. This makes the section extractor optional, so a core section extractor implementation is now provided which always provide Tiano / UEFI decompression functionality. Registering a SectionExtractor implementation will add additional capabilities to the core section extractor.

    In addition to this, the EfiDecompress protocol is now always produced by the core, in compliance with the SCTs

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

    How This Was Tested

    Continued boot with Q35

    Integration Instructions

    1. patina_section_extractor::NullSectionExtractor has been removed, as it is the same as not registering the service.

    2. platforms must now register their section extractor with .with_service(<extractor>) or .with_component(<comp_to_produce_service>) instead of relying on the default implementation when initializing the core. If a platform is using .with_section_extractor(...), it must be removed. If they are using .with_section_extractor(...) with a section extractor from patina_section_extractor, then they can simply move it after the init_memory method and update it to .with_service(...)

    // Old
    Core::default()
      .with_section_extractor(patina_section_extactor::CompositeSectionExtractor::default())
      .init_memory(physical_hob_list)
      .start()
    // New
    Core::default()
      .init_memory(physical_hob_list)
      .with_service(patina_section_extractor::CompositeSectionExtractor::default())
      .start()
      </blockquote>
      <hr>
    </details>
    
  • [REBASE\&FF] Allow services to be registered with the core @Javagedes (#703)
    Change Details
      ## Description

    This pull request allows services that have no dependencies to be directly registered with the core during Core setup, which prevents the need for a wrapper component to simply instantiate and register a component. This makes the service immediately available and reduces the number of components that must be executed. This supports the ability for the core to directly take soft dependencies on services.

    Additionally, This PR adds documentation to clarify that if a service can be directly registered with the core, the service implementation should go in the crates service module.

    Additionally, this adds more documentation on Components and services to clarify to what a component is, what makes up a component, and how a component differs from configuration and services.

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

    How This Was Tested

    N/A

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    

Full Changelog: patina-v7.0.1...v8.0.0