Files
sanspie cf68c71f05 Stage 6: coroutines, signals, ScriptRef, workspace CLI, editor tooling
Language: yield/signal/coroutine become keywords, start is contextual.
Coroutine methods (func Name() coroutine) with start and
yield / wait / frames / fixed / await; signals with Emit/Connect and
Connection handles; ScriptRef<T> and node.GetScript<T>() for fields,
plain methods and signals of other scripts. Diagnostics AES2050-AES2059.

Bytecode v3: ScriptRefs, XFields, XMethods and Connects tables resolved by
name in vm.Link, per-script signals, coroutine flag on functions; new
opcodes START/YIELD/EMIT/CONNECT/DISCONNECT/CONNECTED/COSTOP/CORUN/
SELFREF/GETSCRIPT/GETXF/SETXF/CALLR, checked by verify.

Runtime: script/coroutine scheduler (frames/fixed counters, time heap,
await lists; only due coroutines are visited) and script/signal registry
(snapshot per Emit, deferred removal, no allocations in steady state).
Hot reload cancels coroutines of changed scripts, rebinds connections by
name and signature, then runs Reloaded.

Tooling: script/build removed, aego check/test/dump run on the workspace
(test builds include _test.aes); langsvc completion, hover, signatures and
semantic tokens for the new syntax; editor highlighting, snippets with
placeholders, coroutine/signal profiler graphs and stats.

Docs (script.md sections 16-19, editor.md, ARCHITECTURE), test fixtures and
golden files, platformer enemies wired to the player, scriptreload demo,
and run.Config.FrameTime for deterministic headless fixed steps.

Modules (6.5): engine/module registry and ComponentBuilder are the one
registration path for engine subsystems and native code; render2d,
render3d and script/engine are modules over scene/frame, the script
component moved to scene/scriptcomp, and scene/components and
scene/systems are gone. Editor inspector, templates, picking shapes and
extension hooks are driven by descriptors and editor/builtins; sdk gains
Component/EditorHook; depcheck checks the module graph and the
aego_runtime graph.

Also: stop tracking built tool binaries; gl33 activates the scratch unit
before binding for texture updates.

Verification: typed component method adapters (Method0..2, Proc0..2)
with direct field access and no allocations; app.Build as the single
construction path for run and the editor; modules attach per scene
document; depcheck aego_editor pass; diagnostic codes in one place and
every code covered by a test; indexed coroutine heaps with eager
cancel; dead component references and nil intrinsics fault with
AES6004, host faults keep their code; GC roots of struct fields checked
in verify and vm.Link; 255-field limit; AES4010 for script packages
shadowing host modules; architecture registry D111-D147.

Golden: the harness renders on the thread that owns the GL context,
ReadPixels returns rows in memory order (render targets are top-down per
D17), and the first rendering references are committed.
2026-10-12 14:22:08 +03:00

138 lines
3.4 KiB
Plaintext

File signals 1:1
Ident signals 1:9
Script 3:1
Ident Source 3:8
Signal 4:2
Ident Died 4:9
Param 4:14
Ident reason 4:14
NamedType 4:21
Ident string 4:21
Signal 5:2
Ident Scored 5:9
Param 5:16
Ident points 5:16
NamedType 5:23
Ident int 5:23
ScriptVar 7:2
Ident own 7:6
NamedType 7:10
Ident int 7:10
Func 9:2
Ident Ready 9:7
Block 9:15
ExprStmt 10:3
Call targs=0 args=1 10:3
Selector 10:3
Ident Scored 10:3
Ident Connect 10:10
Ident OnScore 10:18
Func 13:2
Ident Kill 13:7
Block 13:14
ExprStmt 14:3
Call targs=0 args=1 14:3
Selector 14:3
Ident Died 14:3
Ident Emit 14:8
BasicLit STRING "fall" 14:13
ExprStmt 15:3
Call targs=0 args=1 15:3
Selector 15:3
Ident Scored 15:3
Ident Emit 15:10
BasicLit INT 10 15:15
Func 18:2
Ident OnScore 18:7
Param 18:15
Ident points 18:15
NamedType 18:22
Ident int 18:22
Block 18:27
Assign += 19:3
Ident own 19:3
Ident points 19:10
Script 23:1
Ident Listener 23:8
ScriptVar 24:2
Attr 24:2
Ident export 24:3
Ident Target 24:14
NamedType 24:21
Ident NodeRef 24:21
ScriptVar 26:2
Ident conn 26:6
NamedType 26:11
Ident Connection 26:11
ScriptVar 27:2
Ident total 27:6
NamedType 27:12
Ident int 27:12
Func 29:2
Ident Ready 29:7
Block 29:15
If 30:3
Binary == 30:6
Ident Target 30:6
BasicLit nil nil 30:16
Block 30:20
Return 31:4
ShortVar 33:3
Ident src 33:3
Call targs=1 args=0 33:10
Selector 33:10
Ident Target 33:10
Ident GetScript 33:17
NamedType 33:27
Ident Source 33:27
If 34:3
Binary != 34:6
Ident src 34:6
BasicLit nil nil 34:13
Block 34:17
Assign = 35:4
Ident conn 35:4
Call targs=0 args=1 35:11
Selector 35:11
Selector 35:11
Ident src 35:11
Ident Died 35:15
Ident Connect 35:20
Ident OnDied 35:28
ExprStmt 36:4
Call targs=0 args=1 36:4
Selector 36:4
Selector 36:4
Ident src 36:4
Ident Scored 36:8
Ident Connect 36:15
Ident OnScored 36:23
Func 40:2
Ident OnDied 40:7
Param 40:14
Ident reason 40:14
NamedType 40:21
Ident string 40:21
Block 40:29
If 41:3
Call targs=0 args=0 41:6
Selector 41:6
Ident conn 41:6
Ident Connected 41:11
Block 41:23
ExprStmt 42:4
Call targs=0 args=0 42:4
Selector 42:4
Ident conn 42:4
Ident Disconnect 42:9
Func 46:2
Ident OnScored 46:7
Param 46:16
Ident points 46:16
NamedType 46:23
Ident int 46:23
Block 46:28
Assign += 47:3
Ident total 47:3
Ident points 47:12