Skip to content

Commit dfc42f0

Browse files
UnbreakableMJclaude
andcommitted
release: v0.8.5 — non-x86 UEFI fix + M6-3 part 1
Fixes the non-x86 UEFI build regression v0.8.4's release workflow exposed, and bundles the M6-3 part 1 TSC instrumentation. v0.8.4 shipped the GH Release page with only the x86-64 assets because the AArch64 / RISC-V 64 / LoongArch64 cross builds failed on strict compilation: the Linux-Boot-Protocol dispatch in zamak-uefi/src/main.rs (added in M2-12) wasn't gated to target_arch = "x86_64", so `handoff::jump_to_linux_kernel` looked like a missing item on non-x86 targets. The CI `cross` job had been masking this with `|| true` since v0.6.x. Fixed by: - `#[cfg(target_arch = "x86_64")]` on `KernelHandoff::Linux`, `load_linux_kernel()`, `uefi_mem_ty_to_e820()`, the `linux_boot` import, the `PROTOCOL=linux` dispatch branch, and the Linux match arm. - Removing `|| true` from the `cross` job in both `.github/workflows/ci.yml` and the `.forgejo/workflows/ci.yml` mirror. All four UEFI targets now build clean under `-D warnings`. v0.8.5 also picks up the M6-3 part 1 instrumentation (already on main since ce6f861): `zamak-uefi` emits ZAMAK_PHASE= / ZAMAK_TSC_MHZ= lines on COM1 at six boot checkpoints, and `zamak-cli bench parse-serial` consumes the captured log to report cycles + ns per phase. See CHANGELOG.md. 12 workspace crates bumped 0.8.4 → 0.8.5. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent ce6f861 commit dfc42f0

19 files changed

Lines changed: 97 additions & 35 deletions

File tree

.forgejo/workflows/ci.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,10 +147,15 @@ jobs:
147147
components: rust-src
148148
targets: ${{ matrix.target }}
149149
- name: cargo build --target ${{ matrix.target }}
150+
# The `|| true` tolerance was removed in v0.8.5 — with the
151+
# current source tree all four UEFI targets build clean
152+
# under `-D warnings`, and silent failures had previously
153+
# let a broken commit (missing `#[cfg(target_arch=...)]` on
154+
# the Linux handoff) reach a tag without CI noticing.
150155
run: |
151156
cargo build -p zamak-uefi --target ${{ matrix.target }} \
152157
-Z build-std=core,alloc,compiler_builtins \
153-
-Z build-std-features=compiler-builtins-mem || true
158+
-Z build-std-features=compiler-builtins-mem
154159
155160
size-gate:
156161
runs-on: ubuntu-latest

.github/workflows/ci.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,10 +147,15 @@ jobs:
147147
components: rust-src
148148
targets: ${{ matrix.target }}
149149
- name: cargo build --target ${{ matrix.target }}
150+
# The `|| true` tolerance was removed in v0.8.5 — with the
151+
# current source tree all four UEFI targets build clean
152+
# under `-D warnings`, and silent failures had previously
153+
# let a broken commit (missing `#[cfg(target_arch=...)]` on
154+
# the Linux handoff) reach a tag without CI noticing.
150155
run: |
151156
cargo build -p zamak-uefi --target ${{ matrix.target }} \
152157
-Z build-std=core,alloc,compiler_builtins \
153-
-Z build-std-features=compiler-builtins-mem || true
158+
-Z build-std-features=compiler-builtins-mem
154159
155160
size-gate:
156161
runs-on: ubuntu-latest

CHANGELOG.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,37 @@ All dates use ISO 8601 format (YYYY-MM-DD).
1212

1313
## [Unreleased]
1414

15+
## [0.8.5] - 2026-04-24
16+
17+
Bundles the M6-3 part 1 boot-phase instrumentation plus a
18+
non-x86 UEFI build regression fix that v0.8.4's release
19+
workflow surfaced (AArch64 / RISC-V / LoongArch cross builds
20+
failed strict compilation because the Linux-Boot-Protocol
21+
dispatch added in M2-12 wasn't gated to `target_arch =
22+
"x86_64"`; the `cross` CI job had been masking it with
23+
`|| true` since v0.6.x).
24+
25+
v0.8.4's GH Release page has the x86-64 assets only
26+
(BOOTX64.EFI + CLI binaries + SBOM + SHA256SUMS). Use v0.8.5
27+
for the full 4-arch UEFI asset set.
28+
29+
### Fixed
30+
31+
- **Non-x86 UEFI strict builds** (`zamak-uefi/src/main.rs`,
32+
`zamak-uefi/src/handoff.rs`) — gated `KernelHandoff::Linux`,
33+
`load_linux_kernel()`, `uefi_mem_ty_to_e820()`, and the
34+
`zamak_core::linux_boot` import behind
35+
`#[cfg(target_arch = "x86_64")]` so the compile_error-free
36+
build holds on all four UEFI targets. AArch64 Linux booting
37+
uses PE/COFF + EFI-stub (a different surface) and was never
38+
intended to go through the bzImage path.
39+
- **CI `cross` job no longer swallows build errors**
40+
(`.github` + `.forgejo` workflow mirrors) — removed the
41+
`|| true` tolerance on `cargo build -p zamak-uefi`. With the
42+
Linux-path gating in place all four targets build clean
43+
under `-D warnings`; silent failure had previously let the
44+
v0.8.4 tag ship with broken non-x86 binaries.
45+
1546
### Added
1647

1748
- **M6-3 part 1 — boot-phase TSC instrumentation**. `zamak-uefi`

Cargo.lock

Lines changed: 10 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

zamak-bios/Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[package]
44
name = "zamak-bios"
5-
version = "0.8.4"
5+
version = "0.8.5"
66
edition = "2021"
77
license = "GPL-3.0-or-later"
88

@@ -13,8 +13,8 @@ license = "GPL-3.0-or-later"
1313
smp = []
1414

1515
[dependencies]
16-
zamak-core = { path = "../zamak-core", version = "0.8.4" }
17-
zamak-theme = { path = "../zamak-theme", version = "0.8.4" }
16+
zamak-core = { path = "../zamak-core", version = "0.8.5" }
17+
zamak-theme = { path = "../zamak-theme", version = "0.8.5" }
1818
log = "0.4"
1919
x86_64 = { version = "0.15", default-features = false, features = ["instructions"] }
2020
limine-protocol = "0.5"

zamak-cli/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[package]
44
name = "zamak-cli"
5-
version = "0.8.4"
5+
version = "0.8.5"
66
edition = "2021"
77
description = "Host-side CLI tool for ZAMAK bootloader (MBR install, config enrollment, SBOM)"
88
license = "GPL-3.0-or-later"

zamak-core/Cargo.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22

33
[package]
44
name = "zamak-core"
5-
version = "0.8.4"
5+
version = "0.8.5"
66
edition = "2021"
77
license = "GPL-3.0-or-later"
88

99
[dependencies]
10-
zamak-proto = { path = "../zamak-proto", version = "0.8.4" }
11-
zamak-macros = { path = "../zamak-macros", version = "0.8.4" }
12-
zamak-theme = { path = "../zamak-theme", version = "0.8.4" }
10+
zamak-proto = { path = "../zamak-proto", version = "0.8.5" }
11+
zamak-macros = { path = "../zamak-macros", version = "0.8.5" }
12+
zamak-theme = { path = "../zamak-theme", version = "0.8.5" }
1313
limine-protocol = "0.5"
1414
goblin = { version = "0.7", default-features = false, features = ["elf64", "elf32", "endian_fd", "alloc"] }
1515

zamak-decompressor/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[package]
44
name = "zamak-decompressor"
5-
version = "0.8.4"
5+
version = "0.8.5"
66
edition = "2021"
77
description = "BIOS stage2 decompressor — inflates zamak-bios.sys to a fixed physical address"
88
license = "GPL-3.0-or-later"

zamak-linux-stub-kernel/Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

zamak-linux-stub-kernel/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
[package]
55
name = "zamak-linux-stub-kernel"
6-
version = "0.8.4"
6+
version = "0.8.5"
77
edition = "2021"
88
description = "Stub Linux-Boot-Protocol bzImage for zamak-test's linux-bzimage smoke suite (M2-12). Emits 'Linux version 0.0.0-zamak-stub' on COM1 and exits via QEMU isa-debug-exit."
99
license = "GPL-3.0-or-later"

0 commit comments

Comments
 (0)