Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
a4ea75c
docs(brief): add S2 milestone brief
guysenpai May 10, 2026
6741a01
docs(brief): confirm specs read for S2
guysenpai May 10, 2026
9b5bd55
docs(brief): activate S2
guysenpai May 10, 2026
40daa0f
chore(bindgen): vendor vulkan + wayland xml registries
guysenpai May 10, 2026
962ace5
feat(bindgen): add minimal XML parser for vk_gen
guysenpai May 10, 2026
c652b17
feat(bindgen): vk_gen emits §4.2-conformant src/core/platform/vk.zig
guysenpai May 10, 2026
9f78fe8
fix(bindgen): apply six §4.2 review fixes to vk_gen output
guysenpai May 10, 2026
345b430
feat(bindgen): wayland_gen emits core + xdg_shell + xdg_decoration
guysenpai May 10, 2026
d23448c
feat(bindgen): wayland_gen extends to method wrappers + libwayland lo…
guysenpai May 10, 2026
1fef271
feat(platform): win32 backend + public Window interface
guysenpai May 10, 2026
bd4eeb9
fix(platform): apply (d) review feedback
guysenpai May 10, 2026
8dafe99
feat(platform): wayland backend with callconv(.c) zig callbacks
guysenpai May 10, 2026
49e7dc6
fix(platform): apply (e) review feedback
guysenpai May 10, 2026
5346130
feat(spike): vulkan triangle render path (step f)
guysenpai May 10, 2026
f4efaf6
feat(spike): real SPIR-V + compile-shaders.sh (step h)
guysenpai May 10, 2026
d1fd95c
fix(spike): apply (f) review feedback
guysenpai May 10, 2026
938b858
feat(spike): smoke-test PPM capture + 5s timeout + SIGINT (step g)
guysenpai May 10, 2026
acee4e8
test(spike): scoring + cli + vk-abi + wayland-abi tests (step i)
guysenpai May 10, 2026
9ef7759
docs(brief): close s2 brief — notes de fin + 5 accepted debts
guysenpai May 10, 2026
f756598
fix(spike): apply missed (g)-review fixes (vk_frame + ppm)
guysenpai May 10, 2026
d15ffc0
docs(validation): scaffold s2 go/no-go report
guysenpai May 10, 2026
8a377f6
fix(bindgen): tolerate null dispatch slots in loadInstance/loadDevice
guysenpai May 10, 2026
8282d0f
fix(build): chain zig fmt after bindgen-vk and bindgen-wayland
guysenpai May 11, 2026
b7a25a2
docs(validation): row 3 artefacts (fedora + nvidia gtx 1660 ti)
guysenpai May 11, 2026
3824f99
docs(validation): fill in row 3 (fedora + nvidia 1660 ti — go)
guysenpai May 11, 2026
7c2fe91
fix(spike): thread oldSwapchain through recreateSwapchain (win11 crash)
guysenpai May 11, 2026
3e395f0
docs(validation): row 2 artefacts (fedora + intel uhd 630 mesa anv)
guysenpai May 11, 2026
a94add0
docs(validation): fill rows 1 and 2 — go decision sealed with notes
guysenpai May 11, 2026
b5a0779
docs(validation): row 1 artefacts (win11 + rtx 4080 super)
guysenpai May 11, 2026
f58bf2a
docs(brief): close s2 — step (j) green on all three target machines
guysenpai May 11, 2026
43fe9ca
fix(spike): skip first 10 frames in --measure-frame-time stats
guysenpai May 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 21 additions & 12 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,33 @@ session and captures the operational state of the project plus the rules that
must never be violated. The full specification lives in the claude.ai
knowledge base — see § Quick links spec.

> **Status:** Phase −1 — S1 in review
> **Status:** Phase −1 — S2 closed (code + validation), PR pending
>
> S1 closed locally: comptime SoA archetype (16 KiB chunks, 16-aligned
> per-component arrays), Chase-Lev work-stealing scheduler with 4 workers
> and per-worker deque ownership, and bench harness all green. Bench median
> on M4 Pro reference: **54.5 µs / 100k entities** (gate ≤ 1.0 ms — GO).
> PR `Phase -1 / Core / Mini-ECS Zig` open; tag `v0.0.2-S1-mini-ecs` will be
> posted by Guy after merge.
> S2 fully validated on three target machines:
> - **Win11 25H2 + RTX 4080 Super (60 Hz, DWM)** : median 16.663 ms / p95 17.606 ms / max 33.590 ms — at the 60 Hz vsync floor.
> - **Fedora 44 + Intel UHD 630 (Mesa ANV, 144 Hz, GNOME Wayland)** : median 6.939 ms / p95 7.358 ms / max 39.996 ms (single warmup outlier).
> - **Fedora 44 + GTX 1660 Ti (NVIDIA prop. 595.71.05, 144 Hz, GNOME Wayland)** : median 6.934 ms / p95 7.252 ms / max 21.008 ms.
>
> Two real bugs caught and fixed by hardware validation that CI would
> never have surfaced: `loadInstance` strict on NULL dispatch slots
> (commit `8a377f6`); `recreateSwapchain` not threading
> `oldSwapchain` into `VkSwapchainCreateInfoKHR` (commit `7c2fe91`).
> Plus a build-system gap: `bindgen-vk`/`bindgen-wayland` now chain
> `zig fmt` (commit `8282d0f`). Validation report at
> `validation/s2-go-nogo.md` ✅ GO on all three rows.
> PR `Phase -1 / Platform / Native Window + Vulkan Triangle` opens
> next; tag `v0.0.3-S2-window-vulkan-triangle` posted by Guy after
> squash-merge.

## Current state

| Field | Value |
|---|---|
| Phase | −1 (Spikes) |
| Current milestone | S1Mini-ECS Zig (in review) |
| Last released tag | `v0.0.1-S0-bootstrap` |
| Active branch | `phase-pre-0/core/mini-ecs` |
| Next planned milestone | S2Window natif + Vulkan triangle |
| Current milestone | S2Window + Vulkan triangle (CLOSED, PR pending) |
| Last released tag | `v0.0.2-S1-mini-ecs` |
| Active branch | `phase-pre-0/platform/window-vulkan-triangle` |
| Next planned milestone | S3Etch grammar EBNF v0.5 |

## Tags

Expand All @@ -37,7 +46,7 @@ knowledge base — see § Quick links spec.
|---|---|---|
| S0 | Infrastructure ready (no engineering hypothesis) | validated |
| S1 | comptime ECS + Chase-Lev work-stealing iterates 100k entities < 1 ms | validated (54.5 µs median on M4 Pro) |
| S2 | Window Win32 + Wayland + Vulkan triangle, native Zig, no SDL/GLFW | pending |
| S2 | Window Win32 + Wayland + Vulkan triangle, native Zig, no SDL/GLFW | validated (3/3 target machines green, validation/s2-go-nogo.md ✅ GO) |
| S3 | Etch grammar EBNF v0.5 implementable, parsing < 5 ms / file | pending |
| S4 | AST tree-walking interpreter executes Etch correctly with ECS bridge | pending |
| S5 | Etch → Zig codegen viable build-time-wise (incremental < 2 s) | pending |
Expand Down
7 changes: 7 additions & 0 deletions assets/shaders/embed.zig
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
//! Compile-time embedding of the S2 spike's pre-compiled SPIR-V shaders.
//! Routed through this tiny module so `@embedFile` resolves inside the
//! `assets/shaders/` package — the spike's executable module sits under
//! `src/`, which `@embedFile` cannot escape directly.

pub const triangle_vert_spv: []const u8 = @embedFile("triangle.vert.spv");
pub const triangle_frag_spv: []const u8 = @embedFile("triangle.frag.spv");
6 changes: 6 additions & 0 deletions assets/shaders/triangle.frag.glsl
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#version 450
layout(location = 0) in vec3 vColor;
layout(location = 0) out vec4 outColor;
void main() {
outColor = vec4(vColor, 1.0);
}
Binary file added assets/shaders/triangle.frag.spv
Binary file not shown.
8 changes: 8 additions & 0 deletions assets/shaders/triangle.vert.glsl
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#version 450
layout(location = 0) in vec2 inPosition;
layout(location = 1) in vec3 inColor;
layout(location = 0) out vec3 vColor;
void main() {
gl_Position = vec4(inPosition, 0.0, 1.0);
vColor = inColor;
}
Binary file added assets/shaders/triangle.vert.spv
Binary file not shown.
32 changes: 32 additions & 0 deletions bindings/upstream/vulkan/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
SPDX-License-Identifier: Apache-2.0 OR MIT

Vendored from KhronosGroup/Vulkan-Headers
Tag: vulkan-sdk-1.4.341.0
Commit: b5c8f996196ba4aa6d8f97e52b5d3b6e70f7e4e2
Source: https://github.com/KhronosGroup/Vulkan-Headers

The vk.xml file in this directory is the Khronos Vulkan API registry.
It is licensed under Apache-2.0 OR MIT, at the consumer's choice.

----------------------------------------------------------------------

Upstream LICENSE.md (verbatim):

Copyright 2015-2023 The Khronos Group Inc.

Files in this repository fall under one of these licenses:

- `Apache-2.0`
- `MIT`

Note: With the exception of `parse_dependency.py` the files using `MIT` license
also fall under `Apache-2.0`. Example:

```
SPDX-License-Identifier: Apache-2.0 OR MIT
```

Full license text of these licenses is available at:

* Apache-2.0: https://opensource.org/licenses/Apache-2.0
* MIT: https://opensource.org/licenses/MIT
Loading
Loading