..
a-hidden-body-still-stands-in-the-sun.md
fix(render3d): a body hidden from the camera still stands in the sun
2026-09-19 21:32:11 +03:00
a-leaf-is-not-matte.md
fix(render3d): a leaf is not matte
2026-09-19 16:41:33 +03:00
a-lens-and-an-edge.md
feat(render3d): anti-aliasing that exists, and a lens for the viewfinder
2026-09-19 17:38:25 +03:00
actions.md
feat(lang): 0.R1 - actions and reducers
2026-09-25 19:13:46 +03:00
an-aspen-quakes.md
feat(render3d): an aspen quakes, and a tree is no longer bent like a bow
2026-09-19 21:13:42 +03:00
bind-variable.md
feat(lang): bind a port member that takes nothing to a variable
2026-09-25 13:02:01 +03:00
build-ir-in-temp.md
fix(cli): build's IR goes to the run's temp directory, not the project
2026-09-23 17:29:55 +03:00
check-build.md
feat(cli): ludic build --check / ludicc --check - check without building
2026-09-25 13:13:42 +03:00
contact-darkening.md
feat(render3d): the lake answers to a body standing in it
2026-09-19 20:23:27 +03:00
declared-namespaces.md
feat(lang): L6 namespaces declared in Ludic - alias
2026-09-24 02:40:57 +03:00
def-from-resource.md
feat(lang): def REGISTRY from "file.lres" - a game fills an open registry from its own file
2026-09-25 07:22:05 +03:00
defaults-views-templates.md
feat(ui): ui_scale and ui_box, on-submit, zoom (and a length over a length in calc), on-hold
2026-09-25 03:31:38 +03:00
deps-alias-writes.md
feat(cli): ludic deps --writes warns about writes through a local alias
2026-09-25 13:22:37 +03:00
deps-reach.md
feat(cli): 0.R4 - ludic deps sees through fn values (widest_reach) and lists the widest functions (--widest N, --reach N)
2026-09-26 06:24:46 +03:00
deps-write-reach.md
feat(cli): 0.R5 - ludic deps says what a function can come to change (widest_write_reach, --wreach N); a port member and a registry field reach only themselves
2026-09-26 23:19:54 +03:00
duplicate-definitions.md
feat(lang): a name is defined once, a local once per block, and a result is always returned
2026-09-23 23:55:20 +03:00
ecs-growable-stores.md
feat(compiler): the built-in ECS's stores grow - 100 000 entities, where 1024 was the wall
2026-09-27 22:53:24 +03:00
engine-alias-shadow.md
fix(lang): a function named like an engine namespace method's target is refused
2026-09-25 05:14:45 +03:00
expect-eq-strings.md
fix(test): expect_eq on strings compares their text and prints both on a failure
2026-09-25 19:23:38 +03:00
expect-floats.md
fix(test): expect_eq and expect_near compare floats as floats
2026-09-25 05:06:15 +03:00
friend-of.md
feat(lang): friend module lab of fishing, data - a friend of the modules it names
2026-09-25 04:12:47 +03:00
function-values.md
feat(lang): functions are values (L2), and render3d takes its scene as callbacks
2026-09-24 00:27:26 +03:00
generics.md
feat(lang): L5 generic records and functions
2026-09-24 02:21:15 +03:00
leaves-light-and-the-bole.md
fix(runtime): the wheel on macOS did nothing, or everything
2026-09-20 01:24:37 +03:00
lexer-literals.md
fix(lang): a template inside another's hole, and integer literals past 2^31 - 1
2026-09-25 08:10:46 +03:00
light-air-and-the-hour.md
feat(render3d): the air and the light are the hour's, not one constant apiece
2026-09-19 14:42:30 +03:00
light-you-can-see.md
feat(render3d): light you can see - sun shafts and valley mist
2026-09-19 16:06:16 +03:00
lint.md
feat(tools): L10 ludic-fmt enforces a project's style
2026-09-24 14:38:35 +03:00
listener-return.md
fix(events): a listener's return ends that listener, not the dispatch
2026-09-23 17:42:18 +03:00
ludic-deps.md
feat(cli): ludic deps - the module graph as the compiler resolved it
2026-09-25 11:16:34 +03:00
ludic-lab.md
feat(ludic.lab): the visual lab as a package - a scene on a plate, never a world
2026-09-25 07:48:43 +03:00
module-layers.md
feat(lang): layers - module flow in layer app uses base, items
2026-09-25 12:54:15 +03:00
module-scope.md
feat(lang): L3 module scope - module, export, friend module
2026-09-24 00:52:12 +03:00
module-uses.md
feat(lang): module NAME uses A, B - a module reaches only the modules it names
2026-09-25 04:06:45 +03:00
native-libraries.md
feat(pkg): phase 15 - a package can carry a native library
2026-09-26 23:35:45 +03:00
native-notices.md
feat(bundle): a native library's licence ships with it - each linked package's native/LICENSE* beside the .exe, in Contents/Resources on macOS
2026-09-27 14:43:16 +03:00
near-fade-spirv.md
feat(render3d): Vulkan in a macOS window through MoltenVK; window built-ins take a slice's elements; the NEAR_FADE SPIR-V
2026-09-27 00:52:45 +03:00
numbers-float-strict.md
feat(lang): strict numbers in float files; render3d on float
2026-09-23 17:13:25 +03:00
numbers-float.md
feat(lang): numbers float - a module whose decimal literals are float
2026-09-23 16:02:11 +03:00
one-wind.md
feat(render3d): one wind, and everything in the valley is moved by it
2026-09-19 18:24:43 +03:00
open-registry.md
feat(lang): open registry - other modules' defs, in an order imports cannot change
2026-09-25 04:28:34 +03:00
package-export-clash.md
fix(lang): 0.R4 - ludic.ui's UiAct is its own, and a name that meets a package's export says whose it is
2026-09-26 06:57:35 +03:00
physics-jolt.md
feat(physics): phase 16 - ludic.physics over Jolt Physics v5.6.0
2026-09-26 23:41:37 +03:00
ports.md
feat(lang): ports - port Clock { ... } in a module, bind Clock { ... } in the app
2026-09-25 04:20:12 +03:00
private-kinds.md
feat(lang): a module's private records and events are its own
2026-09-25 11:02:48 +03:00
private-per-module.md
feat(lang): a module's private names are its own
2026-09-25 07:08:05 +03:00
prune-late-states.md
fix(migrate): 0.R4 - --prune keeps a state declared after a plain parameter; a parameter named twice is refused
2026-09-26 05:32:08 +03:00
queue-owns-count.md
feat(base): 0.R4 - a queue keeps its own count, so every package verb takes only its own state; ludic migrate state --prune
2026-09-26 04:19:56 +03:00
rain-that-leaves-something.md
feat(render3d): rain that leaves something behind
2026-09-19 19:43:29 +03:00
README.md
refactor(cli)!: split the contributor tool out of the ludic CLI
2026-09-05 23:15:12 +03:00
redeclared-local-missing-return.md
feat(lang): a name is defined once, a local once per block, and a result is always returned
2026-09-23 23:55:20 +03:00
reducer-reads.md
feat(lang): 0.R5 - a reducer writes one state and may read others, declared between its state and the action
2026-09-26 18:23:48 +03:00
registries.md
feat(lang): L8 registries by declaration - registry and def
2026-09-24 13:34:51 +03:00
render3d-hooks.md
feat(lang): functions are values (L2), and render3d takes its scene as callbacks
2026-09-24 00:27:26 +03:00
resources.md
feat(lang): L9 resource files - registry ... from
2026-09-24 14:00:20 +03:00
runtime-on-call.md
fix(runtime): Random.* in any program; value_* called directly brings the value tree
2026-09-25 04:59:48 +03:00
state.md
feat(lang): 0.S - components take states in their header; migrate writes them, never inside a name, never outside the programs given, never into a package's state
2026-09-25 17:11:15 +03:00
still-water.md
fix(render3d): the meadow is vegetation, and still water reads as water
2026-09-19 18:07:01 +03:00
test-generics.md
fix(test): a generic function called from a test block works
2026-09-25 04:46:08 +03:00
test-parallel.md
feat(test): ludic test -j N runs tests side by side
2026-09-25 11:38:09 +03:00
test-per-process.md
feat(test): ludic test <dir>, each test block in a process of its own
2026-09-25 04:39:55 +03:00
text-to-float.md
feat(text): Text.to_float; a void function's return <value> is an error
2026-09-23 19:19:28 +03:00
the-ground-up-close.md
fix(render3d): the ground keeps more of its own colour, and the rock keeps all of it
2026-09-19 16:29:17 +03:00
the-world-knows-you-are-there.md
feat(render3d): the lake answers to a body standing in it
2026-09-19 20:23:27 +03:00
toolchain-r3-fixes.md
fix(lang): the action drain is the program's; --check runs every check a build makes; a registry key named count is refused; name lookups are tables
2026-09-25 23:34:43 +03:00
type-checker.md
feat(lang): L4 type checker between parse and emit
2026-09-24 01:34:49 +03:00
ui-press-drain.md
fix(ui): 0.R4 - an action a UI button dispatches is reduced before the frame is presented
2026-09-26 07:08:26 +03:00
unknown-type-names.md
fix(check): 0.R4 - a misspelled type in a parameter, a result or a field is refused where it is written
2026-09-26 05:58:35 +03:00
unsafe.md
feat(lang): L7 memory is safe unless it says unsafe
2026-09-24 12:53:27 +03:00
uses-packages.md
feat(lang): packages count under uses; a port of defaults may go unbound
2026-09-25 05:36:11 +03:00
void-return-error.md
feat(text): Text.to_float; a void function's return <value> is an error
2026-09-23 19:19:28 +03:00
vulkan-leaks.md
fix(render3d): the Vulkan renderer stops leaking as it loads and draws
2026-09-27 23:03:38 +03:00
vulkan-on-macos.md
feat(render3d): Vulkan in a macOS window through MoltenVK; window built-ins take a slice's elements; the NEAR_FADE SPIR-V
2026-09-27 00:52:45 +03:00
window-buffers.md
feat(render3d): Vulkan in a macOS window through MoltenVK; window built-ins take a slice's elements; the NEAR_FADE SPIR-V
2026-09-27 00:52:45 +03:00
worker-reads-states.md
feat(compiler): a Job.parallel_for worker may read a state but not change one
2026-09-27 22:04:59 +03:00