Runtime behaviour
- A fault stops only the instance that caused it (its methods, coroutines and handlers are no longer called); the rest of the scene keeps running. The Console shows the script stack; double-click opens the file.
- Each callback has an instruction budget (default 100 000); an infinite loop ends with
AES6001. A coroutine resume and a signal handler each have their own budget. - Integer division by zero faults;
MinInt / -1yieldsMinInt,MinInt % -1yields0.float → intconversion saturates and maps NaN to0, identically on every platform. - Strings and slices are garbage-collected between callbacks; scripts that do not allocate produce no garbage. A suspended coroutine keeps its strings and slices alive.
| Code | Meaning |
|---|---|
| AES6001 | instruction budget exceeded |
| AES6002 | native binding panicked |
| AES6003 | call depth over 256, or a signal that re-emits itself without end |
| AES6004 | nil or dead reference (NodeRef, ComponentRef, ScriptRef) |
| AES6005 | index out of range |
| AES6006 | integer division by zero |
| AES6007 | invalid string or slice handle |
| AES6008 | missing return reached |
| AES6009 | unresolved extern or binding |
| AES6010 | host function reported an error (c.Fail) |
Faults raised by the engine itself (a dead reference inside a component accessor, for instance) carry their exact code; only c.Fail from native code maps to AES6010.