porffor 0.58.3 → 0.58.4
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/bun.lock +45 -0
- package/compiler/builtins/_internal_object.ts +7 -10
- package/compiler/builtins/console.ts +0 -2
- package/compiler/builtins/error.js +1 -1
- package/compiler/builtins/object_hiddenPrototype.js +1 -1
- package/compiler/builtins/z_ecma262.ts +2 -6
- package/compiler/builtins_precompiled.js +547 -547
- package/compiler/codegen.js +5 -9
- package/compiler/parse.js +13 -5
- package/compiler/precompile.js +1 -1
- package/compiler/types.js +2 -5
- package/compiler/wrap.js +0 -1
- package/jsr.json +1 -1
- package/package.json +3 -2
- package/runtime/index.js +1 -1
package/bun.lock
CHANGED
@@ -11,6 +11,7 @@
|
|
11
11
|
"@babel/parser": "^7.24.4",
|
12
12
|
"hermes-parser": "^0.18.2",
|
13
13
|
"meriyah": "^4.3.9",
|
14
|
+
"oxc-parser": "^0.72.2",
|
14
15
|
},
|
15
16
|
},
|
16
17
|
},
|
@@ -23,6 +24,46 @@
|
|
23
24
|
|
24
25
|
"@babel/types": ["@babel/types@7.26.9", "", { "dependencies": { "@babel/helper-string-parser": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9" } }, "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw=="],
|
25
26
|
|
27
|
+
"@emnapi/core": ["@emnapi/core@1.4.3", "", { "dependencies": { "@emnapi/wasi-threads": "1.0.2", "tslib": "^2.4.0" } }, "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g=="],
|
28
|
+
|
29
|
+
"@emnapi/runtime": ["@emnapi/runtime@1.4.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ=="],
|
30
|
+
|
31
|
+
"@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.0.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA=="],
|
32
|
+
|
33
|
+
"@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.10", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@tybys/wasm-util": "^0.9.0" } }, "sha512-bCsCyeZEwVErsGmyPNSzwfwFn4OdxBj0mmv6hOFucB/k81Ojdu68RbZdxYsRQUPc9l6SU5F/cG+bXgWs3oUgsQ=="],
|
34
|
+
|
35
|
+
"@oxc-parser/binding-darwin-arm64": ["@oxc-parser/binding-darwin-arm64@0.72.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-+h1ukuH8AqxNq1hEyXG0gBNmPWl99qwtZ6rdZ5odXq3lHsimH2MgMETyccmSjBALVU/VKeoe/1wHL7kJj5MVqA=="],
|
36
|
+
|
37
|
+
"@oxc-parser/binding-darwin-x64": ["@oxc-parser/binding-darwin-x64@0.72.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-v2c/L0kCuF75AAJTLBbnZ6kSfzCHR23JKqhnksf/ccB7IvssIZCxWyT28IJTkG1vGXCenRz9+kAmUbGHIUqV4A=="],
|
38
|
+
|
39
|
+
"@oxc-parser/binding-freebsd-x64": ["@oxc-parser/binding-freebsd-x64@0.72.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-BeZH+f4HqLgdkC7dj7VPhoL5HpeBXQLwxgnm6McbnBJnvDRNl8bc7El1mFBRYe/w6OPcand5P3kNc9oMAfasfw=="],
|
40
|
+
|
41
|
+
"@oxc-parser/binding-linux-arm-gnueabihf": ["@oxc-parser/binding-linux-arm-gnueabihf@0.72.2", "", { "os": "linux", "cpu": "arm" }, "sha512-mIu9B856olNcAdG/xdUALW5VhNoCqe3nhdsPmXNZAUQtQ/YyW3X+1zb2v74RhehsNNe7sT0eN2iOMetM+IYF+Q=="],
|
42
|
+
|
43
|
+
"@oxc-parser/binding-linux-arm-musleabihf": ["@oxc-parser/binding-linux-arm-musleabihf@0.72.2", "", { "os": "linux", "cpu": "arm" }, "sha512-RR74LnLVtoQ2+dErNqrczLofs9I6YG9lIt4Co/6pNcd8pCIMEHXaVtY7Gz9NSko84Que/6ESPccvolhqACXnHQ=="],
|
44
|
+
|
45
|
+
"@oxc-parser/binding-linux-arm64-gnu": ["@oxc-parser/binding-linux-arm64-gnu@0.72.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-q+86LrcddEkRgA7ces/cmge/FyuoGpa0M2D6Xh6c60orALus39J6j0LRD0pbfh6c8YVmD4XFoOahiOD2kep4+w=="],
|
46
|
+
|
47
|
+
"@oxc-parser/binding-linux-arm64-musl": ["@oxc-parser/binding-linux-arm64-musl@0.72.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-mjwp4B3Yqj6Fo1KIRDRQyWkkJ7ydijReo0UQ6wdDdvQt9v3Sjw4VMlkYAc+hAEo7EX6muPwy2WtjMOtzedlzvA=="],
|
48
|
+
|
49
|
+
"@oxc-parser/binding-linux-riscv64-gnu": ["@oxc-parser/binding-linux-riscv64-gnu@0.72.2", "", { "os": "linux", "cpu": "none" }, "sha512-xjbjHPIjHzew583ly/2uIR8u4YSX2fWuhJitkvqzKGBd403/wV9fOGKbgbgeFZxcqIqQlZI6WcxTU+fcmMQ5HQ=="],
|
50
|
+
|
51
|
+
"@oxc-parser/binding-linux-s390x-gnu": ["@oxc-parser/binding-linux-s390x-gnu@0.72.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-ohZ70sS4koTbQ+LqMDWK2SOMFmhPzv9DNgC82X/PqjuvzAIDPn13Rt+rUmpMwew/Xtbpe/vPHsEdkxNqsq2XMg=="],
|
52
|
+
|
53
|
+
"@oxc-parser/binding-linux-x64-gnu": ["@oxc-parser/binding-linux-x64-gnu@0.72.2", "", { "os": "linux", "cpu": "x64" }, "sha512-9lYwvYstsnRHivGpH2k8qZQPf0E/FhMr1YuZPxLqyUYzGmdiEpcU7wQbgU6dNIepLLdu/VLmYqmYYaBh86GzWQ=="],
|
54
|
+
|
55
|
+
"@oxc-parser/binding-linux-x64-musl": ["@oxc-parser/binding-linux-x64-musl@0.72.2", "", { "os": "linux", "cpu": "x64" }, "sha512-4KYID/lCsXR/8m8lgynZzXQIL5zidi5J9cW1nkje2deAf+YmmG6kKm1Vhvq8DaXOkdfGmtDbYd9luYplxncWBg=="],
|
56
|
+
|
57
|
+
"@oxc-parser/binding-wasm32-wasi": ["@oxc-parser/binding-wasm32-wasi@0.72.2", "", { "dependencies": { "@napi-rs/wasm-runtime": "^0.2.10" }, "cpu": "none" }, "sha512-ng+OJ+4MOsdJVt2a7VpcornkYFLu9Faos77UXogJg+HM5NnH1L+8rraGvxzJWf8OhYkwlQCIvLuqkncfPap4RA=="],
|
58
|
+
|
59
|
+
"@oxc-parser/binding-win32-arm64-msvc": ["@oxc-parser/binding-win32-arm64-msvc@0.72.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-0FSLOzfB7mg1+csZjbo3i5tjLIKGu86vB5ldui5o3QNoxWg+TdRhH0cbxfXZANo3eHTLu5GPtrqaZ0pgB4Pvgw=="],
|
60
|
+
|
61
|
+
"@oxc-parser/binding-win32-x64-msvc": ["@oxc-parser/binding-win32-x64-msvc@0.72.2", "", { "os": "win32", "cpu": "x64" }, "sha512-mmO/7xfszYE0Q6zAwqOooQrq/0f4ZjtYOoOqvoNCBZ6YqdlwiMSWD3M0ylVfeungyKog2wfJbruabKKt5QbVNw=="],
|
62
|
+
|
63
|
+
"@oxc-project/types": ["@oxc-project/types@0.72.2", "", {}, "sha512-il5RF8AP85XC0CMjHF4cnVT9nT/v/ocm6qlZQpSiAR9qBbQMGkFKloBZwm7PcnOdiUX97yHgsKM7uDCCWCu3tg=="],
|
64
|
+
|
65
|
+
"@tybys/wasm-util": ["@tybys/wasm-util@0.9.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw=="],
|
66
|
+
|
26
67
|
"acorn": ["acorn@8.14.1", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg=="],
|
27
68
|
|
28
69
|
"hermes-estree": ["hermes-estree@0.18.2", "", {}, "sha512-KoLsoWXJ5o81nit1wSyEZnWUGy9cBna9iYMZBR7skKh7okYAYKqQ9/OczwpMHn/cH0hKDyblulGsJ7FknlfVxQ=="],
|
@@ -32,5 +73,9 @@
|
|
32
73
|
"meriyah": ["meriyah@4.5.0", "", {}, "sha512-Rbiu0QPIxTXgOXwiIpRVJfZRQ2FWyfzYrOGBs9SN5RbaXg1CN5ELn/plodwWwluX93yzc4qO/bNIen1ThGFCxw=="],
|
33
74
|
|
34
75
|
"node-repl-polyfill": ["node-repl-polyfill@github:CanadaHonk/node-repl-polyfill#8d8a080", {}, "CanadaHonk-node-repl-polyfill-8d8a080"],
|
76
|
+
|
77
|
+
"oxc-parser": ["oxc-parser@0.72.2", "", { "dependencies": { "@oxc-project/types": "^0.72.2" }, "optionalDependencies": { "@oxc-parser/binding-darwin-arm64": "0.72.2", "@oxc-parser/binding-darwin-x64": "0.72.2", "@oxc-parser/binding-freebsd-x64": "0.72.2", "@oxc-parser/binding-linux-arm-gnueabihf": "0.72.2", "@oxc-parser/binding-linux-arm-musleabihf": "0.72.2", "@oxc-parser/binding-linux-arm64-gnu": "0.72.2", "@oxc-parser/binding-linux-arm64-musl": "0.72.2", "@oxc-parser/binding-linux-riscv64-gnu": "0.72.2", "@oxc-parser/binding-linux-s390x-gnu": "0.72.2", "@oxc-parser/binding-linux-x64-gnu": "0.72.2", "@oxc-parser/binding-linux-x64-musl": "0.72.2", "@oxc-parser/binding-wasm32-wasi": "0.72.2", "@oxc-parser/binding-win32-arm64-msvc": "0.72.2", "@oxc-parser/binding-win32-x64-msvc": "0.72.2" } }, "sha512-uoiphvClzsbf5NKgV1urQ7GfxIO+3YopmBWK465AiAURp0K/77udIWeZWdLCspxW+2CR5PhUpd1XocjANliKYw=="],
|
78
|
+
|
79
|
+
"tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
|
35
80
|
}
|
36
81
|
}
|
@@ -152,10 +152,7 @@ i32.const 7 ;; object
|
|
152
152
|
return`;
|
153
153
|
}
|
154
154
|
|
155
|
-
if (Porffor.
|
156
|
-
Porffor.type(_obj) > 0x05,
|
157
|
-
Porffor.type(_obj) != Porffor.TYPES.undefined
|
158
|
-
)) {
|
155
|
+
if (Porffor.type(_obj) > 0x05) {
|
159
156
|
if (underlyingStore == 0) underlyingStore = Porffor.allocate();
|
160
157
|
|
161
158
|
// check if underlying object already exists for obj
|
@@ -310,7 +307,7 @@ export const __Porffor_object_getPrototype = (obj: any): any => {
|
|
310
307
|
if (Porffor.wasm`local.get ${obj+1}` != Porffor.TYPES.object) {
|
311
308
|
obj = __Porffor_object_underlying(obj);
|
312
309
|
if (Porffor.wasm`local.get ${obj+1}` != Porffor.TYPES.object) {
|
313
|
-
// return
|
310
|
+
// return undefined
|
314
311
|
Porffor.wasm`
|
315
312
|
i32.const 0
|
316
313
|
i32.const 0
|
@@ -328,7 +325,7 @@ return`;
|
|
328
325
|
|
329
326
|
export const __Porffor_object_getPrototypeWithHidden = (obj: any, trueType: i32): any => {
|
330
327
|
const objectProto: any = __Porffor_object_getPrototype(obj);
|
331
|
-
if (Porffor.type(objectProto) != Porffor.TYPES.
|
328
|
+
if (Porffor.type(objectProto) != Porffor.TYPES.undefined) return objectProto;
|
332
329
|
|
333
330
|
return __Porffor_object_getHiddenPrototype(trueType);
|
334
331
|
};
|
@@ -464,8 +461,8 @@ local.set ${obj}
|
|
464
461
|
i32.load8_u 0 3
|
465
462
|
local.set ${obj+1}`;
|
466
463
|
|
467
|
-
// if
|
468
|
-
if (Porffor.type(obj) == Porffor.TYPES.
|
464
|
+
// if undefined, prototype is object.prototype
|
465
|
+
if (Porffor.type(obj) == Porffor.TYPES.undefined) obj = __Object_prototype;
|
469
466
|
} else obj = __Porffor_object_getHiddenPrototype(trueType);
|
470
467
|
|
471
468
|
// todo/opt: put this behind comptime flag if only __proto__ is used
|
@@ -540,8 +537,8 @@ local.set ${obj}
|
|
540
537
|
i32.load8_u 0 3
|
541
538
|
local.set ${obj+1}`;
|
542
539
|
|
543
|
-
// if
|
544
|
-
if (Porffor.type(obj) == Porffor.TYPES.
|
540
|
+
// if undefined, prototype is object.prototype
|
541
|
+
if (Porffor.type(obj) == Porffor.TYPES.undefined) obj = __Object_prototype;
|
545
542
|
} else obj = __Porffor_object_getHiddenPrototype(trueType);
|
546
543
|
|
547
544
|
if (Porffor.type(obj) != Porffor.TYPES.object) obj = __Porffor_object_underlying(obj);
|
@@ -69,7 +69,6 @@ export const __Porffor_miniLog = (arg: any) => {
|
|
69
69
|
}
|
70
70
|
break;
|
71
71
|
|
72
|
-
case Porffor.TYPES.empty:
|
73
72
|
case Porffor.TYPES.undefined:
|
74
73
|
Porffor.printStatic('undefined');
|
75
74
|
break;
|
@@ -136,7 +135,6 @@ export const __Porffor_print = (arg: any, colors: boolean = true, depth: number
|
|
136
135
|
if (colors) Porffor.printStatic('\x1b[0m');
|
137
136
|
return;
|
138
137
|
|
139
|
-
case Porffor.TYPES.empty:
|
140
138
|
case Porffor.TYPES.undefined:
|
141
139
|
if (colors) Porffor.printStatic('\x1b[2m'); // dim
|
142
140
|
Porffor.printStatic('undefined');
|
@@ -62,7 +62,7 @@ export const __Test262Error_thrower = message => {
|
|
62
62
|
throw new Test262Error(message);
|
63
63
|
};
|
64
64
|
|
65
|
-
export const __Error_isError = (x: unknown): boolean => Porffor.
|
65
|
+
export const __Error_isError = (x: unknown): boolean => Porffor.fastAnd(Porffor.type(x) >= Porffor.TYPES.error, Porffor.type(x) <= Porffor.TYPES.test262error);`;
|
66
66
|
|
67
67
|
return out;
|
68
68
|
};
|
@@ -24,7 +24,7 @@ export const __Porffor_object_getHiddenPrototype = (trueType: i32): any => {
|
|
24
24
|
}`;
|
25
25
|
|
26
26
|
for (const x in TYPES) {
|
27
|
-
if (['
|
27
|
+
if (['undefined', 'string', 'bytestring', 'stringobject', 'number', 'numberobject', 'boolean', 'booleanobject'].includes(x)) continue;
|
28
28
|
|
29
29
|
const name = TYPE_NAMES[TYPES[x]];
|
30
30
|
out += `
|
@@ -37,9 +37,7 @@ export const __ecma262_ToNumber = (argument: unknown): number => {
|
|
37
37
|
Porffor.type(argument) == Porffor.TYPES.bigint)) throw new TypeError('Cannot convert Symbol or BigInt to a number');
|
38
38
|
|
39
39
|
// 3. If argument is undefined, return NaN.
|
40
|
-
if (Porffor.
|
41
|
-
Porffor.type(argument) == Porffor.TYPES.undefined,
|
42
|
-
Porffor.type(argument) == Porffor.TYPES.empty)) return NaN;
|
40
|
+
if (Porffor.type(argument) == Porffor.TYPES.undefined) return NaN;
|
43
41
|
|
44
42
|
// 4. If argument is either null or false, return +0𝔽.
|
45
43
|
if (Porffor.fastOr(
|
@@ -131,9 +129,7 @@ export const __ecma262_ToString = (argument: unknown): any => {
|
|
131
129
|
if (Porffor.type(argument) == Porffor.TYPES.symbol) throw new TypeError('Cannot convert a Symbol value to a string');
|
132
130
|
|
133
131
|
// 3. If argument is undefined, return "undefined".
|
134
|
-
if (Porffor.
|
135
|
-
Porffor.type(argument) == Porffor.TYPES.undefined,
|
136
|
-
Porffor.type(argument) == Porffor.TYPES.empty)) return 'undefined';
|
132
|
+
if (Porffor.type(argument) == Porffor.TYPES.undefined) return 'undefined';
|
137
133
|
|
138
134
|
// 4. If argument is null, return "null".
|
139
135
|
if (Porffor.fastAnd(
|