@rezless/vm 0.6.2 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/builtins/base64.d.ts +5 -2
- package/dist/builtins/base64.d.ts.map +1 -1
- package/dist/builtins/base64.js +7 -5
- package/dist/builtins/base64.js.map +1 -1
- package/dist/builtins/detected.d.ts.map +1 -1
- package/dist/builtins/detected.js +1 -1
- package/dist/builtins/detected.js.map +1 -1
- package/dist/builtins/hash.d.ts +1 -0
- package/dist/builtins/hash.d.ts.map +1 -1
- package/dist/builtins/hash.js +12 -2
- package/dist/builtins/hash.js.map +1 -1
- package/dist/builtins/index.d.ts.map +1 -1
- package/dist/builtins/index.js +18 -7
- package/dist/builtins/index.js.map +1 -1
- package/dist/builtins/inventory.d.ts +7 -5
- package/dist/builtins/inventory.d.ts.map +1 -1
- package/dist/builtins/inventory.js +36 -14
- package/dist/builtins/inventory.js.map +1 -1
- package/dist/builtins/json.d.ts.map +1 -1
- package/dist/builtins/json.js +45 -34
- package/dist/builtins/json.js.map +1 -1
- package/dist/builtins/link-info.js +2 -2
- package/dist/builtins/link-info.js.map +1 -1
- package/dist/builtins/linksetdata.d.ts.map +1 -1
- package/dist/builtins/linksetdata.js +6 -9
- package/dist/builtins/linksetdata.js.map +1 -1
- package/dist/builtins/lists.d.ts +15 -0
- package/dist/builtins/lists.d.ts.map +1 -1
- package/dist/builtins/lists.js +118 -11
- package/dist/builtins/lists.js.map +1 -1
- package/dist/builtins/math.d.ts +2 -0
- package/dist/builtins/math.d.ts.map +1 -1
- package/dist/builtins/math.js +30 -5
- package/dist/builtins/math.js.map +1 -1
- package/dist/builtins/object.d.ts +5 -2
- package/dist/builtins/object.d.ts.map +1 -1
- package/dist/builtins/object.js +13 -5
- package/dist/builtins/object.js.map +1 -1
- package/dist/builtins/prim-accessors.d.ts +1 -0
- package/dist/builtins/prim-accessors.d.ts.map +1 -1
- package/dist/builtins/prim-accessors.js +51 -24
- package/dist/builtins/prim-accessors.js.map +1 -1
- package/dist/builtins/prim-params.d.ts.map +1 -1
- package/dist/builtins/prim-params.js +6 -2
- package/dist/builtins/prim-params.js.map +1 -1
- package/dist/builtins/script-control.d.ts +4 -3
- package/dist/builtins/script-control.d.ts.map +1 -1
- package/dist/builtins/script-control.js +22 -8
- package/dist/builtins/script-control.js.map +1 -1
- package/dist/builtins/strings.d.ts +6 -0
- package/dist/builtins/strings.d.ts.map +1 -1
- package/dist/builtins/strings.js +47 -6
- package/dist/builtins/strings.js.map +1 -1
- package/dist/builtins/time.d.ts +3 -5
- package/dist/builtins/time.d.ts.map +1 -1
- package/dist/builtins/time.js +4 -7
- package/dist/builtins/time.js.map +1 -1
- package/dist/clock.d.ts +16 -6
- package/dist/clock.d.ts.map +1 -1
- package/dist/clock.js +38 -11
- package/dist/clock.js.map +1 -1
- package/dist/dispatch.d.ts +3 -2
- package/dist/dispatch.d.ts.map +1 -1
- package/dist/dispatch.js +15 -10
- package/dist/dispatch.js.map +1 -1
- package/dist/interpreter.d.ts +5 -9
- package/dist/interpreter.d.ts.map +1 -1
- package/dist/interpreter.js +143 -70
- package/dist/interpreter.js.map +1 -1
- package/dist/linkset.d.ts +11 -3
- package/dist/linkset.d.ts.map +1 -1
- package/dist/linkset.js +32 -11
- package/dist/linkset.js.map +1 -1
- package/dist/memory.d.ts +5 -2
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +5 -2
- package/dist/memory.js.map +1 -1
- package/dist/prim-params.d.ts +27 -10
- package/dist/prim-params.d.ts.map +1 -1
- package/dist/prim-params.js +198 -122
- package/dist/prim-params.js.map +1 -1
- package/dist/prim.d.ts +1 -1
- package/dist/prim.d.ts.map +1 -1
- package/dist/prim.js +2 -2
- package/dist/prim.js.map +1 -1
- package/dist/runtime.d.ts +11 -3
- package/dist/runtime.d.ts.map +1 -1
- package/dist/script.d.ts +24 -10
- package/dist/script.d.ts.map +1 -1
- package/dist/script.js +118 -65
- package/dist/script.js.map +1 -1
- package/dist/typecheck.d.ts +3 -1
- package/dist/typecheck.d.ts.map +1 -1
- package/dist/typecheck.js +25 -5
- package/dist/typecheck.js.map +1 -1
- package/dist/values/coerce.d.ts +1 -1
- package/dist/values/coerce.d.ts.map +1 -1
- package/dist/values/coerce.js +10 -6
- package/dist/values/coerce.js.map +1 -1
- package/dist/values/format.d.ts +3 -1
- package/dist/values/format.d.ts.map +1 -1
- package/dist/values/format.js +10 -6
- package/dist/values/format.js.map +1 -1
- package/package.json +2 -2
package/dist/interpreter.js
CHANGED
|
@@ -5,7 +5,15 @@ import { typedList } from './values/list-types.js';
|
|
|
5
5
|
import { applyBinary, applyUnary, reduceCompound, truthy } from './values/ops.js';
|
|
6
6
|
import { Env } from './env.js';
|
|
7
7
|
import { own } from './own.js';
|
|
8
|
-
import { StackHeapCollision, frameBytes } from './memory.js';
|
|
8
|
+
import { RuntimeError, StackHeapCollision, frameBytes } from './memory.js';
|
|
9
|
+
import { HaltSignal } from './builtins/object.js';
|
|
10
|
+
/** Mono can't run a function or handler that uses the value of a key print. */
|
|
11
|
+
class InvalidProgram extends RuntimeError {
|
|
12
|
+
constructor(name) {
|
|
13
|
+
super(`System.InvalidProgramException: Invalid IL code in LSL :${name} ()`);
|
|
14
|
+
this.name = 'InvalidProgram';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
9
17
|
class ReturnSignal {
|
|
10
18
|
value;
|
|
11
19
|
constructor(value) {
|
|
@@ -24,7 +32,56 @@ export class StateChangeSignal {
|
|
|
24
32
|
this.target = target;
|
|
25
33
|
}
|
|
26
34
|
}
|
|
35
|
+
/** Calls nested deeper than this are a Stack-Heap Collision even without the memory model. */
|
|
36
|
+
const MAX_CALL_DEPTH = 10_000;
|
|
27
37
|
export function execHandler(ctx, handler, args = []) {
|
|
38
|
+
return trampoline(runHandler(ctx, handler, args));
|
|
39
|
+
}
|
|
40
|
+
function* trampoline(root) {
|
|
41
|
+
const frames = [root];
|
|
42
|
+
let sent;
|
|
43
|
+
let thrown = null;
|
|
44
|
+
try {
|
|
45
|
+
for (;;) {
|
|
46
|
+
const frame = frames[frames.length - 1];
|
|
47
|
+
let step;
|
|
48
|
+
try {
|
|
49
|
+
step = thrown ? frame.throw(thrown.error) : frame.next(sent);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
frames.pop();
|
|
53
|
+
if (frames.length === 0)
|
|
54
|
+
throw error;
|
|
55
|
+
thrown = { error };
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
thrown = null;
|
|
59
|
+
sent = undefined;
|
|
60
|
+
if (step.done) {
|
|
61
|
+
frames.pop();
|
|
62
|
+
if (frames.length === 0)
|
|
63
|
+
return;
|
|
64
|
+
sent = step.value;
|
|
65
|
+
}
|
|
66
|
+
else if ('until' in step.value) {
|
|
67
|
+
yield step.value;
|
|
68
|
+
}
|
|
69
|
+
else if (frames.length > MAX_CALL_DEPTH) {
|
|
70
|
+
thrown = { error: new StackHeapCollision() };
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
frames.push(step.value);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
finally {
|
|
78
|
+
while (frames.length > 0)
|
|
79
|
+
frames.pop().return(undefined);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function* runHandler(ctx, handler, args) {
|
|
83
|
+
if (ctx.invalidPrograms.has(handler))
|
|
84
|
+
throw new InvalidProgram(handler.name);
|
|
28
85
|
if (ctx.state.coverage) {
|
|
29
86
|
ctx.state.coverage.hitFunction(handler.loc);
|
|
30
87
|
// execBlock bypasses execStatement for the outermost body, so credit
|
|
@@ -39,7 +96,7 @@ export function execHandler(ctx, handler, args = []) {
|
|
|
39
96
|
const a = args[i] ?? defaultEvalFor(p.typeName);
|
|
40
97
|
env.declare(p.name, p.typeName, a);
|
|
41
98
|
});
|
|
42
|
-
execBlock(ctx, env, handler.body);
|
|
99
|
+
yield* execBlock(ctx, env, handler.body);
|
|
43
100
|
}
|
|
44
101
|
catch (e) {
|
|
45
102
|
if (e instanceof ReturnSignal)
|
|
@@ -55,7 +112,9 @@ export function execHandler(ctx, handler, args = []) {
|
|
|
55
112
|
* functions see globals only), binds args to params, runs the body,
|
|
56
113
|
* and unwraps a ReturnSignal into the function's return value.
|
|
57
114
|
*/
|
|
58
|
-
|
|
115
|
+
function* callUserFunction(ctx, fn, args) {
|
|
116
|
+
if (ctx.invalidPrograms.has(fn))
|
|
117
|
+
throw new InvalidProgram(fn.name);
|
|
59
118
|
if (ctx.state.coverage) {
|
|
60
119
|
ctx.state.coverage.hitFunction(fn.loc);
|
|
61
120
|
ctx.state.coverage.hitStatement(fn.body.loc);
|
|
@@ -70,7 +129,7 @@ export function callUserFunction(ctx, fn, args) {
|
|
|
70
129
|
const a = args[i] ?? defaultEvalFor(p.typeName);
|
|
71
130
|
env.declare(p.name, p.typeName, a);
|
|
72
131
|
});
|
|
73
|
-
execBlock(ctx, env, fn.body);
|
|
132
|
+
yield* execBlock(ctx, env, fn.body);
|
|
74
133
|
}
|
|
75
134
|
catch (e) {
|
|
76
135
|
if (e instanceof ReturnSignal) {
|
|
@@ -96,7 +155,7 @@ export function callUserFunction(ctx, fn, args) {
|
|
|
96
155
|
// Fell off end without explicit return.
|
|
97
156
|
return fn.returnType ? defaultEvalFor(fn.returnType) : { type: 'void', value: 0 };
|
|
98
157
|
}
|
|
99
|
-
function execBlock(ctx, env, block) {
|
|
158
|
+
function* execBlock(ctx, env, block) {
|
|
100
159
|
const child = env.push();
|
|
101
160
|
// Pre-scan: collect label positions and detect duplicate variable names.
|
|
102
161
|
// Duplicate-decl detection has to run upfront because we use
|
|
@@ -124,13 +183,15 @@ function execBlock(ctx, env, block) {
|
|
|
124
183
|
while (i < block.body.length) {
|
|
125
184
|
const stmt = block.body[i];
|
|
126
185
|
try {
|
|
127
|
-
execStatement(ctx, child, stmt);
|
|
186
|
+
yield* execStatement(ctx, child, stmt);
|
|
128
187
|
i++;
|
|
129
188
|
}
|
|
130
189
|
catch (e) {
|
|
131
190
|
if (e instanceof JumpSignal && labels && labels.has(e.label)) {
|
|
132
|
-
|
|
133
|
-
|
|
191
|
+
const at = labels.get(e.label);
|
|
192
|
+
if (at < i)
|
|
193
|
+
iterate(ctx);
|
|
194
|
+
i = at + 1;
|
|
134
195
|
continue;
|
|
135
196
|
}
|
|
136
197
|
throw e;
|
|
@@ -141,35 +202,35 @@ function execBlock(ctx, env, block) {
|
|
|
141
202
|
child.clear();
|
|
142
203
|
}
|
|
143
204
|
}
|
|
144
|
-
function execStatement(ctx, env, stmt) {
|
|
205
|
+
function* execStatement(ctx, env, stmt) {
|
|
145
206
|
if (ctx.state.coverage)
|
|
146
207
|
ctx.state.coverage.hitStatement(stmt.loc);
|
|
147
208
|
switch (stmt.kind) {
|
|
148
209
|
case 'BlockStatement':
|
|
149
|
-
execBlock(ctx, env, stmt);
|
|
210
|
+
yield* execBlock(ctx, env, stmt);
|
|
150
211
|
return;
|
|
151
212
|
case 'EmptyStatement':
|
|
152
213
|
return;
|
|
153
214
|
case 'VariableDeclaration':
|
|
154
|
-
execVariableDeclaration(ctx, env, stmt);
|
|
215
|
+
yield* execVariableDeclaration(ctx, env, stmt);
|
|
155
216
|
return;
|
|
156
217
|
case 'ExpressionStatement':
|
|
157
|
-
evalExpression(ctx, env, stmt.expression);
|
|
218
|
+
yield* evalExpression(ctx, env, stmt.expression.kind === 'PrintExpression' ? stmt.expression.argument : stmt.expression);
|
|
158
219
|
return;
|
|
159
220
|
case 'IfStatement':
|
|
160
|
-
execIf(ctx, env, stmt);
|
|
221
|
+
yield* execIf(ctx, env, stmt);
|
|
161
222
|
return;
|
|
162
223
|
case 'WhileStatement':
|
|
163
|
-
execWhile(ctx, env, stmt);
|
|
224
|
+
yield* execWhile(ctx, env, stmt);
|
|
164
225
|
return;
|
|
165
226
|
case 'DoWhileStatement':
|
|
166
|
-
execDoWhile(ctx, env, stmt);
|
|
227
|
+
yield* execDoWhile(ctx, env, stmt);
|
|
167
228
|
return;
|
|
168
229
|
case 'ForStatement':
|
|
169
|
-
execFor(ctx, env, stmt);
|
|
230
|
+
yield* execFor(ctx, env, stmt);
|
|
170
231
|
return;
|
|
171
232
|
case 'ReturnStatement': {
|
|
172
|
-
const value = stmt.argument ? evalExpression(ctx, env, stmt.argument) : null;
|
|
233
|
+
const value = stmt.argument ? (yield* evalExpression(ctx, env, stmt.argument)) : null;
|
|
173
234
|
throw new ReturnSignal(value);
|
|
174
235
|
}
|
|
175
236
|
case 'StateChangeStatement':
|
|
@@ -181,57 +242,59 @@ function execStatement(ctx, env, stmt) {
|
|
|
181
242
|
return;
|
|
182
243
|
}
|
|
183
244
|
}
|
|
184
|
-
function execVariableDeclaration(ctx, env, stmt) {
|
|
185
|
-
const init = stmt.init ? evalExpression(ctx, env, stmt.init) : undefined;
|
|
245
|
+
function* execVariableDeclaration(ctx, env, stmt) {
|
|
246
|
+
const init = stmt.init ? (yield* evalExpression(ctx, env, stmt.init)) : undefined;
|
|
186
247
|
// declareOrReset lets a backward `jump` re-execute a VariableDeclaration —
|
|
187
248
|
// the second pass updates the existing slot's value rather than throwing
|
|
188
249
|
// "already declared". The duplicate-source guard runs upfront in execBlock.
|
|
189
250
|
env.declareOrReset(stmt.name, stmt.typeName, init);
|
|
190
251
|
}
|
|
191
|
-
function execIf(ctx, env, stmt) {
|
|
252
|
+
function* execIf(ctx, env, stmt) {
|
|
192
253
|
const cov = ctx.state.coverage;
|
|
193
|
-
if (truthy(evalExpression(ctx, env, stmt.test))) {
|
|
254
|
+
if (truthy(yield* evalExpression(ctx, env, stmt.test))) {
|
|
194
255
|
if (cov)
|
|
195
256
|
cov.hitBranch(stmt.loc, true);
|
|
196
|
-
execStatement(ctx, env, stmt.consequent);
|
|
257
|
+
yield* execStatement(ctx, env, stmt.consequent);
|
|
197
258
|
}
|
|
198
259
|
else {
|
|
199
260
|
if (cov)
|
|
200
261
|
cov.hitBranch(stmt.loc, false);
|
|
201
262
|
if (stmt.alternate)
|
|
202
|
-
execStatement(ctx, env, stmt.alternate);
|
|
263
|
+
yield* execStatement(ctx, env, stmt.alternate);
|
|
203
264
|
}
|
|
204
265
|
}
|
|
205
|
-
function execWhile(ctx, env, stmt) {
|
|
266
|
+
function* execWhile(ctx, env, stmt) {
|
|
206
267
|
const cov = ctx.state.coverage;
|
|
207
268
|
while (true) {
|
|
208
|
-
const t = truthy(evalExpression(ctx, env, stmt.test));
|
|
269
|
+
const t = truthy(yield* evalExpression(ctx, env, stmt.test));
|
|
209
270
|
if (cov)
|
|
210
271
|
cov.hitBranch(stmt.loc, t);
|
|
211
272
|
if (!t)
|
|
212
273
|
break;
|
|
213
|
-
execStatement(ctx, env, stmt.body);
|
|
274
|
+
yield* execStatement(ctx, env, stmt.body);
|
|
275
|
+
iterate(ctx);
|
|
214
276
|
}
|
|
215
277
|
}
|
|
216
|
-
function execDoWhile(ctx, env, stmt) {
|
|
278
|
+
function* execDoWhile(ctx, env, stmt) {
|
|
217
279
|
const cov = ctx.state.coverage;
|
|
218
280
|
while (true) {
|
|
219
|
-
execStatement(ctx, env, stmt.body);
|
|
220
|
-
const t = truthy(evalExpression(ctx, env, stmt.test));
|
|
281
|
+
yield* execStatement(ctx, env, stmt.body);
|
|
282
|
+
const t = truthy(yield* evalExpression(ctx, env, stmt.test));
|
|
221
283
|
if (cov)
|
|
222
284
|
cov.hitBranch(stmt.loc, t);
|
|
223
285
|
if (!t)
|
|
224
286
|
break;
|
|
287
|
+
iterate(ctx);
|
|
225
288
|
}
|
|
226
289
|
}
|
|
227
|
-
function execFor(ctx, env, stmt) {
|
|
290
|
+
function* execFor(ctx, env, stmt) {
|
|
228
291
|
const child = env.push();
|
|
229
292
|
const cov = ctx.state.coverage;
|
|
230
293
|
for (const e of stmt.init)
|
|
231
|
-
evalExpression(ctx, child, e);
|
|
294
|
+
yield* evalExpression(ctx, child, e);
|
|
232
295
|
while (true) {
|
|
233
296
|
if (stmt.test) {
|
|
234
|
-
const t = truthy(evalExpression(ctx, child, stmt.test));
|
|
297
|
+
const t = truthy(yield* evalExpression(ctx, child, stmt.test));
|
|
235
298
|
if (cov)
|
|
236
299
|
cov.hitBranch(stmt.loc, t);
|
|
237
300
|
if (!t)
|
|
@@ -241,13 +304,19 @@ function execFor(ctx, env, stmt) {
|
|
|
241
304
|
// Infinite loop: still useful to record "body entered".
|
|
242
305
|
cov.hitBranch(stmt.loc, true);
|
|
243
306
|
}
|
|
244
|
-
execStatement(ctx, child, stmt.body);
|
|
307
|
+
yield* execStatement(ctx, child, stmt.body);
|
|
245
308
|
for (const e of stmt.update)
|
|
246
|
-
evalExpression(ctx, child, e);
|
|
309
|
+
yield* evalExpression(ctx, child, e);
|
|
310
|
+
iterate(ctx);
|
|
247
311
|
}
|
|
248
312
|
}
|
|
313
|
+
/** A loop's back-edge, where a script that called llDie or removed itself halts. */
|
|
314
|
+
function iterate(ctx) {
|
|
315
|
+
if (ctx.state.lifecycle.dying || ctx.state.lifecycle.removed)
|
|
316
|
+
throw new HaltSignal();
|
|
317
|
+
}
|
|
249
318
|
// ---- Expressions ----
|
|
250
|
-
function evalExpression(ctx, env, expr) {
|
|
319
|
+
function* evalExpression(ctx, env, expr) {
|
|
251
320
|
switch (expr.kind) {
|
|
252
321
|
case 'IntegerLiteral':
|
|
253
322
|
return { type: 'integer', value: expr.value | 0 };
|
|
@@ -256,59 +325,61 @@ function evalExpression(ctx, env, expr) {
|
|
|
256
325
|
case 'StringLiteral':
|
|
257
326
|
return { type: 'string', value: expr.value };
|
|
258
327
|
case 'VectorLiteral':
|
|
259
|
-
return evalVectorLiteral(ctx, env, expr);
|
|
328
|
+
return yield* evalVectorLiteral(ctx, env, expr);
|
|
260
329
|
case 'RotationLiteral':
|
|
261
|
-
return evalRotationLiteral(ctx, env, expr);
|
|
330
|
+
return yield* evalRotationLiteral(ctx, env, expr);
|
|
262
331
|
case 'ListLiteral':
|
|
263
|
-
return evalListLiteral(ctx, env, expr);
|
|
332
|
+
return yield* evalListLiteral(ctx, env, expr);
|
|
264
333
|
case 'Identifier':
|
|
265
334
|
return env.get(expr.name);
|
|
266
335
|
case 'CallExpression':
|
|
267
|
-
return evalCall(ctx, env, expr);
|
|
336
|
+
return yield* evalCall(ctx, env, expr);
|
|
268
337
|
case 'UnaryExpression':
|
|
269
|
-
return applyUnary(expr.operator, evalExpression(ctx, env, expr.argument));
|
|
338
|
+
return applyUnary(expr.operator, yield* evalExpression(ctx, env, expr.argument));
|
|
270
339
|
case 'BinaryExpression':
|
|
271
|
-
return evalBinary(ctx, env, expr);
|
|
340
|
+
return yield* evalBinary(ctx, env, expr);
|
|
272
341
|
case 'AssignmentExpression':
|
|
273
|
-
return evalAssignment(ctx, env, expr);
|
|
342
|
+
return yield* evalAssignment(ctx, env, expr);
|
|
274
343
|
case 'CastExpression':
|
|
275
|
-
return coerce(evalExpression(ctx, env, expr.argument), expr.targetType);
|
|
344
|
+
return coerce(yield* evalExpression(ctx, env, expr.argument), expr.targetType);
|
|
276
345
|
case 'MemberExpression':
|
|
277
|
-
return evalMember(ctx, env, expr);
|
|
346
|
+
return yield* evalMember(ctx, env, expr);
|
|
278
347
|
case 'UpdateExpression':
|
|
279
|
-
return evalUpdate(ctx, env, expr);
|
|
348
|
+
return yield* evalUpdate(ctx, env, expr);
|
|
280
349
|
case 'PrintExpression':
|
|
281
|
-
return evalExpression(ctx, env, expr.argument);
|
|
350
|
+
return defaultEvalFor((yield* evalExpression(ctx, env, expr.argument)).type);
|
|
282
351
|
}
|
|
283
352
|
}
|
|
284
|
-
function evalVectorLiteral(ctx, env, e) {
|
|
285
|
-
const x = coerce(evalExpression(ctx, env, e.x), 'float').value;
|
|
286
|
-
const y = coerce(evalExpression(ctx, env, e.y), 'float').value;
|
|
287
|
-
const z = coerce(evalExpression(ctx, env, e.z), 'float').value;
|
|
353
|
+
function* evalVectorLiteral(ctx, env, e) {
|
|
354
|
+
const x = coerce(yield* evalExpression(ctx, env, e.x), 'float').value;
|
|
355
|
+
const y = coerce(yield* evalExpression(ctx, env, e.y), 'float').value;
|
|
356
|
+
const z = coerce(yield* evalExpression(ctx, env, e.z), 'float').value;
|
|
288
357
|
return { type: 'vector', value: { x, y, z } };
|
|
289
358
|
}
|
|
290
|
-
function evalRotationLiteral(ctx, env, e) {
|
|
291
|
-
const x = coerce(evalExpression(ctx, env, e.x), 'float').value;
|
|
292
|
-
const y = coerce(evalExpression(ctx, env, e.y), 'float').value;
|
|
293
|
-
const z = coerce(evalExpression(ctx, env, e.z), 'float').value;
|
|
294
|
-
const s = coerce(evalExpression(ctx, env, e.s), 'float').value;
|
|
359
|
+
function* evalRotationLiteral(ctx, env, e) {
|
|
360
|
+
const x = coerce(yield* evalExpression(ctx, env, e.x), 'float').value;
|
|
361
|
+
const y = coerce(yield* evalExpression(ctx, env, e.y), 'float').value;
|
|
362
|
+
const z = coerce(yield* evalExpression(ctx, env, e.z), 'float').value;
|
|
363
|
+
const s = coerce(yield* evalExpression(ctx, env, e.s), 'float').value;
|
|
295
364
|
return { type: 'rotation', value: { x, y, z, s } };
|
|
296
365
|
}
|
|
297
|
-
function evalListLiteral(ctx, env, e) {
|
|
298
|
-
const elements =
|
|
366
|
+
function* evalListLiteral(ctx, env, e) {
|
|
367
|
+
const elements = [];
|
|
368
|
+
for (const el of e.elements)
|
|
369
|
+
elements.push(yield* evalExpression(ctx, env, el));
|
|
299
370
|
return {
|
|
300
371
|
type: 'list',
|
|
301
372
|
value: typedList(elements.map((r) => r.value), elements.map((r) => r.type)),
|
|
302
373
|
};
|
|
303
374
|
}
|
|
304
|
-
function evalBinary(ctx, env, e) {
|
|
375
|
+
function* evalBinary(ctx, env, e) {
|
|
305
376
|
// LSL: && and || are NOT short-circuit, and the right operand runs first.
|
|
306
|
-
const right = evalExpression(ctx, env, e.right);
|
|
307
|
-
const left = evalExpression(ctx, env, e.left);
|
|
377
|
+
const right = yield* evalExpression(ctx, env, e.right);
|
|
378
|
+
const left = yield* evalExpression(ctx, env, e.left);
|
|
308
379
|
return applyBinary(e.operator, left, right);
|
|
309
380
|
}
|
|
310
|
-
function evalAssignment(ctx, env, e) {
|
|
311
|
-
const newValue = evalExpression(ctx, env, e.value);
|
|
381
|
+
function* evalAssignment(ctx, env, e) {
|
|
382
|
+
const newValue = yield* evalExpression(ctx, env, e.value);
|
|
312
383
|
return assignTo(ctx, env, e.target, e.operator, newValue);
|
|
313
384
|
}
|
|
314
385
|
function assignTo(ctx, env, target, op, rhs) {
|
|
@@ -364,8 +435,8 @@ function assignToMember(ctx, env, target, op, rhs) {
|
|
|
364
435
|
env.set(target.object.name, wrapped);
|
|
365
436
|
return newField;
|
|
366
437
|
}
|
|
367
|
-
function evalMember(ctx, env, e) {
|
|
368
|
-
const obj = evalExpression(ctx, env, e.object);
|
|
438
|
+
function* evalMember(ctx, env, e) {
|
|
439
|
+
const obj = yield* evalExpression(ctx, env, e.object);
|
|
369
440
|
if (!isVector(obj.value) && !isRotation(obj.value)) {
|
|
370
441
|
throw new Error(`cannot access member on ${obj.type}`);
|
|
371
442
|
}
|
|
@@ -379,25 +450,27 @@ function evalMember(ctx, env, e) {
|
|
|
379
450
|
}
|
|
380
451
|
return { type: 'float', value: v[member] };
|
|
381
452
|
}
|
|
382
|
-
function evalUpdate(ctx, env, e) {
|
|
453
|
+
function* evalUpdate(ctx, env, e) {
|
|
383
454
|
if (e.argument.kind !== 'Identifier' && e.argument.kind !== 'MemberExpression') {
|
|
384
455
|
throw new Error('++/-- only valid on identifiers or member expressions');
|
|
385
456
|
}
|
|
386
457
|
// Get current value
|
|
387
|
-
const current = evalExpression(ctx, env, e.argument);
|
|
458
|
+
const current = yield* evalExpression(ctx, env, e.argument);
|
|
388
459
|
const delta = { type: 'integer', value: e.operator === '++' ? 1 : -1 };
|
|
389
460
|
const updated = reduceCompound('+=', current, delta);
|
|
390
461
|
// Write back
|
|
391
462
|
assignTo(ctx, env, e.argument, '=', updated);
|
|
392
463
|
return e.prefix ? updated : current;
|
|
393
464
|
}
|
|
394
|
-
function evalCall(ctx, env, call) {
|
|
465
|
+
function* evalCall(ctx, env, call) {
|
|
395
466
|
// Evaluate args eagerly (matches LSL semantics).
|
|
396
|
-
const evalArgs =
|
|
467
|
+
const evalArgs = [];
|
|
468
|
+
for (const a of call.args)
|
|
469
|
+
evalArgs.push(yield* evalExpression(ctx, env, a));
|
|
397
470
|
// User-defined function?
|
|
398
471
|
const userFn = ctx.userFunctions.get(call.callee);
|
|
399
472
|
if (userFn) {
|
|
400
|
-
return callUserFunction(ctx, userFn, evalArgs);
|
|
473
|
+
return (yield callUserFunction(ctx, userFn, evalArgs));
|
|
401
474
|
}
|
|
402
475
|
// Builtin (real, generated stub, or user-mocked).
|
|
403
476
|
const spec = specFor(call.callee);
|
|
@@ -406,7 +479,7 @@ function evalCall(ctx, env, call) {
|
|
|
406
479
|
const rawArgs = evalArgs.map((r, i) => r.type === 'integer' && (spec?.params[i]?.type ?? declared?.params?.[i]) === 'float'
|
|
407
480
|
? coerce(r, 'float').value
|
|
408
481
|
: r.value);
|
|
409
|
-
const result = callBuiltin({ state: ctx.state, mocks: ctx.mocks, script: ctx.script }, call.callee, rawArgs);
|
|
482
|
+
const result = yield* callBuiltin({ state: ctx.state, mocks: ctx.mocks, script: ctx.script }, call.callee, rawArgs);
|
|
410
483
|
const returnType = (spec?.returnType ?? declared?.returns ?? 'void');
|
|
411
484
|
if (returnType === 'void')
|
|
412
485
|
return { type: 'void', value: 0 };
|
package/dist/interpreter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interpreter.js","sourceRoot":"","sources":["../src/interpreter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"interpreter.js","sourceRoot":"","sources":["../src/interpreter.ts"],"names":[],"mappings":"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"}
|
package/dist/linkset.d.ts
CHANGED
|
@@ -67,8 +67,9 @@ export declare class Linkset {
|
|
|
67
67
|
/**
|
|
68
68
|
* Send a `link_message` according to LSL fan-out semantics.
|
|
69
69
|
* `senderLink` is the calling prim's link number; the event payload's
|
|
70
|
-
* `sender_num` is set to that value.
|
|
71
|
-
*
|
|
70
|
+
* `sender_num` is set to that value. Scripts that are not running never
|
|
71
|
+
* get the message. The capture array on the linkset records every
|
|
72
|
+
* invocation for cross-script test assertions.
|
|
72
73
|
*/
|
|
73
74
|
deliverLinkMessage(senderLink: number, target: number, num: number, str: string, id: string): void;
|
|
74
75
|
/**
|
|
@@ -96,9 +97,16 @@ export declare class Linkset {
|
|
|
96
97
|
* due across the linkset, or its whole world, dispatching each to its
|
|
97
98
|
* target script. The clock steps to each
|
|
98
99
|
* event's due time before its handler runs, so handlers see the time the
|
|
99
|
-
* event fired rather than the end of the window.
|
|
100
|
+
* event fired rather than the end of the window. The clock ends exactly
|
|
101
|
+
* `ms` later; a handler sleeping past that stays asleep until a later advance.
|
|
100
102
|
*/
|
|
101
103
|
advanceTime(ms: number): void;
|
|
104
|
+
/**
|
|
105
|
+
* Drain due events, then keep moving the clock to the next wake of any of
|
|
106
|
+
* `scripts` that is sleeping, running everything due on the way, until
|
|
107
|
+
* none of them is (or the sleeper is paused).
|
|
108
|
+
*/
|
|
109
|
+
settle(scripts: ReadonlyArray<Script>): void;
|
|
102
110
|
/**
|
|
103
111
|
* Drain due events in chronological order. Each event is delivered to
|
|
104
112
|
* its target script via `script.deliver(event, payload)`. If a handler
|
package/dist/linkset.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linkset.d.ts","sourceRoot":"","sources":["../src/linkset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC,OAAO,EACL,SAAS,EACT,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,SAAS,EACV,MAAM,0BAA0B,CAAA;AAGjC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAA;AAE7E,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,qFAAqF;IACrF,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAA;IACtB,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAID;;;;;;;;;GASG;AACH,qBAAa,OAAO;IAClB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,CAAK;IAC3B,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAY;IAC/D;;;;OAIG;IACH,QAAQ,CAAC,cAAc,EAAE,kBAAkB,EAAE,CAAK;IAClD,gFAAgF;IAChF,QAAQ,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAK;IAExC,6DAA6D;IAC7D,mBAAmB,IAAI,IAAI,CAE1B;IACD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IAEnC,YAAY,IAAI,GAAE,cAAmB,EAWpC;IAED,+DAA+D;IAC/D,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAKxB;IAED,OAAO,CAAC,oBAAoB;IAW5B,wEAAwE;IACxE,UAAU,IAAI,MAAM,EAAE,CAMrB;IAED,yDAAyD;IACzD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAEvC;IAED,wEAAwE;IACxE,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,CAwBzD;IAED;;;;OAIG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAKtE;IAED
|
|
1
|
+
{"version":3,"file":"linkset.d.ts","sourceRoot":"","sources":["../src/linkset.ts"],"names":[],"mappings":"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"}
|
package/dist/linkset.js
CHANGED
|
@@ -120,8 +120,9 @@ export class Linkset {
|
|
|
120
120
|
/**
|
|
121
121
|
* Send a `link_message` according to LSL fan-out semantics.
|
|
122
122
|
* `senderLink` is the calling prim's link number; the event payload's
|
|
123
|
-
* `sender_num` is set to that value.
|
|
124
|
-
*
|
|
123
|
+
* `sender_num` is set to that value. Scripts that are not running never
|
|
124
|
+
* get the message. The capture array on the linkset records every
|
|
125
|
+
* invocation for cross-script test assertions.
|
|
125
126
|
*/
|
|
126
127
|
deliverLinkMessage(senderLink, target, num, str, id) {
|
|
127
128
|
this.linkedMessages.push({ target, num, str, id });
|
|
@@ -129,7 +130,8 @@ export class Linkset {
|
|
|
129
130
|
const at = this.clock.now;
|
|
130
131
|
for (const p of targets) {
|
|
131
132
|
for (const s of p.scripts) {
|
|
132
|
-
|
|
133
|
+
if (s.running)
|
|
134
|
+
this.clock.schedule(s, at, 'link_message', { sender_num: senderLink, num, str, id });
|
|
133
135
|
}
|
|
134
136
|
}
|
|
135
137
|
}
|
|
@@ -139,10 +141,7 @@ export class Linkset {
|
|
|
139
141
|
* available for the single-script case (delivers only to that script).
|
|
140
142
|
*/
|
|
141
143
|
deliverChat(opts) {
|
|
142
|
-
|
|
143
|
-
s.matchChatListens(opts);
|
|
144
|
-
}
|
|
145
|
-
this.drainQueue();
|
|
144
|
+
this.settle(this.allScripts().filter((s) => s.matchChatListens(opts) && s.handles('listen')));
|
|
146
145
|
}
|
|
147
146
|
/**
|
|
148
147
|
* Queue chat a script in prim `from` sent on the listens of every prim it
|
|
@@ -182,7 +181,8 @@ export class Linkset {
|
|
|
182
181
|
* due across the linkset, or its whole world, dispatching each to its
|
|
183
182
|
* target script. The clock steps to each
|
|
184
183
|
* event's due time before its handler runs, so handlers see the time the
|
|
185
|
-
* event fired rather than the end of the window.
|
|
184
|
+
* event fired rather than the end of the window. The clock ends exactly
|
|
185
|
+
* `ms` later; a handler sleeping past that stays asleep until a later advance.
|
|
186
186
|
*/
|
|
187
187
|
advanceTime(ms) {
|
|
188
188
|
if (ms < 0)
|
|
@@ -192,6 +192,23 @@ export class Linkset {
|
|
|
192
192
|
if (this.clock.now < until)
|
|
193
193
|
this.clock.now = until;
|
|
194
194
|
}
|
|
195
|
+
/**
|
|
196
|
+
* Drain due events, then keep moving the clock to the next wake of any of
|
|
197
|
+
* `scripts` that is sleeping, running everything due on the way, until
|
|
198
|
+
* none of them is (or the sleeper is paused).
|
|
199
|
+
*/
|
|
200
|
+
settle(scripts) {
|
|
201
|
+
this.drainQueue();
|
|
202
|
+
for (;;) {
|
|
203
|
+
let at = Infinity;
|
|
204
|
+
for (const s of scripts)
|
|
205
|
+
if (s.running && s.wakeAt !== undefined)
|
|
206
|
+
at = Math.min(at, s.wakeAt);
|
|
207
|
+
if (at === Infinity)
|
|
208
|
+
return;
|
|
209
|
+
this.drainQueue(at);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
195
212
|
/**
|
|
196
213
|
* Drain due events in chronological order. Each event is delivered to
|
|
197
214
|
* its target script via `script.deliver(event, payload)`. If a handler
|
|
@@ -217,9 +234,13 @@ export class Linkset {
|
|
|
217
234
|
const target = next.target;
|
|
218
235
|
if (target.dead)
|
|
219
236
|
continue;
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
237
|
+
if (next.event === '__wake') {
|
|
238
|
+
target.wake();
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
// `__reset` (from llResetOtherScript) was requested while the target
|
|
242
|
+
// was running, so it applies even if the target was stopped since; the
|
|
243
|
+
// target just stays stopped afterward.
|
|
223
244
|
if (!target.running && next.event !== '__reset') {
|
|
224
245
|
// Park for replay when the script is re-enabled. A paused script
|
|
225
246
|
// must not block other scripts' events, so we stash on the script
|