Commit graph

  • bab9462409 Merge r3d/cb-warm into main (gathering every branch; main's side kept on conflicts) main Orkuncakilkaya 2026-09-30 17:21:21 +03:00
  • 5370507859 Merge r3d/cb-cap into main (gathering every branch; main's side kept on conflicts) Orkuncakilkaya 2026-09-30 17:21:21 +03:00
  • eeb7a3d5fb Merge lang/png-jobs into main (gathering every branch; main's side kept on conflicts) Orkuncakilkaya 2026-09-30 17:21:21 +03:00
  • 9883008cd1 Merge lang/memory-fence into main (gathering every branch; main's side kept on conflicts) Orkuncakilkaya 2026-09-30 17:21:20 +03:00
  • e72a4d0a13 Merge grass/far into main (gathering every branch; main's side kept on conflicts) Orkuncakilkaya 2026-09-30 17:21:20 +03:00
  • 737d6e1859 wip: uncommitted work gathered before the branch is merged into main Orkuncakilkaya 2026-09-30 17:18:48 +03:00
  • 8a997fd7ce ludic.wildlife pins: a tie between thirst and hunger sets off for water (GO_DRINK), as the package does Orkuncakilkaya 2026-09-30 17:15:54 +03:00
  • 754faa7730 Merge pkg/wildlife-pins 67d477af: phase 27.2a - every ludic.wildlife transition and its dice pinned before the move onto @Machine Orkuncakilkaya 2026-09-30 17:15:14 +03:00
  • 67d477af77 ludic.wildlife: pin every transition of the 15 WILD_* states and the dice each draws (phase 27.2a) Orkuncakilkaya 2026-09-30 16:57:15 +03:00
  • 314b8ce194 Merge tools/deps-reach 2a18d9b5: ludic deps' reach sets packed 60 states in a 32-bit int, so states 32 apart shared a bit - 30 a word now; reseeded Orkuncakilkaya 2026-09-30 16:51:21 +03:00
  • 2a18d9b51f ludic deps: the reach bitsets hold 30 states to a word, not 60 - an int is 32 bits, so states 32 apart shared a bit and a function could reach fewer states than it takes; examples/state/reach_wide.ludic and a deps case hold it; reseeded (bootstrap-cfree fixpoint) Orkuncakilkaya 2026-09-30 16:49:34 +03:00
  • d7adc28125 Merge lang/machines e4265f5f: phase 27.1 - a state machine as data (@Machine(Record.field) on a registry of transitions: generated row reducers and tick, the field written only by its table, graph checks, schema machines); reseeded, syntax regenerated Orkuncakilkaya 2026-09-30 16:39:26 +03:00
  • e4265f5fdb feat(lang): 27.1 - a state machine as data: @Machine(Record.field) on a registry of transitions Orkuncakilkaya 2026-09-30 16:37:37 +03:00
  • a3e3ea2f8e ludic_syntax.h regenerated for the row reducers' attributes (@Target, @RowVerb, @Column) - ludic-dev syntax Orkuncakilkaya 2026-09-30 16:30:00 +03:00
  • a637aec63e Merge lang/row-reducers ab0b84b8: phase 27.3 - reducers on a table's row (reducer T in S.table on A, @Target, Row<T>, @RowVerb, @Column), an allocation-free drain, and ludic schema's row_reducers and row_verbs; reseeded Orkuncakilkaya 2026-09-30 16:20:37 +03:00
  • ab0b84b87e feat(lang): 27.3 - a reducer on a table's row: reducer T in S.table on A, @Target, Row<T>, @RowVerb, @Column Orkuncakilkaya 2026-09-30 16:14:59 +03:00
  • d22abae476 render3d: gf_hash's comment says what it is - a 64-bit mix (the big constants lex as longs, & 0xFFFFFFFF is & -1); deterministic, and narrowing it would move every painted thing Orkuncakilkaya 2026-09-30 15:38:39 +03:00
  • 9ce51c2d49 Merge r3d/golden-json 7918103b: the ground_fill golden is valid JSON, and its test fails a file that is not one whole object Orkuncakilkaya 2026-09-30 15:36:59 +03:00
  • 7918103b8b render3d: ground_fill_golden.json is valid JSON (the cover and solid blocks each closed one brace too many) Orkuncakilkaya 2026-09-30 15:36:08 +03:00
  • 176dc79b49 Merge r3d/painted-zones: ground_fill's candidate as a pure function, solid layers with stable ids, clearings as data, and a conformance golden the studio shares Orkuncakilkaya 2026-09-30 15:25:43 +03:00
  • 87b95625ff render3d: ground_fill's golden conformance data, generated by tests/gen/ground_fill_golden.ludic (two runs byte-identical) Orkuncakilkaya 2026-09-30 15:25:43 +03:00
  • 530956889b render3d: a README note on painted ground layers, and the changeset Orkuncakilkaya 2026-09-30 15:24:23 +03:00
  • 54e267dfa6 render3d: ground_fill's conformance test and the generator of its golden Orkuncakilkaya 2026-09-30 15:24:23 +03:00
  • e535879262 render3d: ground_fill's candidate is a function of its own; solid layers with stable ids; the trample as clearing discs Orkuncakilkaya 2026-09-30 15:23:53 +03:00
  • 740ac2a879 Merge lang/i18n-data-fill 5d9f9cf2: ludic.audio has one aud_play holding the only Audio.play_at Orkuncakilkaya 2026-09-30 03:31:17 +03:00
  • 5d9f9cf284 ludic.audio: one call into the runtime's playback - aud_play holds the only Audio.play_at (the one float -> Q16.16 crossing), and aud_emit and aud_ui both go through it; aud_ui had its own play_at since the interface channel, which the game's guard (one play, one play_at) could not hold. README and the module's words follow. Orkuncakilkaya 2026-09-30 03:24:36 +03:00
  • a6ce456c60 Merge r3d/tiles-open-fix c18579f7: tiles_open_test asks for what a device would have made, not the frame counter Orkuncakilkaya 2026-09-30 03:24:13 +03:00
  • c18579f777 tiles_open_test: "nothing on a device" asks what terrain_from_baked would have made - the coarse height and normal textures and the page pool - not gvk_frame_no, whose default is 1 (env.ludic), not 0: the open path ticks no frame Orkuncakilkaya 2026-09-30 03:23:36 +03:00
  • ad7cbd8e2e Merge r3d/tiles-open-file 42147937: terrain_tiles_open_file - a map's terrain bake opened for questions with no device Orkuncakilkaya 2026-09-30 03:19:33 +03:00
  • 69adbddb46 Merge lang/i18nhandlers 56762050: the key check walks @On listeners, hooks, tests, computed fields and scenes; reseeded Orkuncakilkaya 2026-09-30 03:19:33 +03:00
  • 42147937b2 render3d: terrain_tiles_open_file(path, key, version, half, ox, oz) - a map's baked tiles opened for the CPU questions alone (terrain_height, _file, _smooth, terrain_ortho), with no device and no renderer booted: terrain_from_baked's opening without its coarse level on the GPU. False and nothing changed for another bake's key or version, a missing file, or a whole copy already kept (it answers first). tests/tiles_open_test: a bake written with LBAK's header answers its heights and photograph at a map origin of (300, -120), nothing on a device; the refusals leave no file open, and a bake opened after them answers. The hand-written tiles move to tests/fakes/tiles_file.ludic (payload, raw file, bake, the expected answer at an origin, the cache's snapshot), shared with height_file_test Orkuncakilkaya 2026-09-30 03:13:18 +03:00
  • 56762050fb i18n: a key used only in a listener counts as used - the key check walked prog but not the bodies kept beside it (@On listeners, the lifecycle hooks, tests, computed fields, scenes), so their keys were never checked against en.po and ludic schema listed them unused (the game's 15 itemuse.* keys, emitted through ItemPlace); they are walked now as privates.ludic walks them. examples/lang/i18n_listen and its schema case (added, not run); reseeded, bootstrap-cfree fixpoint holds Orkuncakilkaya 2026-09-30 03:12:25 +03:00
  • 744a03bdfa Merge lang/i18n-data-fill 88823314: L is keys only - a plain string is drawn as it is in every language Orkuncakilkaya 2026-09-30 03:11:16 +03:00
  • 8882331421 ludic.i18n: the English path is out of L (26.9) - a plain string is drawn as it is in every language (a player named Settings stays Settings), a key, a key glued into text and a bracketed line are made as before. The pattern tables, the sentence and padding lookups, Ln, i18n_pattern_count and kr_words' English-argument lookup are gone; a language's .po is read for keys and plurals. Tests move to keys; README and a changeset say so. Orkuncakilkaya 2026-09-30 02:58:13 +03:00
  • e2aa928e95 Merge lang/i18nerror 25a57c09: English left is an error under a lang line; ludic.ui's own words are keys; reseeded Orkuncakilkaya 2026-09-30 02:49:43 +03:00
  • 25a57c099b i18n 26.9, error mode: English left is an error under a lang line (a template's words, a text attribute's, a choice that reads as words, a @Text row's English), ludic deps still counting english_left; hole counts and undescribed splits stay warnings. ludic.ui's own words are keys - ui_tk(ui_st, k"ui.right_click", plain) for the key field's Right / Middle / Left click and press a key..., its plain text for a program with no translator; the examples' en.po / tr.po carry ui.*, i18n_ui checks clean, rejected/i18n_keys/english_left holds the error, data_missing counts 2; LANGUAGE.md and the changeset; on lang/foundations 2288feeb; reseeded, bootstrap-cfree fixpoint holds Orkuncakilkaya 2026-09-30 02:45:15 +03:00
  • 490dc0f563 Merge r3d/height-askers 130b9091: only the loaders page; every other terrain question reads the whole copy, a resident slot or the file Orkuncakilkaya 2026-09-30 02:43:39 +03:00
  • 130b9091d1 render3d: the terrain's questions never page - ter_h and ter_o read a resident tile in place and any other through the file scratch (heights and now the photograph, four tiles each, sized when the tiles open, forgotten when they close), so terrain_height, _smooth, terrain_ortho, the chunk heightfields, ground_fill, grass, water and shadow no longer take slots or move the clock. Only the loaders page: tp_fill reads through tt_h_load / tt_n_load / tt_o_load, and terrain_tiles_prefetch as before. terrain_height_file is now terrain_height, kept as the name callers wrote against. No answer changes: every read was already the whole copy's texel. tests/height_file_test: heights and photograph equal the texels written, resident or not; a whole-map sweep of the questions, and a ground layer's fill over the map (a one-layer LGD2 written in the test), leave the slots, their contents, the clock and the read counts unchanged Orkuncakilkaya 2026-09-30 02:43:17 +03:00
  • 2288feeb59 Merge lang/i18n-data-fill 96798c0f: ludic.anim transitions go via a one-shot Orkuncakilkaya 2026-09-30 02:38:41 +03:00
  • 96798c0fbb ludic.anim: a transition may name a via one-shot - a request from from (the state last asked, or "*") to to goes by it when the rig carries its clip, and the one-shot's next hands on. The game's hiker picked sit_down / stand_up / board_boat / leave_boat in code; the set says it now. A via edge is not an edge for a request's own fade. animset_test holds it, with a via the rig has and one it has not. Orkuncakilkaya 2026-09-30 02:34:07 +03:00
  • 9a1cae1d52 Merge r3d/height-file c2fc8f78: terrain_height_file - the exact height without touching the tile cache Orkuncakilkaya 2026-09-30 02:30:26 +03:00
  • c2fc8f78f2 render3d: terrain_height_file - terrain_height's exact bilinear that never pages: a resident tile is read in place, any other from tt_file into four tiles of scratch of its own (in the state's defaults, forgotten when the file closes), so no slot is taken and no recency bumped - a sweep at boot no longer changes which tiles the cache holds, and so what is drawn from it. With the whole copy it is terrain_height. tests/height_file_test: equal to terrain_height over a grid across many tiles, resident and not, at tile corners and past the edge; a whole-map sweep leaves slot_of, tile_in, ref, the heights, the hand and the read counts unchanged Orkuncakilkaya 2026-09-30 02:29:55 +03:00
  • 12553edb26 Merge 7c4e6870 Orkuncakilkaya 2026-09-30 02:07:11 +03:00
  • ea451dfda2 Merge 986fba3586 Orkuncakilkaya 2026-09-30 02:07:11 +03:00
  • 7c4e6870b3 render3d: the blades' density window filled apart from its upload - gb_window_fill (the tiles round the camera's, zeros off the map, the corner) and gb_frame sends it; the same bytes, now readable by a test without a GPU Orkuncakilkaya 2026-09-30 02:03:43 +03:00
  • 986fba3586 ludic.i18n: inside a bracket an argument's bytes ride raw - trf escapes a 27 or 31 only outside brackets, and the decoder unescapes only there, so a bracketed line carrying a key with holes (Ada's brief: its legend line's escaped arguments) keeps its own escapes whichever way it was put in (a game's txt_key raw, or trf). 81e1f7d8 unescaped inside the bracket and split the legend's arguments out of the brief. nest_test holds a key whose hole holds a key with two holes: bare, bracketed raw, bracketed through trf, and escaped. Orkuncakilkaya 2026-09-30 02:00:20 +03:00
  • 00b45742d1 Merge lang/i18n-data-fill 81e1f7d8: ludic.i18n's L makes bracketed lines (29/30) itself, outermost first Orkuncakilkaya 2026-09-30 01:48:18 +03:00
  • 81e1f7d8e6 ludic.i18n: a line bracketed inside another (bytes 29 .. 30) is made by L itself - each bracket outermost in, a key whole through keyed() so its escaped arguments stay whole, and a split on 31 never inside a bracket (a game's txt_key puts its nested line raw); a stray bracket draws nothing. The game's tx_L did this alone, so L in a test or anywhere else drew the brackets (26.9's move, made now). nest_test holds it. Orkuncakilkaya 2026-09-30 01:39:44 +03:00
  • 3bf07ce606 Merge lang/builtinnames d4df925b (attrs before export 26b986de + the builtin-name refusal); reseeded, fixpoint 300381 Orkuncakilkaya 2026-09-30 01:15:05 +03:00
  • d4df925b8f checker: a function named like a built-in a call always takes is refused at its declaration - function words(st, k) compiled and every call became words(n) with a pointer for n (invalid IR, far from the cause); the table is selfhost/check/check_builtins.ludic, emit_call's built-ins no find_fn guard lets a declared function take, and ludic-dev syntax --check holds it to emit_call both ways; every other built-in (buffer, floats, double, ...) yields to a declared function in the checker as it already did in codegen. string_temps' keep and cross_heap_test's keep renamed (hand, keep_cell); rejected/builtin_call_name and functions/builtin_yield with their cases (added, not run); reseeded, bootstrap-cfree fixpoint holds Orkuncakilkaya 2026-09-30 01:10:24 +03:00
  • 26b986de5b parser: an attribute before export is kept - @ToClients export event E was a local event (the attributes read in front of export were dropped when the declaration was parsed afresh one call down), as were @Sync / @Owned / @Server / @On / @Public ... before export; and export @ToClients event was refused. Attributes and export now read in either order into one declaration, and a wrapper marks what it added exported (g_at_keep goes); examples/networking/net_export and three schema cases (added, not run); reseeded, bootstrap-cfree fixpoint holds Orkuncakilkaya 2026-09-30 01:03:44 +03:00
  • 64adb052b4 Merge commit 'd703d79feb' into lang/foundations Orkuncakilkaya 2026-09-30 00:56:43 +03:00
  • d703d79feb ludic.i18n: a glued key's name is a-z, 0-9, _ and . only (every key en.po holds), so a word glued on after it is not read as part of it; keys_test: "Not owned. " + a key, and a capital straight after one Orkuncakilkaya 2026-09-30 00:52:49 +03:00
  • 96c6e27d98 ludic.i18n: a key's text glued into an English line is made where it sits - L decodes each marked name inside a line that is not a key of its own ("A {1}, {2} cm." given a name that is a key, name + "\n" + blurb), in the language in use, then the line takes its old English lookup; kept in the keyed cache. Interim until every such line is a key (26.9). keys_test covers the stop at a sentence's full stop, a key at the head with words after, a mixed argument in a key's hole, and a key whole left alone. Orkuncakilkaya 2026-09-30 00:50:53 +03:00
  • a3377215e9 ludic.i18n: tr and key_text lose their @alloc_ok - string(k) of a Key is no allocation to the escape analysis now, and key_text's slice is not one either, so both pass arena strict as they stand (trf / trn keep theirs: they make a line) Orkuncakilkaya 2026-09-30 00:48:29 +03:00
  • 01df9b9d77 runtime (macOS): with a layer asked for, the loader is pinned to our MoltenVK whatever the shell set - the SDK's setup-env.sh exports VK_DRIVER_FILES and VK_ICD_FILENAMES at its own, and the one left set loaded a second MoltenVK; VK_DRIVER_FILES overwritten, VK_ICD_FILENAMES cleared, R3D_VK_ANY_DRIVER=1 to keep the shell's Orkuncakilkaya 2026-09-30 00:47:07 +03:00
  • 47ba741f6d Merge commit '1ab5ca14' into lang/foundations Orkuncakilkaya 2026-09-30 00:43:24 +03:00
  • c3a37bf76c Merge commit '10a394ae' into lang/foundations (nested and list @Text keys derived, trf's trailing "" padding not counted, string(k) no escape site); reseeded, bootstrap-cfree fixpoint holds Orkuncakilkaya 2026-09-30 00:43:11 +03:00
  • c9cf202721 Merge commit '10a394ae' into lang/i18n-data-fill Orkuncakilkaya 2026-09-30 00:41:34 +03:00
  • 1ab5ca14fb runtime (macOS): MoltenVK opened first, so a process holds one - the SDK's loader in /usr/local/lib loaded its own MoltenVK beside the linked one and the program drew through it; the loader only when a layer is asked for, pinned to ours (VK_DRIVER_FILES, lib/macos-arm64/MoltenVK_icd.json) unless a driver is named. steady's stream round: a 300-cell warm-up, then the least of three 150-cell windows Orkuncakilkaya 2026-09-30 00:41:27 +03:00
  • 10a394ae6c compiler: text keys below a row, trf padding and tr's cast (ECS's 26.4 gaps) - a @Text Key in a record nested in a row, or in each item of a list of them, is filled with its derived key <registry>.<row>.<field>.<i>.<field> as a top-level one is, and a @Text []Key a row leaves out takes <...>.0, .1, ... for as many as en.po has (so no .lres spells a key; the manifest and en.po are now read before the parse that fills the rows); field: null is no text; trf / trn's trailing "" literals are padding, not counted against the English's holes; and string(x) of a string or a Key is x itself to the escape analysis, no allocation site, so tr(key) passes arena strict (a template's lone hole still copies); examples/lang/i18n_nested and its feat_case (added, not run); LANGUAGE.md and the changeset; reseeded, bootstrap-cfree fixpoint holds Orkuncakilkaya 2026-09-30 00:41:05 +03:00
  • a1419cdd1f Merge commit '603a5bd6' into lang/foundations Orkuncakilkaya 2026-09-30 00:40:12 +03:00
  • 2e0a7f0031 Merge commit 'bdda22c' into lang/foundations Orkuncakilkaya 2026-09-30 00:39:29 +03:00
  • da78010281 Merge commit '9a0011c' into lang/foundations (a test program holding a phase handler compiles: rt_init called only when the runtime defines it); reseeded, bootstrap-cfree fixpoint holds Orkuncakilkaya 2026-09-30 00:39:20 +03:00
  • 603a5bd63f Merge commit 'bdda22c' into lang/i18n-data Orkuncakilkaya 2026-09-30 00:35:57 +03:00
  • 9f1273fb32 Merge branch 'lang/foundations' into lang/i18n-data Orkuncakilkaya 2026-09-30 00:35:56 +03:00
  • 9a0011c38f compiler: a test program may hold a phase handler - the test runner called @rt_init whenever the program had systems, and a handler alone makes none (LLVM: use of undefined value '@rt_init'); it calls it only when it exists, as an entry program's main does; a ludic test case with a handler (added, not run); reseeded, bootstrap-cfree fixpoint holds Orkuncakilkaya 2026-09-30 00:34:34 +03:00
  • bdda22cb2e ludic.i18n: a key with holes inside another key's hole survives - an argument's own 31s and 27s are escaped with 27 and the decoder splits on the unescaped ones (trf(k"a", trf(k"b", x))); keys_test holds it Orkuncakilkaya 2026-09-30 00:32:23 +03:00
  • 86644e6533 packages: the registry text a game fills is keys (Maroon Lake's phase 26.4) - ThingKind.name, GearKind blurb/howto/names, HintCard's words, JobDef title/text/how, NpcLine and NpcChoice text, WeatherKind.name are @Text Key fields (a compiled row that leaves one out takes its derived key, the English is the game's en.po); what a package hands back as text is the key's marked text, "" for none; NpcName.name, NpcChoice.line and SettingDef.text are not text and lose @Text; ludic.i18n's tr/trf/trn/key_text say @alloc_ok (tr is a cast); the packages' tests with key literals (built, not run); changes/text-keys-data.md Orkuncakilkaya 2026-09-30 00:29:03 +03:00
  • eaeadc6a52 Merge commit 'f0cf859' into lang/foundations Orkuncakilkaya 2026-09-30 00:28:24 +03:00
  • eb0d3b1846 Merge lang/schemacode (R7, d39a27a) into lang/editortools, so R9 lands after R7 with nothing to resolve: no conflicts (LANGUAGE.md and test.ludic merged), selfhost/ is R7's (its seeds; bootstrap-cfree fixpoint holds) Orkuncakilkaya 2026-09-30 00:27:16 +03:00
  • 50333571d7 Merge lang/foundations (9391695) into lang/editortools: no conflicts, selfhost/ identical to lang/foundations (the seeds unchanged; bootstrap-cfree fixpoint holds at 289532 lines), the help lists R10's --stdin-file, R8's syntax and R9's fmt / remove lines together Orkuncakilkaya 2026-09-30 00:26:26 +03:00
  • 320ce42626 ludic remove <module> and ludic get --json (R9) Orkuncakilkaya 2026-09-30 00:24:49 +03:00
  • 047bdf4189 ludic fmt for editors: --lint --json, and a buffer on stdin (R9) Orkuncakilkaya 2026-09-30 00:24:43 +03:00
  • d39a27a904 Merge lang/foundations (9391695) into lang/schemacode: LANGUAGE.md's command list keeps --stdin-file (R10), the code map in schema (R7) and ludic syntax (R8); selfhost/main.ludic carries all three flags; reseeded from the merged source, bootstrap-cfree fixpoint holds (298653 lines), syntax --check clean, no conflict markers Orkuncakilkaya 2026-09-30 00:21:47 +03:00
  • f0cf85943f ludic.i18n: an English value in a key's hole gets the old English lookup (exact, pattern, sentence) while the game still hands English into holes - until its code and data are keys (phase 26.9), where it does nothing; keys_test holds it (exact, a pattern, no line, a number untouched) Orkuncakilkaya 2026-09-30 00:19:46 +03:00
  • bfd99cdda1 compiler: ludic schema gains a "code" section (R7) - the code map from the compiler, so the studio's scan is only a fallback: modules (package, layer, uses and where, friend, files), states, actions, reducers, every dispatch, events (cancellable, net) with every emit and their @On listeners, ports (members with fn types, defaults, required) and binds (port, member, fn, value, at), handlers (phase, hook and target, @Public, @Server / @Predicted, @Queries with filters as written, scene and layer), models (@Owned, @Sync), prefabs, scenes (start, public, shows, lasts / then, loads, enter / exit, layers) and fn_refs - every fn name in code or a resource file with the slot it fills (registry field and row, port member or default, record field, emit field, call argument, assignment, let). Places are "file:line:col"; sorted by name, sites by place; schema_version stays 1 (additive). The parser records emits, fn refs, handlers and scenes' layers / lasts / loads for it (emit_schema_code.ludic, emit_schema_code_game.ludic); LANGUAGE.md and the changeset say so; schema_case lines added (not run); reseeded, bootstrap-cfree fixpoint holds Orkuncakilkaya 2026-09-30 00:19:24 +03:00
  • 9391695fce Repair the c804c4b merge (3d65ec6 was committed with conflict markers in selfhost/main.ludic and both seeds): main.ludic keeps both --emit-syntax (R8) and --stdin-file (R10); the seeds regenerated from the merged source, bootstrap-cfree fixpoint holds (289532 lines) Orkuncakilkaya 2026-09-30 00:16:41 +03:00
  • 3d65ec6def Merge commit 'c804c4b' into lang/foundations (R10: --stdin-file checks an unsaved buffer in place of a file the program reads); reseeded, bootstrap-cfree fixpoint holds Orkuncakilkaya 2026-09-30 00:15:01 +03:00
  • c804c4b0ee ludicc / ludic build: --stdin-file <path> checks an unsaved buffer in place of its file (R10) Orkuncakilkaya 2026-09-30 00:10:04 +03:00
  • 86146782f7 Merge commit '9f8aec3' into lang/foundations (R8: the syntax vocabulary from the parser, grammars and LSP word lists generated from it, the LSP's outline/hover/definition fixed, 47 docs/language pages); reseeded, bootstrap-cfree fixpoint holds Orkuncakilkaya 2026-09-30 00:04:52 +03:00
  • ed19fb5ce4 Merge commit '11447b8' into lang/foundations Orkuncakilkaya 2026-09-30 00:02:48 +03:00
  • 9f8aec3bc1 Merge lang/i18nkeys (27024de) into lang/syntax: the vocabulary gains the text keys - the Key type, @TextKey (a registry's), the k"..." and kn"..." literals - and @Text's doc; docs/language pages for Key and @TextKey; ludic-dev syntax rewrote the grammars; reseeded, bootstrap-cfree fixpoint holds Orkuncakilkaya 2026-09-30 00:02:48 +03:00
  • 4ccbc12b48 Merge commit '27024de' into lang/foundations Orkuncakilkaya 2026-09-30 00:00:28 +03:00
  • 86c46c629b changes: syntax-vocabulary (ludic syntax, ludic-dev syntax, the language server's outline and attribute arguments) Orkuncakilkaya 2026-09-29 23:59:47 +03:00
  • e2528c1b10 docs/language: a page for every keyword and attribute the vocabulary has Orkuncakilkaya 2026-09-29 23:59:47 +03:00
  • eb2d6106af ludic-lsp: every declaration by its own kind, every field a child, attribute arguments resolve Orkuncakilkaya 2026-09-29 23:59:40 +03:00
  • 2ad6edaae3 ludic syntax, and ludic-dev syntax: every grammar written from the compiler's vocabulary and checked against it Orkuncakilkaya 2026-09-29 23:59:30 +03:00
  • 73f7d0b7a3 ludicc --emit-syntax: the language's vocabulary as one table beside the parser Orkuncakilkaya 2026-09-29 23:59:02 +03:00
  • 27024de00e ludic-dev test: the deps case expects english_left (26.2) after owned_leaks Orkuncakilkaya 2026-09-29 23:57:56 +03:00
  • 11447b8650 ludic.i18n: tr / trf / trn take the compiler's Key (k"...", kn"..." for trn), built from string(k); keys_test with key literals Orkuncakilkaya 2026-09-29 23:56:05 +03:00
  • cdaeb33e12 Merge commit '9f9ac4a' into lang/foundations (26.2 follow-up: a Key in a template hole refused, trn only with kn"", tr/trf refuse one); reseeded, bootstrap-cfree fixpoint holds Orkuncakilkaya 2026-09-29 23:48:35 +03:00
  • 9f9ac4a7ce compiler: text keys' follow-up (Master's rulings) - a Key in a template literal's hole is an error (the parser marks each hole's string(), TPL_HOLE; write trf(k"...", ...)), trn takes only a plural key kn"..." and tr / trf refuse one (with or without en.po), and a program with no lang line (a package test) uses key literals unchecked and silently - the warning stays for a lang line whose en.po is missing; rejected/i18n_keys gains key_hole (2) and key_rules (3), key_missing's plural moves to trn; LANGUAGE.md and the changeset say so; reseeded, bootstrap-cfree fixpoint holds Orkuncakilkaya 2026-09-29 23:46:48 +03:00
  • e3788c0a43 Merge commit '66b8e51' into lang/foundations (phase 26.2: Key, k""/kn"", derived @Text keys, the en.po checks, english_left, the schema's lang section); reseeded, bootstrap-cfree fixpoint holds Orkuncakilkaya 2026-09-29 23:41:54 +03:00
  • 66b8e51026 docs: LANGUAGE.md's Text keys (Key, k"..." / kn"...", the lang line, derived @Text keys and @TextKey, the checks, the schema's "lang"), the lang manifest key in SHIPPING.md, and the changeset Orkuncakilkaya 2026-09-29 23:38:03 +03:00
  • f9808e31ec examples: text keys - lang/i18n (k"" and kn"" keys, == on them, a @Text Key field's derived key, @TextKey, a component's t('key', ...) and its one line of English left, en.po with a plural and descriptions, tr.po missing, fuzzy and extra) and rejected/i18n_keys (a key en.po lacks, a plural key without msgid_plural, a Key / string mix-up, a derived key en.po lacks, a template's missing t() key, hole counts and an undescribed split); their cases in ludic-dev test (added, not run) Orkuncakilkaya 2026-09-29 23:38:03 +03:00
  • 4988adb170 compiler: a Key reaches a template as its marked text (a component's or a view's Key field, for t(expr)), and a derived key's message names it as one; reseeded, bootstrap-cfree fixpoint holds Orkuncakilkaya 2026-09-29 23:38:03 +03:00
  • cc1ea0f4ae compiler: text keys (phase 26.2) - k"pause.resume" / kn"catch.count" of the builtin type Key (not a string, and no string one; == compares), its run-time value the key after a marker byte (1, or 2 for a plural); package.ludic's lang "assets/lang" en and a gettext .po reader; every key literal checked against en.po (a kn"" one wants a msgid_plural), trf / trn and a template's t('key', ...) against the English's holes, a component's template words and a @Text row's English as "English left" (warnings, english_left in ludic deps), a @Text Key field a compiled row leaves out filled with its derived key <registry>.<row>.<field> (or @TextKey's prefix; maps.<map>.<table>.<row>.<field> for a @PerMap row, checked), one English under several undescribed keys warned at en.po's line; the schema's "lang" (keys and their sites, unused, undescribed, split, and every other language's missing / fuzzy / extra); k"" in .lres data, @PerMap rows included (lres_key); ludic-fmt keeps a key literal whole; reseeded, bootstrap-cfree fixpoint holds Orkuncakilkaya 2026-09-29 23:33:52 +03:00
  • 12e2816480 Merge commit '92530c5' into lang/foundations Orkuncakilkaya 2026-09-29 23:21:08 +03:00
  • 92530c5db7 render3d: gpu_tex_read_all and gpu_tex_write_all flush the frame first - the read-back is a submit of its own and took the image before the draws that fill it (the sky bake's BRDF table was all zeros at one width in three) Orkuncakilkaya 2026-09-29 23:18:05 +03:00