porffor 0.2.0-6aff0fa → 0.2.0-767de65

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.
Files changed (50) hide show
  1. package/.vscode/launch.json +18 -0
  2. package/LICENSE +20 -20
  3. package/README.md +54 -41
  4. package/asur/index.js +624 -340
  5. package/byg/index.js +237 -0
  6. package/compiler/2c.js +1 -1
  7. package/compiler/{sections.js → assemble.js} +57 -10
  8. package/compiler/builtins/annexb_string.js +72 -0
  9. package/compiler/builtins/annexb_string.ts +19 -0
  10. package/compiler/builtins/array.ts +145 -0
  11. package/compiler/builtins/base64.ts +3 -5
  12. package/compiler/builtins/crypto.ts +120 -0
  13. package/compiler/builtins/escape.ts +141 -0
  14. package/compiler/builtins/int.ts +147 -0
  15. package/compiler/builtins/number.ts +527 -0
  16. package/compiler/builtins/porffor.d.ts +27 -8
  17. package/compiler/builtins/string.ts +1055 -0
  18. package/compiler/builtins/tostring.ts +45 -0
  19. package/compiler/builtins.js +405 -108
  20. package/compiler/{codeGen.js → codegen.js} +654 -246
  21. package/compiler/embedding.js +22 -22
  22. package/compiler/encoding.js +108 -10
  23. package/compiler/generated_builtins.js +682 -2
  24. package/compiler/index.js +16 -14
  25. package/compiler/log.js +2 -2
  26. package/compiler/opt.js +23 -22
  27. package/compiler/parse.js +31 -25
  28. package/compiler/precompile.js +19 -25
  29. package/compiler/prefs.js +2 -2
  30. package/compiler/prototype.js +2 -18
  31. package/compiler/types.js +37 -0
  32. package/compiler/wasmSpec.js +13 -1
  33. package/compiler/wrap.js +36 -42
  34. package/empty.js +0 -0
  35. package/hello.js +2 -0
  36. package/package.json +9 -5
  37. package/porf +2 -0
  38. package/rhemyn/compile.js +3 -2
  39. package/rhemyn/parse.js +323 -320
  40. package/rhemyn/test/parse.js +58 -58
  41. package/runner/compare.js +34 -34
  42. package/runner/debug.js +122 -0
  43. package/runner/index.js +26 -10
  44. package/runner/profiler.js +45 -26
  45. package/runner/repl.js +40 -7
  46. package/runner/sizes.js +37 -37
  47. package/test262_changes_from_1afe9b87d2_to_04-09.md +270 -0
  48. package/runner/info.js +0 -89
  49. package/runner/transform.js +0 -15
  50. package/util/enum.js +0 -20
@@ -0,0 +1,270 @@
1
+ ## new wasm errors
2
+ intl402/supportedLocalesOf-throws-if-element-not-string-or-object.js
3
+ built-ins/Boolean/S15.6.1.1_A1_T2.js
4
+ built-ins/Boolean/S15.6.1.1_A1_T3.js
5
+ built-ins/Boolean/S15.6.1.1_A1_T4.js
6
+ built-ins/Boolean/S15.6.1.1_A1_T5.js
7
+ built-ins/Boolean/S15.6.1.1_A2.js
8
+ built-ins/Boolean/S9.2_A1_T1.js
9
+ built-ins/Boolean/S9.2_A2_T1.js
10
+ built-ins/Boolean/S9.2_A3_T1.js
11
+ built-ins/Boolean/S9.2_A4_T1.js
12
+ built-ins/Boolean/S9.2_A4_T3.js
13
+ built-ins/Boolean/S9.2_A5_T1.js
14
+ built-ins/Boolean/S9.2_A5_T3.js
15
+ built-ins/Boolean/S9.2_A6_T1.js
16
+ built-ins/Number/MAX_SAFE_INTEGER.js
17
+ built-ins/Number/MIN_SAFE_INTEGER.js
18
+ language/function-code/10.4.3-1-103.js
19
+ language/function-code/10.4.3-1-105.js
20
+ annexB/language/global-code/block-decl-global-init.js
21
+ annexB/language/global-code/if-decl-else-decl-a-global-init.js
22
+ annexB/language/global-code/if-decl-else-decl-b-global-init.js
23
+ annexB/language/global-code/if-decl-else-stmt-global-init.js
24
+ annexB/language/global-code/if-decl-no-else-global-init.js
25
+ annexB/language/global-code/if-stmt-else-decl-global-init.js
26
+ built-ins/Array/Symbol.species/symbol-species.js
27
+ built-ins/ArrayBuffer/Symbol.species/symbol-species.js
28
+ built-ins/Map/Symbol.species/symbol-species.js
29
+ built-ins/Object/defineProperties/15.2.3.7-6-a-249.js
30
+ built-ins/Object/defineProperty/15.2.3.6-4-260.js
31
+ built-ins/Promise/Symbol.species/prop-desc.js
32
+ built-ins/RegExp/Symbol.species/symbol-species.js
33
+ built-ins/Set/Symbol.species/symbol-species.js
34
+ built-ins/TypedArray/Symbol.species/prop-desc.js
35
+ language/eval-code/direct/var-env-var-init-global-new.js
36
+ language/expressions/arrow-function/prototype-rules.js
37
+ language/expressions/coalesce/chainable-if-parenthesis-covered-logical-or.js
38
+ language/expressions/instanceof/S15.3.5.3_A1_T2.js
39
+ language/expressions/logical-assignment/lgcl-and-assignment-operator-unresolved-rhs-put.js
40
+ language/expressions/logical-assignment/lgcl-and-assignment-operator-unresolved-rhs.js
41
+ language/expressions/logical-assignment/lgcl-and-whitespace.js
42
+ language/expressions/logical-assignment/lgcl-nullish-assignment-operator-unresolved-rhs-put.js
43
+ language/expressions/logical-assignment/lgcl-nullish-assignment-operator-unresolved-rhs.js
44
+ language/expressions/logical-assignment/lgcl-nullish-whitespace.js
45
+ language/expressions/logical-assignment/lgcl-or-assignment-operator-unresolved-rhs-put.js
46
+ language/expressions/logical-assignment/lgcl-or-assignment-operator-unresolved-rhs.js
47
+ language/expressions/logical-assignment/lgcl-or-whitespace.js
48
+ language/literals/boolean/S7.8.2_A1_T1.js
49
+ language/literals/boolean/S7.8.2_A1_T2.js
50
+ annexB/language/expressions/logical-assignment/emulates-undefined-and.js
51
+ annexB/language/expressions/logical-assignment/emulates-undefined-coalesce.js
52
+ annexB/language/expressions/logical-assignment/emulates-undefined-or.js
53
+ built-ins/Array/prototype/sort/precise-comparefn-throws.js
54
+ built-ins/Array/prototype/sort/precise-getter-appends-elements.js
55
+ built-ins/Array/prototype/sort/precise-getter-decreases-length.js
56
+ built-ins/Array/prototype/sort/precise-getter-deletes-predecessor.js
57
+ built-ins/Array/prototype/sort/precise-getter-deletes-successor.js
58
+ built-ins/Array/prototype/sort/precise-getter-increases-length.js
59
+ built-ins/Array/prototype/sort/precise-getter-pops-elements.js
60
+ built-ins/Array/prototype/sort/precise-getter-sets-predecessor.js
61
+ built-ins/Array/prototype/sort/precise-getter-sets-successor.js
62
+ built-ins/Array/prototype/sort/precise-prototype-accessors.js
63
+ built-ins/Array/prototype/sort/precise-prototype-element.js
64
+ built-ins/Array/prototype/sort/precise-setter-appends-elements.js
65
+ built-ins/Array/prototype/sort/precise-setter-deletes-predecessor.js
66
+ built-ins/Array/prototype/sort/precise-setter-deletes-successor.js
67
+ built-ins/Array/prototype/sort/precise-setter-increases-length.js
68
+ built-ins/Array/prototype/sort/precise-setter-sets-predecessor.js
69
+ built-ins/Array/prototype/sort/precise-setter-sets-successor.js
70
+ built-ins/ArrayBuffer/prototype/byteLength/prop-desc.js
71
+ built-ins/ArrayBuffer/prototype/detached/prop-desc.js
72
+ built-ins/ArrayBuffer/prototype/maxByteLength/prop-desc.js
73
+ built-ins/ArrayBuffer/prototype/resizable/prop-desc.js
74
+ built-ins/DataView/prototype/buffer/prop-desc.js
75
+ built-ins/DataView/prototype/byteLength/prop-desc.js
76
+ built-ins/DataView/prototype/byteOffset/prop-desc.js
77
+ built-ins/Object/prototype/__proto__/prop-desc.js
78
+ built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-is-undefined.js
79
+ built-ins/RegExp/prototype/dotAll/prop-desc.js
80
+ built-ins/RegExp/prototype/flags/prop-desc.js
81
+ built-ins/RegExp/prototype/hasIndices/prop-desc.js
82
+ built-ins/RegExp/prototype/source/prop-desc.js
83
+ built-ins/RegExp/prototype/unicodeSets/prop-desc.js
84
+ built-ins/SharedArrayBuffer/prototype/byteLength/prop-desc.js
85
+ built-ins/SharedArrayBuffer/prototype/growable/prop-desc.js
86
+ built-ins/SharedArrayBuffer/prototype/maxByteLength/prop-desc.js
87
+ built-ins/Symbol/prototype/description/descriptor.js
88
+ built-ins/TypedArray/prototype/Symbol.toStringTag/invoked-as-accessor.js
89
+ built-ins/TypedArray/prototype/Symbol.toStringTag/prop-desc.js
90
+ built-ins/TypedArray/prototype/buffer/prop-desc.js
91
+ built-ins/TypedArray/prototype/byteLength/prop-desc.js
92
+ built-ins/TypedArray/prototype/byteOffset/prop-desc.js
93
+ built-ins/TypedArray/prototype/length/prop-desc.js
94
+ built-ins/TypedArrayConstructors/ctors/length-arg/toindex-length.js
95
+ built-ins/TypedArrayConstructors/ctors-bigint/length-arg/toindex-length.js
96
+ intl402/Collator/prototype/compare/prop-desc.js
97
+ intl402/DateTimeFormat/prototype/format/prop-desc.js
98
+ intl402/Locale/prototype/baseName/prop-desc.js
99
+ intl402/Locale/prototype/calendar/prop-desc.js
100
+ intl402/Locale/prototype/caseFirst/prop-desc.js
101
+ intl402/Locale/prototype/collation/prop-desc.js
102
+ intl402/Locale/prototype/firstDayOfWeek/prop-desc.js
103
+ intl402/Locale/prototype/hourCycle/prop-desc.js
104
+ intl402/Locale/prototype/language/prop-desc.js
105
+ intl402/Locale/prototype/numberingSystem/prop-desc.js
106
+ intl402/Locale/prototype/numeric/prop-desc.js
107
+ intl402/Locale/prototype/region/prop-desc.js
108
+ intl402/Locale/prototype/script/prop-desc.js
109
+ intl402/NumberFormat/prototype/format/prop-desc.js
110
+ language/expressions/arrow-function/dstr/dflt-obj-ptrn-rest-getter.js
111
+ language/expressions/arrow-function/dstr/dflt-obj-ptrn-rest-val-obj.js
112
+ language/expressions/function/dstr/dflt-obj-ptrn-rest-getter.js
113
+ language/expressions/function/dstr/dflt-obj-ptrn-rest-val-obj.js
114
+ language/statements/function/dstr/dflt-obj-ptrn-rest-getter.js
115
+ language/statements/function/dstr/dflt-obj-ptrn-rest-val-obj.js
116
+ language/statements/try/dstr/obj-ptrn-rest-val-obj.js
117
+ annexB/built-ins/RegExp/legacy-accessors/lastMatch/prop-desc.js
118
+ annexB/built-ins/RegExp/legacy-accessors/lastParen/prop-desc.js
119
+ annexB/built-ins/RegExp/legacy-accessors/leftContext/prop-desc.js
120
+ annexB/built-ins/RegExp/legacy-accessors/rightContext/prop-desc.js
121
+ built-ins/TypedArray/prototype/Symbol.toStringTag/BigInt/invoked-as-accessor.js
122
+ built-ins/TypedArray/prototype/Symbol.toStringTag/BigInt/prop-desc.js
123
+
124
+
125
+ ## new passes
126
+ built-ins/RegExp/S15.10.2.6_A3_T3.js
127
+ language/expressions/in/S11.8.7_A2.1_T3.js
128
+ language/expressions/in/S11.8.7_A3.js
129
+ language/types/reference/S8.7_A2.js
130
+ built-ins/RegExp/prototype/test/y-fail-return.js
131
+
132
+
133
+ ## new fails
134
+ built-ins/Boolean/S15.6.1.1_A1_T1.js
135
+ built-ins/Boolean/S15.6.1.1_A1_T3.js
136
+ built-ins/Boolean/S15.6.1.1_A1_T5.js
137
+ built-ins/Boolean/S15.6.1.1_A2.js
138
+ built-ins/Boolean/S9.2_A1_T1.js
139
+ built-ins/Boolean/S9.2_A2_T1.js
140
+ built-ins/Boolean/S9.2_A3_T1.js
141
+ built-ins/Boolean/S9.2_A4_T3.js
142
+ built-ins/Boolean/S9.2_A5_T1.js
143
+ annexB/built-ins/RegExp/incomplete_hex_unicode_escape.js
144
+ language/expressions/addition/S11.6.1_A3.1_T1.1.js
145
+ language/expressions/addition/S11.6.1_A3.1_T2.1.js
146
+ language/expressions/addition/S11.6.1_A3.1_T2.5.js
147
+ language/expressions/bitwise-and/S11.10.1_A3_T1.1.js
148
+ language/expressions/bitwise-and/S11.10.1_A3_T2.1.js
149
+ language/expressions/bitwise-and/S11.10.1_A3_T2.8.js
150
+ language/expressions/bitwise-and/S11.10.1_A3_T2.9.js
151
+ language/expressions/bitwise-not/S11.4.8_A3_T1.js
152
+ language/expressions/bitwise-or/S11.10.3_A3_T1.1.js
153
+ language/expressions/bitwise-or/S11.10.3_A3_T2.1.js
154
+ language/expressions/bitwise-or/S11.10.3_A3_T2.8.js
155
+ language/expressions/bitwise-or/S11.10.3_A3_T2.9.js
156
+ language/expressions/bitwise-xor/S11.10.2_A3_T1.1.js
157
+ language/expressions/bitwise-xor/S11.10.2_A3_T2.1.js
158
+ language/expressions/bitwise-xor/S11.10.2_A3_T2.8.js
159
+ language/expressions/bitwise-xor/S11.10.2_A3_T2.9.js
160
+ language/expressions/coalesce/chainable-if-parenthesis-covered-logical-or.js
161
+ language/expressions/compound-assignment/S11.13.2_A4.10_T1.1.js
162
+ language/expressions/compound-assignment/S11.13.2_A4.10_T2.1.js
163
+ language/expressions/compound-assignment/S11.13.2_A4.10_T2.8.js
164
+ language/expressions/compound-assignment/S11.13.2_A4.10_T2.9.js
165
+ language/expressions/compound-assignment/S11.13.2_A4.11_T1.1.js
166
+ language/expressions/compound-assignment/S11.13.2_A4.11_T2.1.js
167
+ language/expressions/compound-assignment/S11.13.2_A4.11_T2.8.js
168
+ language/expressions/compound-assignment/S11.13.2_A4.11_T2.9.js
169
+ language/expressions/compound-assignment/S11.13.2_A4.1_T1.1.js
170
+ language/expressions/compound-assignment/S11.13.2_A4.1_T2.1.js
171
+ language/expressions/compound-assignment/S11.13.2_A4.1_T2.9.js
172
+ language/expressions/compound-assignment/S11.13.2_A4.2_T1.1.js
173
+ language/expressions/compound-assignment/S11.13.2_A4.2_T2.1.js
174
+ language/expressions/compound-assignment/S11.13.2_A4.2_T2.9.js
175
+ language/expressions/compound-assignment/S11.13.2_A4.3_T1.1.js
176
+ language/expressions/compound-assignment/S11.13.2_A4.3_T2.1.js
177
+ language/expressions/compound-assignment/S11.13.2_A4.3_T2.9.js
178
+ language/expressions/compound-assignment/S11.13.2_A4.4_T1.1.js
179
+ language/expressions/compound-assignment/S11.13.2_A4.4_T2.1.js
180
+ language/expressions/compound-assignment/S11.13.2_A4.4_T2.5.js
181
+ language/expressions/compound-assignment/S11.13.2_A4.5_T1.1.js
182
+ language/expressions/compound-assignment/S11.13.2_A4.5_T2.1.js
183
+ language/expressions/compound-assignment/S11.13.2_A4.5_T2.9.js
184
+ language/expressions/compound-assignment/S11.13.2_A4.6_T1.1.js
185
+ language/expressions/compound-assignment/S11.13.2_A4.6_T2.1.js
186
+ language/expressions/compound-assignment/S11.13.2_A4.6_T2.8.js
187
+ language/expressions/compound-assignment/S11.13.2_A4.6_T2.9.js
188
+ language/expressions/compound-assignment/S11.13.2_A4.7_T1.1.js
189
+ language/expressions/compound-assignment/S11.13.2_A4.7_T2.1.js
190
+ language/expressions/compound-assignment/S11.13.2_A4.7_T2.8.js
191
+ language/expressions/compound-assignment/S11.13.2_A4.7_T2.9.js
192
+ language/expressions/compound-assignment/S11.13.2_A4.8_T1.1.js
193
+ language/expressions/compound-assignment/S11.13.2_A4.8_T2.1.js
194
+ language/expressions/compound-assignment/S11.13.2_A4.8_T2.8.js
195
+ language/expressions/compound-assignment/S11.13.2_A4.8_T2.9.js
196
+ language/expressions/compound-assignment/S11.13.2_A4.9_T1.1.js
197
+ language/expressions/compound-assignment/S11.13.2_A4.9_T2.1.js
198
+ language/expressions/compound-assignment/S11.13.2_A4.9_T2.8.js
199
+ language/expressions/compound-assignment/S11.13.2_A4.9_T2.9.js
200
+ language/expressions/conditional/S11.12_A2.1_T1.js
201
+ language/expressions/conditional/S11.12_A3_T1.js
202
+ language/expressions/division/S11.5.2_A3_T1.1.js
203
+ language/expressions/division/S11.5.2_A3_T2.1.js
204
+ language/expressions/division/S11.5.2_A3_T2.9.js
205
+ language/expressions/does-not-equals/S11.9.2_A4.1_T1.js
206
+ language/expressions/does-not-equals/S11.9.2_A4.1_T2.js
207
+ language/expressions/equals/S11.9.1_A4.1_T1.js
208
+ language/expressions/equals/S11.9.1_A4.1_T2.js
209
+ language/expressions/greater-than/S11.8.2_A3.1_T1.1.js
210
+ language/expressions/greater-than/S11.8.2_A3.1_T2.1.js
211
+ language/expressions/greater-than/S11.8.2_A3.1_T2.9.js
212
+ language/expressions/greater-than/S11.8.2_A4.10.js
213
+ language/expressions/greater-than-or-equal/S11.8.4_A3.1_T1.1.js
214
+ language/expressions/greater-than-or-equal/S11.8.4_A3.1_T2.1.js
215
+ language/expressions/greater-than-or-equal/S11.8.4_A3.1_T2.9.js
216
+ language/expressions/grouping/S11.1.6_A3_T1.js
217
+ language/expressions/left-shift/S11.7.1_A3_T1.1.js
218
+ language/expressions/left-shift/S11.7.1_A3_T2.1.js
219
+ language/expressions/left-shift/S11.7.1_A3_T2.8.js
220
+ language/expressions/left-shift/S11.7.1_A3_T2.9.js
221
+ language/expressions/left-shift/S9.5_A3.1_T1.js
222
+ language/expressions/less-than/S11.8.1_A3.1_T1.1.js
223
+ language/expressions/less-than/S11.8.1_A3.1_T2.1.js
224
+ language/expressions/less-than/S11.8.1_A3.1_T2.9.js
225
+ language/expressions/less-than-or-equal/S11.8.3_A3.1_T1.1.js
226
+ language/expressions/less-than-or-equal/S11.8.3_A3.1_T2.1.js
227
+ language/expressions/less-than-or-equal/S11.8.3_A3.1_T2.9.js
228
+ language/expressions/logical-and/S11.11.1_A2.1_T1.js
229
+ language/expressions/logical-and/S11.11.1_A3_T1.js
230
+ language/expressions/logical-assignment/lgcl-and-assignment-operator-unresolved-rhs-put.js
231
+ language/expressions/logical-assignment/lgcl-and-whitespace.js
232
+ language/expressions/logical-assignment/lgcl-nullish-assignment-operator-unresolved-rhs-put.js
233
+ language/expressions/logical-assignment/lgcl-nullish-whitespace.js
234
+ language/expressions/logical-assignment/lgcl-or-assignment-operator-unresolved-rhs-put.js
235
+ language/expressions/logical-assignment/lgcl-or-whitespace.js
236
+ language/expressions/logical-or/S11.11.2_A3_T1.js
237
+ language/expressions/modulus/S11.5.3_A3_T1.1.js
238
+ language/expressions/modulus/S11.5.3_A3_T2.1.js
239
+ language/expressions/modulus/S11.5.3_A3_T2.9.js
240
+ language/expressions/multiplication/S11.5.1_A3_T1.1.js
241
+ language/expressions/multiplication/S11.5.1_A3_T2.1.js
242
+ language/expressions/multiplication/S11.5.1_A3_T2.9.js
243
+ language/expressions/prefix-decrement/S11.4.5_A4_T1.js
244
+ language/expressions/prefix-increment/S11.4.4_A4_T1.js
245
+ language/expressions/right-shift/S11.7.2_A3_T1.1.js
246
+ language/expressions/right-shift/S11.7.2_A3_T2.1.js
247
+ language/expressions/right-shift/S11.7.2_A3_T2.8.js
248
+ language/expressions/right-shift/S11.7.2_A3_T2.9.js
249
+ language/expressions/strict-does-not-equals/S11.9.5_A4.1_T1.js
250
+ language/expressions/strict-does-not-equals/S11.9.5_A4.1_T2.js
251
+ language/expressions/strict-equals/S11.9.4_A4.1_T1.js
252
+ language/expressions/strict-equals/S11.9.4_A4.1_T2.js
253
+ language/expressions/subtraction/S11.6.2_A3_T1.1.js
254
+ language/expressions/subtraction/S11.6.2_A3_T2.1.js
255
+ language/expressions/subtraction/S11.6.2_A3_T2.9.js
256
+ language/expressions/unary-plus/S11.4.6_A3_T1.js
257
+ language/expressions/unsigned-right-shift/S11.7.3_A3_T1.1.js
258
+ language/expressions/unsigned-right-shift/S11.7.3_A3_T2.1.js
259
+ language/expressions/unsigned-right-shift/S11.7.3_A3_T2.8.js
260
+ language/expressions/unsigned-right-shift/S11.7.3_A3_T2.9.js
261
+ language/expressions/unsigned-right-shift/S9.6_A3.1_T1.js
262
+ language/expressions/void/S11.4.2_A4_T1.js
263
+ language/literals/boolean/S7.8.2_A1_T1.js
264
+ language/literals/boolean/S7.8.2_A1_T2.js
265
+ language/statements/for-of/string-astral-truncated.js
266
+ language/statements/function/S13.2.1_A6_T1.js
267
+ language/statements/function/S13.2.1_A6_T2.js
268
+ language/statements/function/S13.2.1_A6_T3.js
269
+ language/statements/function/S13.2.1_A6_T4.js
270
+ built-ins/String/prototype/at/returns-code-unit.js
package/runner/info.js DELETED
@@ -1,89 +0,0 @@
1
- import compile from '../compiler/wrap.js';
2
- import fs from 'node:fs';
3
-
4
- /* if (globalThis.process) {
5
- const v8 = await import('node:v8');
6
- v8.setFlagsFromString('--experimental-wasm-gc');
7
- } */
8
-
9
- const raw = process.argv.includes('-raw');
10
-
11
- const file = process.argv.slice(2).find(x => x[0] !== '-');
12
- if (!file) {
13
- // run repl if no file given
14
- await import('./repl.js');
15
-
16
- // do nothing for the rest of this file
17
- await new Promise(() => {});
18
- }
19
-
20
- const source = fs.readFileSync(file, 'utf8');
21
-
22
- const underline = x => `\u001b[4m\u001b[1m${x}\u001b[0m`;
23
- const bold = x => `\u001b[1m${x}\u001b[0m`;
24
-
25
- if (!raw) console.log(`\n${underline('source')}\n` + source);
26
- if (!raw) console.log(`\n\n${underline('processing')}`);
27
-
28
- let cache = '';
29
- const print = str => {
30
- cache += str;
31
-
32
- if (str === '\n') {
33
- process.stdout.write(cache);
34
- cache = '';
35
- }
36
- };
37
-
38
- const t0 = performance.now();
39
- const { wasm, exports, pages } = await compile(source, raw ? [ 'module' ] : [ 'module', 'info' ], {}, print);
40
-
41
- if (!raw && typeof Deno === 'undefined') fs.writeFileSync('out.wasm', Buffer.from(wasm));
42
-
43
- if (!process.argv.includes('-no-run')) {
44
- console.log(`\n\n${underline('output')}`);
45
- const t2 = performance.now();
46
-
47
- exports.main();
48
- print('\n');
49
-
50
- if (!raw) console.log(bold(`\n\nexecuted in ${(performance.now() - t2).toFixed(2)}ms`));
51
- }
52
-
53
- if (!raw) console.log(bold(`wasm binary is ${wasm.byteLength} bytes`));
54
- if (!raw) console.log(`total: ${(performance.now() - t0).toFixed(2)}ms`);
55
-
56
- if (!raw && process.argv.includes('-mem') && exports.$) {
57
- console.log();
58
-
59
- let lastMemory, lastPages;
60
- const PageSize = 65536;
61
- const memoryToString = mem => {
62
- let out = '';
63
- const pages = lastPages.length;
64
- const wasmPages = mem.buffer.byteLength / PageSize;
65
-
66
- out += `\x1B[1mallocated ${mem.buffer.byteLength / 1024}KiB\x1B[0m for ${pages} things using ${wasmPages} Wasm page${wasmPages === 1 ? '' : 's'}\n`;
67
-
68
- const buf = new Uint8Array(mem.buffer);
69
-
70
- for (let i = 0; i < pages; i++) {
71
- out += `\x1B[36m${lastPages[i]}\x1B[2m | \x1B[0m`;
72
-
73
- for (let j = 0; j < 50; j++) {
74
- const val = buf[i * pageSize + j];
75
- if (val === 0) out += '\x1B[2m';
76
- out += val.toString(16).padStart(2, '0');
77
- if (val === 0) out += '\x1B[0m';
78
- out += ' ';
79
- }
80
- out += '\n';
81
- }
82
-
83
- return out;
84
- };
85
-
86
- lastPages = [...pages.keys()];
87
- lastMemory = exports.$;
88
- console.log(memoryToString(lastMemory));
89
- }
@@ -1,15 +0,0 @@
1
- import compile from '../compiler/wrap.js';
2
- import fs from 'node:fs';
3
-
4
- const file = process.argv.slice(2).find(x => x[0] !== '-');
5
-
6
- const source = fs.readFileSync(file, 'utf8');
7
-
8
- const { wasm } = await compile(source);
9
-
10
- // const out = `(async () => { const print = str => process.stdout.write(str); (await WebAssembly.instantiate(Uint8Array.from([${wasm.toString()}]), {'': { p: i => print(i.toString()), c: i => print(String.fromCharCode(i))}})).instance.exports.m()})()`;
11
- // const out = `new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([${wasm.toString()}])),{'':{p:i=>process.stdout.write(i.toString())}}).exports.m()`;
12
- const out = `const a=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([${wasm.toString()}])));const b=a.exports.m();console.log(Array.from(new Uint16Array(a.exports.$.buffer,b+4,new Int32Array(a.exports.$.buffer,b,1))).map(x=>String.fromCharCode(x)).join(''))`;
13
-
14
- console.log(out);
15
- eval(out);
package/util/enum.js DELETED
@@ -1,20 +0,0 @@
1
- export const enumify = (...args) => {
2
- const obj = {};
3
-
4
- for (let i = 0; i < args.length; i++) {
5
- obj[i] = args[i];
6
- obj[args[i]] = i;
7
- }
8
-
9
- return obj;
10
- };
11
-
12
- // a procedural enum ;)
13
- export const procEnum = () => {
14
- let n = 0;
15
- return new Proxy({}, {
16
- get(target, p) {
17
- return target[p] ?? (target[p] = n++);
18
- }
19
- });
20
- };