> Cinder 0.1.0 documentation: Changelog
> Canonical page: https://cinder.ash10.dev/docs/changelog/ · Source: `CHANGELOG.md` in the engine repository (engine commit 47c9352, imported 2026-11-09)
> Index of every page for agents: https://cinder.ash10.dev/llms.txt

# Changelog

All notable changes to Cinder. The format follows Keep a Changelog; versions follow semantic
versioning. Dates are the day the phase gate passed on Linux x86-64 (`REPORT.md` has the runs).

## [0.1.0] - 2026-11-09

First release: a complete Linux x86-64 engine with a playable sample. macOS arm64 is a declared
target but has not been built or run (no machine or runner was available; see `REPORT.md`,
Blockers).

### Added

- **Build and toolchain.** pixi environment pinning Mojo 1.2.0, CMake/Ninja and Python; one C11
  shim `libcinder_native` over pinned submodules (wgpu-native v29.0.1.1, SDL release-3.4.20,
  Jolt Physics v5.6.0 via joltc, cgltf v1.15, stb, KTX-Software v4.4.2, meshoptimizer v1.3,
  MikkTSpace, miniaudio 0.11.26, Dear ImGui v1.93.0-docking via Dear Bindings v0.27, Tracy
  v0.15.0, flecs v4.2.0 for the ECS benchmark; exact commits in `REPORT.md`); generated Mojo bindings with a layout test covering every struct offset and enum
  constant; ASan/UBSan shim build and test runner; Docker toolchain container.
- **Core** (`cinder/core`): logging with sinks, assertions, arena and generational handle pools,
  rings, SIMD vector/matrix/quaternion math, work-stealing job system with per-frame graphs,
  time, filesystem, PNG images, Tracy profiler zones, heap cells with stable addresses.
- **Platform** (`cinder/platform`): SDL3 windows, event translation for keyboard, mouse, wheel,
  window and gamepad, surface creation for X11, Wayland and Metal, ImGui event forwarding.
- **Gfx** (`cinder/gfx`): typed wgpu layer with pooled generational handles and leak accounting,
  WGSL shader manager with `path:line:col` diagnostics and hot reload with last-good fallback,
  pipelines, command recording, swapchain with resize and loss recovery, debug draw.
- **Renderer** (`cinder/render`): frame graph (ordering, culling, transient aliasing, external
  resources, DOT dump), clustered forward+ lighting, four cascaded shadow maps and a spot/point
  shadow atlas, GPU-baked image-based lighting, GTAO, physically based bloom, AgX and ACES tone
  mapping, exposure, 4x MSAA, FXAA, GPU skinning and morph targets, instancing, meshoptimizer
  LODs, debug views; zero heap allocations per steady-state frame.
- **Assets** (`cinder/assets`): glTF 2.0 import (files, GLB, data URIs, KHR_texture_transform,
  KHR_materials_emissive_strength, skins, animations), cooked mesh/material/clip/skeleton
  formats, incremental content-hash cooker and `cinder-cook` CLI, KTX2 textures through libktx
  (ETC1S/UASTC, BC7 transcode), `AssetServer` with async loads, refcounts and hot reload.
- **ECS** (`cinder/ecs`): archetype world with tightly packed columns, typed queries with
  with/without filters and cached query specs, change ticks, command buffers, parent/local/world
  transforms with propagation, access-declared schedules running stages in parallel on the job
  system; measured within 10% of flecs (ADR-0011).
- **Scene** (`cinder/scene`): diffable text format with exact floats and a binary format, a
  component registry with versioned migrations, the ECS to render-scene bridge, glTF spawning
  into the world with collision triangle extraction.
- **Physics** (`cinder/physics`): Jolt world with bit layers, box/sphere/capsule/cylinder/convex
  hull/mesh/scaled shapes, static/kinematic/dynamic bodies, sensors, continuous collision, queued
  contact and activation events, ray and shape casts, `CharacterController` over
  CharacterVirtual (slopes, steps, moving platforms, pushing), ECS sync with interpolation,
  deterministic replay.
- **Animation** (`cinder/anim`): skeletons from glTF and `.cskel`, step/linear/cubic sampling,
  phase-synchronised 1D and 2D blend trees, crossfades, events, root motion, one job per animator.
- **Audio** (`cinder/audio`): miniaudio buses, decoded and streamed sounds, one-shots, 3D
  attenuation, ECS sources and a camera-following listener, headless engine for tests.
- **Input** (`cinder/input`): action/axis maps over keyboard, mouse and gamepad, dead zones,
  runtime rebinding, exact text save/load.
- **App** (`cinder/app`): the `App` runtime and `Game` trait, fixed-step loop with interpolated
  rendering, windowed and `--headless` modes with frame readback, shared CLI options, per-phase
  timing and allocation accounting.
- **Tools** (`cinder/tools`): ImGui debug overlay with frame-time graph, entity inspector editing
  through the scene registry, asset browser, render-graph view and log console; Tracy client with
  manual lifetime.
- **Sample game** (`sample/`): third-person collect-them-all with a skeletal character on the
  character controller, arena and Sponza levels, 32 orbiting shadowed lights, 500+ crates, 3D
  audio and music, pause menu with saved settings and rebindable keys, save/load, autopilot.
  CC0 assets fetched with pinned hashes.
- **Tutorial game** (`examples/first_game`): the code built in `docs/TUTORIAL.md`, run headless
  by its own test.
- **Benchmarks** (`bench/`): stress scene (50k instances, 2,000 bodies, 256 lights), sample game,
  ECS vs flecs; JSON results, adapter-scoped baselines and a 10% regression gate
  (`tools/bench_check.py`); allocation counter library and the zero-allocation test.
- **Documentation**: README quick start, `docs/ARCHITECTURE.md`, `docs/THREADING.md`,
  `docs/TOOLCHAIN.md`, `docs/MOJO_NOTES.md`, `docs/RENDER_VALIDATION.md`, `docs/BENCHMARKS.md`,
  `docs/TUTORIAL.md`, a guide per subsystem in `docs/guides/`, the generated API reference in
  `docs/api/`, fourteen ADRs, `docs/STATUS.md` and `REPORT.md`.

### Quality gates

- Every public symbol has a docstring (`pixi run api-docs-check`, part of `pixi run test`) and
  every code name quoted in the guides exists (`pixi run docs-check`).
- A pre-release review of every public function fixed about 60 defects across all subsystems,
  each with a test (`REPORT.md`, section 5).

### Known limitations

- Only the first directional light is used.

- Not built or run on macOS; golden images exist for lavapipe only; the section 8 budgets are
  recorded on lavapipe, not met on reference hardware (none available).
- The sample's Sponza level loads source glTF textures and starts in more than two seconds.
- KTX-Software's vendored allocator mismatch is tolerated under ASan
  (`alloc_dealloc_mismatch=0`); see `REPORT.md`.
- Built-in components are not `SceneComponent`s, so the inspector edits game-registered types only.
