xbintsc 0.1.1 → 0.1.6
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/README.md +29 -15
- package/dist/src/cli/main.js +1 -1
- package/dist/src/cli/main.js.map +1 -1
- package/dist/src/codegen/llvm.js +422 -44
- package/dist/src/codegen/llvm.js.map +1 -1
- package/dist/src/extensions/node/fs/index.d.ts +5 -0
- package/dist/src/extensions/node/fs/index.js +11 -0
- package/dist/src/extensions/node/fs/index.js.map +1 -0
- package/dist/src/extensions/node/fs/read-file.d.ts +8 -0
- package/dist/src/extensions/node/fs/read-file.js +11 -0
- package/dist/src/extensions/node/fs/read-file.js.map +1 -0
- package/dist/src/extensions/node/index.d.ts +11 -0
- package/dist/src/extensions/node/index.js +24 -0
- package/dist/src/extensions/node/index.js.map +1 -0
- package/dist/src/extensions/node/module.d.ts +17 -0
- package/dist/src/extensions/node/module.js +13 -0
- package/dist/src/extensions/node/module.js.map +1 -0
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/parser/parser.js +4 -0
- package/dist/src/parser/parser.js.map +1 -1
- package/dist/tests/codegen/llvm.test.js +1 -1
- package/dist/tests/codegen/llvm.test.js.map +1 -1
- package/dist/tests/e2e/compile.test.js +123 -3
- package/dist/tests/e2e/compile.test.js.map +1 -1
- package/dist/tests/extensions/registry.test.js +2 -2
- package/dist/tests/extensions/registry.test.js.map +1 -1
- package/dist/tests/parser/parser.test.js +9 -1
- package/dist/tests/parser/parser.test.js.map +1 -1
- package/package.json +1 -1
- package/runtime/{ext_node.c → ext_node/fs/read_file.c} +4 -3
- package/runtime/rt.h +32 -0
- package/runtime/xt_runtime.c +696 -6
- package/scripts/build-runtime.mjs +1 -1
- package/src/cli/main.ts +1 -1
- package/src/codegen/llvm.ts +458 -43
- package/src/extensions/node/fs/index.ts +13 -0
- package/src/extensions/node/fs/read-file.ts +13 -0
- package/src/extensions/node/index.ts +27 -0
- package/src/extensions/node/module.ts +24 -0
- package/src/index.ts +2 -1
- package/src/parser/parser.ts +4 -0
- package/dist/src/extensions/node.d.ts +0 -9
- package/dist/src/extensions/node.js +0 -20
- package/dist/src/extensions/node.js.map +0 -1
- package/src/extensions/node.ts +0 -23
|
@@ -9,7 +9,7 @@ import { spawnSync } from "node:child_process";
|
|
|
9
9
|
import { afterAll, beforeAll, describe, expect, it } from "vitest";
|
|
10
10
|
import { build } from "../../src/driver/compiler.js";
|
|
11
11
|
import { createDefaultRegistry } from "../../src/extensions/registry.js";
|
|
12
|
-
import { nodeExtension } from "../../src/extensions/node.js";
|
|
12
|
+
import { nodeExtension } from "../../src/extensions/node/index.js";
|
|
13
13
|
import { hasClang } from "../helpers.js";
|
|
14
14
|
const describeWithClang = hasClang() ? describe : describe.skip;
|
|
15
15
|
describeWithClang("end-to-end compilation", () => {
|
|
@@ -23,6 +23,11 @@ describeWithClang("end-to-end compilation", () => {
|
|
|
23
23
|
rmSync(workdir, { recursive: true, force: true });
|
|
24
24
|
});
|
|
25
25
|
function runProgram(source, options = {}) {
|
|
26
|
+
const result = runProgramFull(source, options);
|
|
27
|
+
expect(result.status).toBe(0);
|
|
28
|
+
return result.stdout.trim();
|
|
29
|
+
}
|
|
30
|
+
function runProgramFull(source, options = {}) {
|
|
26
31
|
const name = options.name ?? `program_${Math.random().toString(36).slice(2)}`;
|
|
27
32
|
const entry = join(workdir, `${name}.ts`);
|
|
28
33
|
writeFileSync(entry, source);
|
|
@@ -35,8 +40,7 @@ describeWithClang("end-to-end compilation", () => {
|
|
|
35
40
|
});
|
|
36
41
|
expect(result.diagnostics.filter((d) => d.category === "error")).toEqual([]);
|
|
37
42
|
const executed = spawnSync(result.outputPath, [], { encoding: "utf8" });
|
|
38
|
-
|
|
39
|
-
return executed.stdout.trim();
|
|
43
|
+
return { stdout: executed.stdout, stderr: executed.stderr, status: executed.status };
|
|
40
44
|
}
|
|
41
45
|
it("evaluates arithmetic and prints results", () => {
|
|
42
46
|
expect(runProgram('console.log("sum", 2 + 3 * 4);')).toBe("sum 14");
|
|
@@ -89,5 +93,121 @@ describeWithClang("end-to-end compilation", () => {
|
|
|
89
93
|
const source = `console.log(readFileSync(${JSON.stringify(dataPath)}));`;
|
|
90
94
|
expect(runProgram(source, { extensions: true })).toBe("from a file");
|
|
91
95
|
});
|
|
96
|
+
it("supports switch statements with fall-through", () => {
|
|
97
|
+
const source = `
|
|
98
|
+
function size(n: number): string {
|
|
99
|
+
switch (n) {
|
|
100
|
+
case 0:
|
|
101
|
+
return "none";
|
|
102
|
+
case 1:
|
|
103
|
+
case 2:
|
|
104
|
+
return "few";
|
|
105
|
+
default:
|
|
106
|
+
return "many";
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
console.log(size(0), size(1), size(2), size(7));
|
|
110
|
+
`;
|
|
111
|
+
expect(runProgram(source)).toBe("none few few many");
|
|
112
|
+
});
|
|
113
|
+
it("provides common array and string methods", () => {
|
|
114
|
+
const source = `
|
|
115
|
+
const xs = [3, 1, 2];
|
|
116
|
+
xs.push(4);
|
|
117
|
+
const doubled = xs.map((x) => x * 2).filter((x) => x > 4);
|
|
118
|
+
const total = xs.reduce((a, x) => a + x, 0);
|
|
119
|
+
console.log(xs.join("-"), doubled.join(","), total, xs.includes(2), xs.indexOf(1));
|
|
120
|
+
const s = " Hello World ";
|
|
121
|
+
console.log(s.trim().toUpperCase(), s.trim().slice(0, 5), "a,b,c".split(",").join("|"));
|
|
122
|
+
`;
|
|
123
|
+
expect(runProgram(source)).toBe("3-1-2-4 6,8 10 true 1\nHELLO WORLD Hello a|b|c");
|
|
124
|
+
});
|
|
125
|
+
it("supports Math, global functions and console levels", () => {
|
|
126
|
+
const source = `
|
|
127
|
+
console.log(Math.max(1, 9, 4), Math.abs(-3), Math.floor(2.9), Math.pow(2, 8), Math.PI > 3.14);
|
|
128
|
+
console.log(parseInt("42px"), parseFloat("2.5x"), isNaN(NaN), isFinite(1), Number("7"), String(9), Boolean(0));
|
|
129
|
+
console.warn("warned");
|
|
130
|
+
console.error("failed");
|
|
131
|
+
`;
|
|
132
|
+
const result = runProgramFull(source);
|
|
133
|
+
expect(result.status).toBe(0);
|
|
134
|
+
expect(result.stdout.trim()).toBe("9 3 2 256 true\n42 2.5 true true 7 9 false");
|
|
135
|
+
expect(result.stderr.trim()).toBe("warned\nfailed");
|
|
136
|
+
});
|
|
137
|
+
it("supports default parameters, rest parameters and arguments", () => {
|
|
138
|
+
const source = `
|
|
139
|
+
function greet(name: string = "world", mark: string = "!"): string {
|
|
140
|
+
return "hi " + name + mark;
|
|
141
|
+
}
|
|
142
|
+
function total(...nums: number[]): number {
|
|
143
|
+
let sum = 0;
|
|
144
|
+
for (const n of nums) sum += n;
|
|
145
|
+
return sum;
|
|
146
|
+
}
|
|
147
|
+
function countArgs(): number {
|
|
148
|
+
return arguments.length;
|
|
149
|
+
}
|
|
150
|
+
console.log(greet(), greet("ada"), total(1, 2, 3), countArgs(1, 2, 3, 4));
|
|
151
|
+
`;
|
|
152
|
+
expect(runProgram(source)).toBe("hi world! hi ada! 6 4");
|
|
153
|
+
});
|
|
154
|
+
it("supports Object helpers, spread, in and delete", () => {
|
|
155
|
+
const source = `
|
|
156
|
+
const base = { a: 1, b: 2 };
|
|
157
|
+
const merged = Object.assign({}, base, { c: 3 });
|
|
158
|
+
const copy = { ...base, a: 9 };
|
|
159
|
+
console.log(Object.keys(base).join(","), Object.values(base).join(","));
|
|
160
|
+
console.log(Object.entries(base).map((e) => e[0] + "=" + e[1]).join(","));
|
|
161
|
+
console.log(merged.a, merged.b, merged.c, copy.a, "a" in base, "z" in base);
|
|
162
|
+
delete base.a;
|
|
163
|
+
console.log("a" in base, Object.keys(base).join(","));
|
|
164
|
+
`;
|
|
165
|
+
expect(runProgram(source)).toBe("a,b 1,2\na=1,b=2\n1 2 3 9 true false\nfalse b");
|
|
166
|
+
});
|
|
167
|
+
it("iterates object keys with for...in", () => {
|
|
168
|
+
const source = `
|
|
169
|
+
const obj = { x: 1, y: 2 };
|
|
170
|
+
let out = "";
|
|
171
|
+
for (const key in obj) out += key + "=" + obj[key] + ";";
|
|
172
|
+
console.log(out);
|
|
173
|
+
`;
|
|
174
|
+
expect(runProgram(source)).toBe("x=1;y=2;");
|
|
175
|
+
});
|
|
176
|
+
it("supports try/catch/finally including returns and loop breaks", () => {
|
|
177
|
+
const source = `
|
|
178
|
+
function safe(n: number): number {
|
|
179
|
+
try {
|
|
180
|
+
if (n < 0) throw "negative";
|
|
181
|
+
return n * 2;
|
|
182
|
+
} catch (err) {
|
|
183
|
+
return -1;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
function cleanup(): string {
|
|
187
|
+
let log = "";
|
|
188
|
+
try {
|
|
189
|
+
log += "try;";
|
|
190
|
+
throw "boom";
|
|
191
|
+
} catch (e) {
|
|
192
|
+
log += "catch:" + e + ";";
|
|
193
|
+
} finally {
|
|
194
|
+
log += "finally";
|
|
195
|
+
}
|
|
196
|
+
return log;
|
|
197
|
+
}
|
|
198
|
+
console.log(safe(5), safe(-2), cleanup());
|
|
199
|
+
`;
|
|
200
|
+
expect(runProgram(source)).toBe("10 -1 try;catch:boom;finally");
|
|
201
|
+
});
|
|
202
|
+
it("supports optional chaining", () => {
|
|
203
|
+
const source = `
|
|
204
|
+
const obj = { a: { b: 5 }, m: (x: number) => x + 1 };
|
|
205
|
+
const empty = null;
|
|
206
|
+
console.log(obj?.a?.b, empty?.a?.b, obj?.m?.(10), empty?.m?.(10));
|
|
207
|
+
const arr = [1, 2, 3];
|
|
208
|
+
console.log(arr?.length, arr?.map((x) => x * 2).join(","), empty?.length);
|
|
209
|
+
`;
|
|
210
|
+
expect(runProgram(source)).toBe("5 undefined 11 undefined\n3 2,4,6 undefined");
|
|
211
|
+
});
|
|
92
212
|
});
|
|
93
213
|
//# sourceMappingURL=compile.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.test.js","sourceRoot":"","sources":["../../../tests/e2e/compile.test.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"compile.test.js","sourceRoot":"","sources":["../../../tests/e2e/compile.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
2
|
import { ExtensionRegistry, createDefaultRegistry, coreExtension } from "../../src/extensions/registry.js";
|
|
3
|
-
import { nodeExtension } from "../../src/extensions/node.js";
|
|
3
|
+
import { nodeExtension } from "../../src/extensions/node/index.js";
|
|
4
4
|
const demoExtension = {
|
|
5
5
|
name: "demo",
|
|
6
6
|
builtins: () => ({ demo: { symbol: "xt_demo" }, ping: { symbol: "xt_ping", returnVoid: true } }),
|
|
@@ -41,7 +41,7 @@ describe("ExtensionRegistry", () => {
|
|
|
41
41
|
it("node extension points at the ext C source", () => {
|
|
42
42
|
const sources = nodeExtension.runtimeSources?.() ?? [];
|
|
43
43
|
expect(sources).toHaveLength(1);
|
|
44
|
-
expect(sources[0]).toMatch(/ext_node\.c$/);
|
|
44
|
+
expect(sources[0]).toMatch(/ext_node[\\/]fs[\\/]read_file\.c$/);
|
|
45
45
|
});
|
|
46
46
|
});
|
|
47
47
|
//# sourceMappingURL=registry.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../../../tests/extensions/registry.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,aAAa,EAAkB,MAAM,kCAAkC,CAAC;AAC3H,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../../../tests/extensions/registry.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
2
|
import { parse } from "../helpers.js";
|
|
3
|
-
import { SyntaxKind } from "../../src/ast/nodes.js";
|
|
3
|
+
import { SyntaxKind, ModifierKind } from "../../src/ast/nodes.js";
|
|
4
4
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
5
5
|
function first(text) {
|
|
6
6
|
const { file, diagnostics } = parse(text);
|
|
@@ -133,5 +133,13 @@ describe("parser", () => {
|
|
|
133
133
|
const { diagnostics } = parse("const f = (x: unknown) => (x as number) + 1;");
|
|
134
134
|
expect(diagnostics.filter((d) => d.category === "error")).toHaveLength(0);
|
|
135
135
|
});
|
|
136
|
+
it("parses exported variable declarations", () => {
|
|
137
|
+
expect(kindsOf("export const a = 1;")).toEqual([SyntaxKind.VariableStatement]);
|
|
138
|
+
expect(kindsOf("export let b = 2;")).toEqual([SyntaxKind.VariableStatement]);
|
|
139
|
+
expect(kindsOf("export var c = 3;")).toEqual([SyntaxKind.VariableStatement]);
|
|
140
|
+
const statement = first("export const a = 1;");
|
|
141
|
+
expect(statement.modifiers).toHaveLength(1);
|
|
142
|
+
expect(statement.modifiers[0].modifierKind).toBe(ModifierKind.Export);
|
|
143
|
+
});
|
|
136
144
|
});
|
|
137
145
|
//# sourceMappingURL=parser.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.test.js","sourceRoot":"","sources":["../../../tests/parser/parser.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,UAAU,EAAa,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"parser.test.js","sourceRoot":"","sources":["../../../tests/parser/parser.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Node.js
|
|
2
|
+
* Node.js `fs` module for xbintsc.
|
|
3
3
|
*
|
|
4
|
-
* Compiled and linked only when the `node` extension is registered.
|
|
5
|
-
*
|
|
4
|
+
* Compiled and linked only when the `node` extension is registered. Following
|
|
5
|
+
* the runtime calling convention, every builtin is:
|
|
6
|
+
* xt_value fn(int32_t argc, xt_value *argv)
|
|
6
7
|
*/
|
|
7
8
|
|
|
8
9
|
#include "rt.h"
|
package/runtime/rt.h
CHANGED
|
@@ -141,6 +141,31 @@ xt_value xt_object_get_cstr(xt_value obj, const char *key);
|
|
|
141
141
|
xt_value xt_object_set(xt_value obj, xt_value key, xt_value value);
|
|
142
142
|
xt_value xt_object_has(xt_value obj, xt_value key);
|
|
143
143
|
xt_value xt_object_keys(xt_value obj);
|
|
144
|
+
xt_value xt_object_values(xt_value obj);
|
|
145
|
+
xt_value xt_object_entries(xt_value obj);
|
|
146
|
+
xt_value xt_object_assign(int32_t argc, xt_value *argv);
|
|
147
|
+
xt_value xt_object_spread(xt_value target, xt_value source);
|
|
148
|
+
|
|
149
|
+
/* -- standard library dispatch -------------------------------------------- */
|
|
150
|
+
/** Call `target[name](...)`, falling back to built-in Array/String methods. */
|
|
151
|
+
xt_value xt_call_method(xt_value target, xt_value name, int32_t argc, xt_value *argv);
|
|
152
|
+
/** Implements `Math.<name>(...)`; the name is interned by the compiler. */
|
|
153
|
+
xt_value xt_math_call(xt_value name, int32_t argc, xt_value *argv);
|
|
154
|
+
|
|
155
|
+
/* -- global functions ------------------------------------------------------ */
|
|
156
|
+
xt_value xt_parse_int(int32_t argc, xt_value *argv);
|
|
157
|
+
xt_value xt_parse_float(int32_t argc, xt_value *argv);
|
|
158
|
+
xt_value xt_is_nan(int32_t argc, xt_value *argv);
|
|
159
|
+
xt_value xt_is_finite(int32_t argc, xt_value *argv);
|
|
160
|
+
xt_value xt_number_ctor(int32_t argc, xt_value *argv);
|
|
161
|
+
xt_value xt_string_ctor(int32_t argc, xt_value *argv);
|
|
162
|
+
xt_value xt_boolean_ctor(int32_t argc, xt_value *argv);
|
|
163
|
+
/** `key in obj` (the key is the left operand). */
|
|
164
|
+
xt_value xt_in(xt_value key, xt_value obj);
|
|
165
|
+
/** `delete obj[key]`; removes object properties, clears array elements. */
|
|
166
|
+
xt_value xt_delete(xt_value obj, xt_value key);
|
|
167
|
+
/** Collect `argv[start..argc)` into a new array (rest parameters). */
|
|
168
|
+
xt_value xt_rest_args(int32_t argc, xt_value *argv, int32_t start);
|
|
144
169
|
|
|
145
170
|
/* -- arrays --------------------------------------------------------------- */
|
|
146
171
|
xt_value xt_array_new(int32_t count, xt_value *items);
|
|
@@ -162,7 +187,14 @@ xt_value xt_is_nullish(xt_value value);
|
|
|
162
187
|
|
|
163
188
|
/* -- exceptions / output -------------------------------------------------- */
|
|
164
189
|
void xt_throw(xt_value v);
|
|
190
|
+
/** Allocate and push a `try` frame; the returned pointer is the `setjmp` buffer. */
|
|
191
|
+
void *xt_try_enter(void);
|
|
192
|
+
xt_value xt_try_exception(void *frame);
|
|
193
|
+
void xt_try_leave(void *frame);
|
|
165
194
|
void xt_console_log(int32_t argc, xt_value *argv);
|
|
195
|
+
void xt_console_info(int32_t argc, xt_value *argv);
|
|
196
|
+
void xt_console_warn(int32_t argc, xt_value *argv);
|
|
197
|
+
void xt_console_error(int32_t argc, xt_value *argv);
|
|
166
198
|
void xt_print(xt_value v);
|
|
167
199
|
void xt_println(xt_value v);
|
|
168
200
|
|