ludic/runtime/native
Orkuncakilkaya ad3be0c53c
All checks were successful
bootstrap / cfree-fixpoint (push) Successful in 23s
ci / build-and-test (push) Successful in 2m23s
commit-lint / conventional-commits (push) Successful in 5s
docs / build-and-deploy (push) Successful in 28s
feat(input,ecs): #79 Input.axis_i directional int + #84 world bounds
#79 — Input.axis_i(neg,pos) -> int returns a -1/0/1 movement intent from the
multi-key device set, so WASD-to-movement needs no bool->int glue and feeds an
int mover directly (dx = Input.axis_i('a','d')).

#84 — a Bounds config entity (rect + policy, from ludic.core) drives the
engine-owned world-bounds system (LateUpdate): clamp / wrap / bounce (clamp +
flip Body velocity) / kill (despawn a body fully outside). Reads the Collider
size so the box stays inside; off by default, spliced only when Bounds is
declared (byte-identical otherwise). Adds World.despawn(e) — the by-id
reflective despawn (runs @OnDespawn + frees) via a new world_despawn intrinsic
whose @fn_world_despawn helper is emitted in emit_program's tail once a use is
seen (the g_uses_* prelude pattern), used by the kill policy and callable from
any system.

Examples input_movement + world_bounds. Full suite 112/0, goldens
byte-identical, fixpoint holds.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-02 07:44:41 +03:00
..
audio.ll feat(audio): Audio.* standard library over a native AVAudioPlayer backend (#22) 2026-08-31 17:52:31 +03:00
audio.ludic feat(audio): Audio.* standard library over a native AVAudioPlayer backend (#22) 2026-08-31 17:52:31 +03:00
base64.ludic feat(stdlib): Tiled P0 — XML reader + base64 decode + gzip framing (#67) 2026-09-01 14:04:49 +03:00
bignum.ludic feat(types): BigInt + Decimal exact economy numbers (#52) 2026-08-31 18:45:14 +03:00
cocoa.ll fix(windowed): #88 don't force-quit windowed games on Esc or 'q' 2026-09-02 07:23:09 +03:00
core.ludic feat(camera): #78 deterministic Camera.zoom (Q16.16 render-time zoom) 2026-09-02 06:55:37 +03:00
dict.ludic feat(types): Dict + Set string-keyed containers (#54) 2026-08-31 18:51:42 +03:00
grid.ludic feat(stdlib): add Grid.* — tile geometry + A* pathfinding over the tilemap (#24) 2026-08-31 12:36:12 +03:00
http.ll feat(http): Http.* poll-based HTTP/HTTPS client over a native NSURLConnection backend (#6) 2026-08-31 18:10:53 +03:00
http.ludic feat(http): Http.* poll-based HTTP/HTTPS client over a native NSURLConnection backend (#6) 2026-08-31 18:10:53 +03:00
image.ludic feat(render): #85 engine sprite-render system + deprecate bare draw_sprite 2026-09-02 07:20:13 +03:00
inflate.ludic feat(stdlib): Tiled P0 — XML reader + base64 decode + gzip framing (#67) 2026-09-01 14:04:49 +03:00
input.ludic feat(input,ecs): #79 Input.axis_i directional int + #84 world bounds 2026-09-02 07:44:41 +03:00
jobs.ludic feat(stdlib): Jobs, Promises & opt-in Sync concurrency (#14) 2026-09-01 03:32:31 +03:00
light.ludic feat(light): render-quality tiers 3-4 — cones, falloff, soft shadows, gels, normals, day/night (#49) 2026-08-31 16:35:41 +03:00
numeric.ludic fix(compiler): preserve declared type of const references 2026-09-01 02:48:03 +03:00
query.ludic feat(stdlib): add Query.* — ECS spatial queries over the reflection ABI (#42) 2026-08-31 13:19:25 +03:00
reflect_io.ludic feat(reflect): generic value tree + Reflect.serialize/apply + JSON bridge (#44) 2026-08-31 15:19:21 +03:00
regex.ludic feat(stdlib): add Regex.* — a linear-time regular-expression engine (#18) 2026-08-31 12:23:19 +03:00
regex_vm.ludic feat(stdlib): add Regex.* — a linear-time regular-expression engine (#18) 2026-08-31 12:23:19 +03:00
systems.ludic feat(anim): animation ergonomics — named clips, Anim.play/Motion.to, frame events, fluent Tween handles (#48) 2026-08-31 16:53:16 +03:00
systems_bounds.ludic feat(input,ecs): #79 Input.axis_i directional int + #84 world bounds 2026-09-02 07:44:41 +03:00
systems_light.ludic feat(light): render-quality tiers 3-4 — cones, falloff, soft shadows, gels, normals, day/night (#49) 2026-08-31 16:35:41 +03:00
systems_move.ludic feat(engine): 2D collision / physics-lite — Body + Collider + esys_move (#65) 2026-09-01 13:17:36 +03:00
systems_sprite.ludic feat(render): #85 engine sprite-render system + deprecate bare draw_sprite 2026-09-02 07:20:13 +03:00
tiled.ludic feat(stdlib): Tiled P6 — infinite/chunked maps, .world stitching, base64+zstd (#74) 2026-09-01 16:07:10 +03:00
tiled_spawn.ludic feat(stdlib): Tiled P4 — objects, custom props/types, templates, opt-in spawn (#72) 2026-09-01 15:08:06 +03:00
truetype.ludic refactor(lang): rename builtins flr->floor and fx->fixed 2026-08-30 02:01:56 +03:00
truetype_raster.ludic refactor(lang): rename builtins flr->floor and fx->fixed 2026-08-30 02:01:56 +03:00
tween.ludic feat(anim): animation ergonomics — named clips, Anim.play/Motion.to, frame events, fluent Tween handles (#48) 2026-08-31 16:53:16 +03:00
ui.ludic refactor(lang): rename the ptr/ptrs types to pointer/pointers 2026-08-30 01:58:54 +03:00
ui_draw.ludic refactor(lang): rename the str type (and stringify builtin) to string 2026-08-30 01:51:11 +03:00
value.ludic feat(reflect): generic value tree + Reflect.serialize/apply + JSON bridge (#44) 2026-08-31 15:19:21 +03:00
xml.ludic feat(stdlib): Tiled P0 — XML reader + base64 decode + gzip framing (#67) 2026-09-01 14:04:49 +03:00
zstd.ludic feat(stdlib): Tiled P6 — infinite/chunked maps, .world stitching, base64+zstd (#74) 2026-09-01 16:07:10 +03:00