Philipp Schuster 7 сар өмнө
parent
commit
86ece11c3b

+ 10 - 2
Cargo.lock

@@ -27,11 +27,12 @@ checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
 
 [[package]]
 name = "multiboot2"
-version = "0.21.0"
+version = "0.22.0"
 dependencies = [
  "bitflags",
  "derive_more",
  "log",
+ "multiboot2-common",
  "ptr_meta",
  "uefi-raw",
 ]
@@ -39,13 +40,20 @@ dependencies = [
 [[package]]
 name = "multiboot2-common"
 version = "0.1.0"
+dependencies = [
+ "derive_more",
+ "ptr_meta",
+]
 
 [[package]]
 name = "multiboot2-header"
-version = "0.4.0"
+version = "0.5.0"
 dependencies = [
  "derive_more",
+ "log",
  "multiboot2",
+ "multiboot2-common",
+ "ptr_meta",
 ]
 
 [[package]]

+ 5 - 3
Cargo.toml

@@ -13,9 +13,11 @@ exclude = [
 bitflags = "2.6.0"
 derive_more = { version = "~0.99.18", default-features = false, features = ["display"] }
 log = { version = "~0.4", default-features = false }
+ptr_meta = { version = "~0.2", default-features = false }
 
-# This way, the "multiboot2" dependency in the multiboot2-header crate can be
-# referenced by version, while still the repository version is used
-# transparently during local development.
+# This way, the corresponding crate dependency can be normalley referenced by
+# version, while still the repository version is used transparently during local
+# development.
 [patch.crates-io]
 multiboot2 = { path = "multiboot2" }
+multiboot2-common = { path = "multiboot2-common" }

+ 14 - 2
integration-test/bins/Cargo.lock

@@ -96,21 +96,33 @@ dependencies = [
 
 [[package]]
 name = "multiboot2"
-version = "0.21.0"
+version = "0.22.0"
 dependencies = [
  "bitflags 2.6.0",
  "derive_more",
  "log",
+ "multiboot2-common",
  "ptr_meta",
  "uefi-raw",
 ]
 
+[[package]]
+name = "multiboot2-common"
+version = "0.1.0"
+dependencies = [
+ "derive_more",
+ "ptr_meta",
+]
+
 [[package]]
 name = "multiboot2-header"
-version = "0.4.0"
+version = "0.5.0"
 dependencies = [
  "derive_more",
+ "log",
  "multiboot2",
+ "multiboot2-common",
+ "ptr_meta",
 ]
 
 [[package]]

+ 2 - 0
integration-test/bins/Cargo.toml

@@ -24,3 +24,5 @@ util = { path = "./util" }
 # transparently during local development.
 [patch.crates-io]
 multiboot2 = { path = "../../multiboot2" }
+multiboot2-common = { path = "../../multiboot2-common" }
+multiboot2-header = { path = "../../multiboot2-header" }

+ 2 - 2
multiboot2-header/Cargo.toml

@@ -4,7 +4,7 @@ description = """
 Library with type definitions and parsing functions for Multiboot2 headers.
 This library is `no_std` and can be used in bootloaders.
 """
-version = "0.4.0"
+version = "0.5.0"
 authors = [
     "Philipp Schuster <phip1611@gmail.com>"
 ]
@@ -43,7 +43,7 @@ unstable = []
 derive_more.workspace = true
 log.workspace = true
 ptr_meta.workspace = true
-multiboot2 = { version = "0.21.0", default-features = false }
+multiboot2 = { version = "0.22.0", default-features = false }
 multiboot2-common = "0.1.0"
 
 [package.metadata.docs.rs]

+ 11 - 1
multiboot2-header/Changelog.md

@@ -1,8 +1,18 @@
 # CHANGELOG for crate `multiboot2-header`
 
-## Unreleased
+## v0.5.0
+
+This release contains a major refactoring of the internals, guaranteeing
+even more sanity checks for correct behaviour and lack of UB. In this release,
+the `Builder` was rewritten and lots of corresponding UB in certain
+corer-cases removed. Further, the builder's API was streamlined.
+
+If you are interested in the internals of the major refactorings recently taken
+place, please head to the documentation of `multiboot2-common`.
 
 - **Breaking** All functions that returns something useful are now `#[must_use]`
+- **Breaking** The builder type is now just called `Builder`. This needs the
+  `builder` feature.
 - Updated to latest `multiboot2` dependency
 
 ## 0.4.0 (2024-05-01)

+ 1 - 1
multiboot2/Cargo.toml

@@ -6,7 +6,7 @@ Multiboot2-compliant bootloaders, such as GRUB. It supports all tags from the
 specification including full support for the sections of ELF files. This library
 is `no_std` and can be used in a Multiboot2-kernel.
 """
-version = "0.21.0"
+version = "0.22.0"
 authors = [
     "Philipp Oppermann <dev@phil-opp.com>",
     "Calvin Lee <cyrus296@gmail.com>",

+ 11 - 3
multiboot2/Changelog.md

@@ -1,6 +1,11 @@
 # CHANGELOG for crate `multiboot2`
 
-## Unreleased
+## v0.22.0
+
+This release contains another major refactoring of the internals, guaranteeing
+even more sanity checks for correct behaviour and lack of UB. In this release,
+the `Builder` was rewritten and lots of corresponding UB in certain
+corer-cases removed. Further, the builder's API was streamlined.
 
 If you are interested in the internals of the major refactorings recently taken
 place, please head to the documentation of `multiboot2-common`.
@@ -29,12 +34,15 @@ base is in excellent shape!
 
 ## 0.21.0 (2024-08-17)
 
-This release contains a massive refactoring of various internals. Now, **all
-unit tests pass Miri**, thus we removed lots of undefined behaviour and
+This release contains a massive refactoring of various internals. Now, **almost
+**unit tests pass Miri**, thus we removed lots of undefined behaviour and
 increased the memory safety! 🎉 Only a small part of these internal refactorings
 leak to the public interface. If you don't use external custom tags, you
 should be fine from any refactorings.
 
+_**Edit**: The builder and the framebuffer still contain some UB. This is fixed
+in the next release._
+
 Please note that **all previous releases** must be considered unsafe, as they
 contain UB. However, it is never clear how UB results in immediate incorrect
 behaviour and it _might_ work. **Nevertheless, please migrate to the latest