ludic/tools/x
Orkuncakilkaya b0143337d9
All checks were successful
bootstrap / cfree-fixpoint (push) Successful in 18s
ci / build-and-test (push) Successful in 1m17s
commit-lint / conventional-commits (push) Successful in 4s
docs / build-and-deploy (push) Successful in 20s
feat(ecs): engine-owned systems auto-tick user components (#43)
Adds the ECS hook issues #43 and #47 named as their real dependency: a
system the *engine* owns, inserted into the frame loop over a component a
game merely declares and carries — no `handler` wired.

- runtime/native/systems.ludic: esys_spriteanim (SpriteAnim frame advance:
  loop/once/pingpong) and esys_motion (Motion value tween: linear/in/out/
  in-out), both on the by-name reflection ABI, integer + deterministic.
- backend: emit_engine_systems_for_phase inserts the calls after every user
  handler in a phase (auto-loop and the drivable tick helpers alike);
  uses_engine_systems() drives the systems.ludic splice, the world-table
  force-emit, and makes a component-only game count as a systems game.
- A game that declares neither component is byte-for-byte unchanged.

Worked example + regression: examples/library/anim_ecs.ludic. Full suite
73 passed, self-host C-free bootstrap fixpoint intact.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-31 15:41:44 +03:00
..
build.ludic chore(repo): DX cleanup — categorise examples, text-diffable golden, build/ output (#27 #28 #30) 2026-08-30 18:54:21 +03:00
checks.ludic feat(tooling): port the doc/lint/grammar checks to Ludic (no Python) 2026-08-31 01:06:38 +03:00
docgen.ludic feat(tooling): port the docgen site generator to Ludic (no Python) (#41) 2026-08-31 02:12:32 +03:00
docgen_check.ludic feat(tooling): port the docgen site generator to Ludic (no Python) (#41) 2026-08-31 02:12:32 +03:00
docgen_gen.ludic feat(tooling): port the docgen site generator to Ludic (no Python) (#41) 2026-08-31 02:12:32 +03:00
json.ludic feat(tooling): port the doc/lint/grammar checks to Ludic (no Python) 2026-08-31 01:06:38 +03:00
main.ludic feat(testing): line coverage via --coverage + bin/x test --coverage (#45) 2026-08-31 14:51:14 +03:00
prelude.ludic ci: add build + test + bootstrap-cfree workflows for the Forgejo runner 2026-08-30 23:23:23 +03:00
release.ludic feat(release): SemVer + ludicc --version, changesets, and x release 2026-08-30 23:46:59 +03:00
selfhost.ludic feat(stdlib): add Anim.* + Tween.* — deterministic 2D animation & tweening (#5) 2026-08-31 13:05:06 +03:00
selfhost_test.ludic ci: add build + test + bootstrap-cfree workflows for the Forgejo runner 2026-08-30 23:23:23 +03:00
test.ludic feat(ecs): engine-owned systems auto-tick user components (#43) 2026-08-31 15:41:44 +03:00
tools.ludic feat(lang): new Type { field: value } record initialisers 2026-08-31 01:20:06 +03:00