Skip to content

feat(null): add backend.manifest.zon — manifest-splice codegen (#386 step 2) - #430

Merged
apotema merged 2 commits into
mainfrom
feat/386-null-manifest
Jun 30, 2026
Merged

feat(null): add backend.manifest.zon — manifest-splice codegen (#386 step 2)#430
apotema merged 2 commits into
mainfrom
feat/386-null-manifest

Conversation

@apotema

@apotema apotema commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

null extraction step 2 (window conformance was already done in #411). Adds backends/null/backend.manifest.zon + build_fragments/{backend_dep,link}.txt. Presence of the manifest opts the null desktop build into the manifest-splice codegen path.

  • Loop-style, pure-Zig, zero deps. The link fragment is empty — null has no native artifact (the enum path's .null => {} emitted nothing).
  • backend_dep.txt is the verbatim .backend_null section body.

Byte-identical to the enum path (diffed a generated baseline → 0 diff), including the is_tests_target path that forces .backend=.null on host. zig build test green.

Next: extract null → labelle-null, flip builtinProvider(.null) (+ rework the ~14 .backend=.null sites incl. is_tests_target), slim.

Summary by CodeRabbit

  • New Features

    • Added support for a headless “null” backend.
  • Bug Fixes

    • Simplified backend integration by removing in-tree WebGPU-specific build and example wiring.
    • Removed several platform-specific framework/linking steps from automated builds.
  • Chores

    • Cleaned up example and test configurations to stop referencing the removed WebGPU backend.
    • Updated CI and test coverage to reflect the new backend layout.

apotema added 2 commits June 30, 2026 14:04
…hase 6c)

wgpu is resolved out-of-tree now (`.backend = .wgpu` → the labelle-wgpu provider,
flipped in #428), so the in-tree backends/wgpu/ slot is dead weight. Delete it +
the assembler example + the coverage that built them in-tree:

- Remove backends/wgpu/ (src/templates/build_fragments/manifest/build + example).
- Remove examples/wgpu (the assembler-generated wgpu project) — its
  assembler-builds-a-wgpu-project coverage (incl. the Foundation/QuartzCore/Metal
  link-fragment regression guard) moved to labelle-wgpu's CI (PR #1).
- CI: drop the `wgpu backend WAV parser tests` + `wgpu backend demo build (macOS)`
  steps and the `Generate + build the wgpu example` examples-integration step.
- Tests: drop the desktop wgpu-artifacts unit test (no in-tree package to resolve)
  and the wgpu case from the in-tree-template preview regression list.

Two backends now fully out of the assembler bundle (bgfx + wgpu). The agnostic
external-fetch path stays covered by the `external-null` (nullfixture) step.
…step 2)

null extraction step 2 (window conformance was done in #411). Presence of
backends/null/backend.manifest.zon opts the null DESKTOP build into the
manifest-splice path instead of the enum `switch (cfg.backend)` sections.

Loop-style (the headless main drives a fixed-frame tick loop), pure-Zig, zero
deps. The LINK fragment is EMPTY — null has no native artifact (the enum path's
`.null => {}` emitted nothing). backend_dep.txt is the verbatim .backend_null
section body.

Output BYTE-IDENTICAL to the enum path (diffed a generated baseline → 0 diff),
including the is_tests_target path (which forces .backend=.null on host). `zig
build test` green.
@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 77222217-0a0e-4563-a6fd-2c6b484ec793

📥 Commits

Reviewing files that changed from the base of the PR and between 9f0ef71 and 8d580d1.

📒 Files selected for processing (32)
  • .github/workflows/ci.yml
  • backends/null/backend.manifest.zon
  • backends/null/build_fragments/backend_dep.txt
  • backends/null/build_fragments/link.txt
  • backends/wgpu/backend.manifest.zon
  • backends/wgpu/build.zig
  • backends/wgpu/build.zig.zon
  • backends/wgpu/build_fragments/link.txt
  • backends/wgpu/example/build.zig
  • backends/wgpu/example/build.zig.zon
  • backends/wgpu/example/main.zig
  • backends/wgpu/src/audio.zig
  • backends/wgpu/src/gfx.zig
  • backends/wgpu/src/gfx/astc.zig
  • backends/wgpu/src/gfx/batch.zig
  • backends/wgpu/src/gfx/draw.zig
  • backends/wgpu/src/gfx/font.zig
  • backends/wgpu/src/gfx/state.zig
  • backends/wgpu/src/gfx/texture.zig
  • backends/wgpu/src/gfx/types.zig
  • backends/wgpu/src/input.zig
  • backends/wgpu/src/window.zig
  • backends/wgpu/templates/desktop.txt
  • examples/wgpu/.gitignore
  • examples/wgpu/components
  • examples/wgpu/gizmos
  • examples/wgpu/hooks
  • examples/wgpu/prefabs
  • examples/wgpu/project.labelle
  • examples/wgpu/scenes/main.jsonc
  • test/build_zig_tests.zig
  • test/preview_mode_tests.zig
💤 Files with no reviewable changes (27)
  • examples/wgpu/gizmos
  • examples/wgpu/hooks
  • backends/wgpu/example/build.zig.zon
  • examples/wgpu/scenes/main.jsonc
  • examples/wgpu/.gitignore
  • examples/wgpu/components
  • backends/wgpu/build_fragments/link.txt
  • backends/wgpu/src/window.zig
  • examples/wgpu/prefabs
  • backends/wgpu/build.zig.zon
  • backends/wgpu/example/main.zig
  • backends/wgpu/src/gfx/astc.zig
  • backends/wgpu/templates/desktop.txt
  • examples/wgpu/project.labelle
  • backends/wgpu/example/build.zig
  • backends/wgpu/build.zig
  • backends/wgpu/src/gfx/state.zig
  • backends/wgpu/src/gfx/draw.zig
  • backends/wgpu/src/gfx/font.zig
  • backends/wgpu/src/input.zig
  • backends/wgpu/backend.manifest.zon
  • backends/wgpu/src/gfx/batch.zig
  • backends/wgpu/src/audio.zig
  • backends/wgpu/src/gfx/texture.zig
  • backends/wgpu/src/gfx/types.zig
  • backends/wgpu/src/gfx.zig
  • .github/workflows/ci.yml

📝 Walkthrough

Walkthrough

Removes the entire in-tree wgpu backend (source files, build scripts, example application, templates, and CI steps). Adds a new backends/null/backend.manifest.zon manifest and updates the null backend build fragment to reference labelle_null instead of labelle_wgpu. In-tree test references to wgpu are replaced with notes pointing to out-of-tree coverage.

Changes

wgpu backend extraction and null backend wiring

Layer / File(s) Summary
Null backend manifest and build fragment update
backends/null/backend.manifest.zon, backends/null/build_fragments/backend_dep.txt
New backend.manifest.zon defines the null backend with headless loop template and empty link/dep parameters; backend_dep.txt switches dependency from labelle_wgpu/glfw to labelle_null.
wgpu backend source and build removal
backends/wgpu/build.zig, backends/wgpu/build.zig.zon, backends/wgpu/src/*, backends/wgpu/example/*, backends/wgpu/templates/*, backends/wgpu/build_fragments/*, examples/wgpu/*
Deletes the entire in-tree wgpu backend: build scripts, all source modules (gfx, audio, input, window and sub-modules), example application, desktop template, and the associated examples/wgpu project files.
CI and in-tree test cleanup
.github/workflows/ci.yml, test/build_zig_tests.zig, test/preview_mode_tests.zig
Removes wgpu WAV-parser, macOS demo build, and example-integration CI steps; replaces the wgpu desktop-linking unit test with an out-of-tree note; drops the wgpu entry from preview-mode regression cases.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Poem

🐇 Hop, hop, away goes the wgpu heap,
The null backend now takes a quieter leap.
No Metal, no GLFW, no frameworks to bind,
The in-tree wgpu is left far behind.
Out-of-tree it goes, to its very own CI,
The assembler grows lighter — oh my, oh my!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: adding the null backend manifest-splice codegen step.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/386-null-manifest
⚔️ Resolve merge conflicts
  • Resolve merge conflict in branch feat/386-null-manifest

Comment @coderabbitai help to get the list of available commands.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request extracts the wgpu backend out-of-tree, removing its in-tree templates and corresponding unit tests. Additionally, it introduces a manifest file for the null backend (backend.manifest.zon) and updates its build fragment to depend on labelle_null instead of labelle_wgpu. I have no feedback to provide as there are no review comments.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

@apotema
apotema merged commit ce8deaf into main Jun 30, 2026
4 checks passed
@apotema
apotema deleted the feat/386-null-manifest branch June 30, 2026 17:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant