xbintsc 0.2.4 → 0.2.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/dist/src/ast/declarations.d.ts +20 -1
- package/dist/src/ast/expressions.d.ts +6 -2
- package/dist/src/ast/kinds.d.ts +6 -1
- package/dist/src/ast/kinds.js +5 -0
- package/dist/src/ast/kinds.js.map +1 -1
- package/dist/src/ast/statements.d.ts +2 -1
- package/dist/src/binder/binder.js +73 -9
- package/dist/src/binder/binder.js.map +1 -1
- package/dist/src/cli/main.js +2 -4
- package/dist/src/cli/main.js.map +1 -1
- package/dist/src/codegen/generator/calls.d.ts +1 -1
- package/dist/src/codegen/generator/calls.js +57 -14
- package/dist/src/codegen/generator/calls.js.map +1 -1
- package/dist/src/codegen/generator/context.d.ts +1 -1
- package/dist/src/codegen/generator/expressions.js +39 -3
- package/dist/src/codegen/generator/expressions.js.map +1 -1
- package/dist/src/codegen/generator/module.js +73 -7
- package/dist/src/codegen/generator/module.js.map +1 -1
- package/dist/src/codegen/generator/state.js +16 -0
- package/dist/src/codegen/generator/state.js.map +1 -1
- package/dist/src/codegen/generator/statements.d.ts +4 -1
- package/dist/src/codegen/generator/statements.js +141 -10
- package/dist/src/codegen/generator/statements.js.map +1 -1
- package/dist/src/codegen/generator/tables.d.ts +3 -0
- package/dist/src/codegen/generator/tables.js +13 -0
- package/dist/src/codegen/generator/tables.js.map +1 -1
- package/dist/src/codegen/values.d.ts +18 -11
- package/dist/src/codegen/values.js +92 -15
- package/dist/src/codegen/values.js.map +1 -1
- package/dist/src/diagnostics/source.d.ts +1 -1
- package/dist/src/diagnostics/source.js +12 -7
- package/dist/src/diagnostics/source.js.map +1 -1
- package/dist/src/driver/compiler.d.ts +5 -0
- package/dist/src/driver/compiler.js +42 -2
- package/dist/src/driver/compiler.js.map +1 -1
- package/dist/src/driver/modules.js +29 -4
- package/dist/src/driver/modules.js.map +1 -1
- package/dist/src/extensions/node/child_process/index.d.ts +7 -0
- package/dist/src/extensions/node/child_process/index.js +19 -0
- package/dist/src/extensions/node/child_process/index.js.map +1 -0
- package/dist/src/extensions/node/crypto/index.d.ts +6 -0
- package/dist/src/extensions/node/crypto/index.js +18 -0
- package/dist/src/extensions/node/crypto/index.js.map +1 -0
- package/dist/src/extensions/node/index.js +6 -0
- package/dist/src/extensions/node/index.js.map +1 -1
- package/dist/src/extensions/node/module.d.ts +9 -1
- package/dist/src/extensions/node/module.js +14 -1
- package/dist/src/extensions/node/module.js.map +1 -1
- package/dist/src/extensions/node/url/index.d.ts +7 -0
- package/dist/src/extensions/node/url/index.js +21 -0
- package/dist/src/extensions/node/url/index.js.map +1 -0
- package/dist/src/lexer/scanner.js +4 -5
- package/dist/src/lexer/scanner.js.map +1 -1
- package/dist/src/lexer/token.d.ts +10 -0
- package/dist/src/lexer/token.js +69 -0
- package/dist/src/lexer/token.js.map +1 -1
- package/dist/src/parser/context.js +4 -16
- package/dist/src/parser/context.js.map +1 -1
- package/dist/src/parser/declarations.d.ts +2 -0
- package/dist/src/parser/declarations.js +146 -33
- package/dist/src/parser/declarations.js.map +1 -1
- package/dist/src/parser/expressions.js +20 -3
- package/dist/src/parser/expressions.js.map +1 -1
- package/dist/src/parser/helpers.js +2 -0
- package/dist/src/parser/helpers.js.map +1 -1
- package/dist/src/parser/modules.js +7 -2
- package/dist/src/parser/modules.js.map +1 -1
- package/dist/src/parser/statements.js +28 -3
- package/dist/src/parser/statements.js.map +1 -1
- package/dist/src/parser/types.js +5 -0
- package/dist/src/parser/types.js.map +1 -1
- package/dist/tests/codegen/llvm.test.js +16 -0
- package/dist/tests/codegen/llvm.test.js.map +1 -1
- package/dist/tests/driver/compiler.test.js +13 -1
- package/dist/tests/driver/compiler.test.js.map +1 -1
- package/dist/tests/e2e/compile.test.js +57 -0
- package/dist/tests/e2e/compile.test.js.map +1 -1
- package/dist/tests/parser/parser.test.js +53 -0
- package/dist/tests/parser/parser.test.js.map +1 -1
- package/package.json +1 -1
- package/runtime/ext_node/child_process/child_process.c +213 -0
- package/runtime/ext_node/crypto/crypto.c +177 -0
- package/runtime/ext_node/process/process.c +37 -3
- package/runtime/ext_node/url/url.c +85 -0
- package/runtime/rt.h +20 -0
- package/runtime/rt_internal.h +11 -0
- package/runtime/xt_builtins.c +23 -0
- package/runtime/xt_containers.c +136 -10
- package/runtime/xt_io.c +53 -0
- package/runtime/xt_regex.h +16 -6
- package/runtime/xt_stdlib.c +11 -2
- package/runtime/xt_stdlib2.c +250 -13
- package/runtime/xt_values.c +2 -1
- package/src/ast/declarations.ts +26 -1
- package/src/ast/expressions.ts +7 -2
- package/src/ast/kinds.ts +5 -0
- package/src/ast/statements.ts +2 -1
- package/src/binder/binder.ts +75 -9
- package/src/cli/main.ts +2 -3
- package/src/codegen/generator/calls.ts +59 -16
- package/src/codegen/generator/context.ts +1 -1
- package/src/codegen/generator/expressions.ts +39 -3
- package/src/codegen/generator/module.ts +79 -7
- package/src/codegen/generator/state.ts +16 -0
- package/src/codegen/generator/statements.ts +139 -11
- package/src/codegen/generator/tables.ts +14 -0
- package/src/codegen/values.ts +85 -16
- package/src/diagnostics/source.ts +12 -7
- package/src/driver/compiler.ts +44 -2
- package/src/driver/modules.ts +28 -3
- package/src/extensions/node/child_process/index.ts +24 -0
- package/src/extensions/node/crypto/index.ts +23 -0
- package/src/extensions/node/index.ts +6 -0
- package/src/extensions/node/module.ts +13 -1
- package/src/extensions/node/url/index.ts +26 -0
- package/src/lexer/scanner.ts +4 -4
- package/src/lexer/token.ts +73 -0
- package/src/parser/context.ts +4 -15
- package/src/parser/declarations.ts +140 -29
- package/src/parser/expressions.ts +20 -4
- package/src/parser/helpers.ts +2 -0
- package/src/parser/modules.ts +7 -2
- package/src/parser/statements.ts +27 -3
- package/src/parser/types.ts +5 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.test.js","sourceRoot":"","sources":["../../../tests/parser/parser.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parser.test.js","sourceRoot":"","sources":["../../../tests/parser/parser.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Node.js `child_process` module for xbintsc.
|
|
3
|
+
*
|
|
4
|
+
* Implements the synchronous `spawnSync(command, args, options)` surface the
|
|
5
|
+
* compiler uses to shell out to clang:
|
|
6
|
+
*
|
|
7
|
+
* const result = spawnSync("clang", ["--version"], { cwd, encoding: "utf8" });
|
|
8
|
+
* result.status / result.stdout / result.stderr
|
|
9
|
+
*
|
|
10
|
+
* `options.cwd` is honoured; stdout/stderr are always captured as UTF-8
|
|
11
|
+
* strings. On Windows the process is run with `_spawnvp` and redirected
|
|
12
|
+
* through temporary files (which also avoids pipe-buffer deadlocks).
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
#include "rt.h"
|
|
16
|
+
|
|
17
|
+
#include <stdio.h>
|
|
18
|
+
#include <stdlib.h>
|
|
19
|
+
#include <string.h>
|
|
20
|
+
|
|
21
|
+
#if defined(_WIN32)
|
|
22
|
+
#include <direct.h>
|
|
23
|
+
#include <fcntl.h>
|
|
24
|
+
#include <io.h>
|
|
25
|
+
#include <process.h>
|
|
26
|
+
#else
|
|
27
|
+
#include <poll.h>
|
|
28
|
+
#include <sys/wait.h>
|
|
29
|
+
#include <unistd.h>
|
|
30
|
+
#endif
|
|
31
|
+
|
|
32
|
+
static char *build_argv(const char *command, xt_value args, int *out_count) {
|
|
33
|
+
int32_t count = XT_IS_ARRAY(args) ? xt_array_size(args) : 0;
|
|
34
|
+
xt_value *items = XT_IS_ARRAY(args) ? xt_array_items(args) : NULL;
|
|
35
|
+
char **argv = (char **)malloc(sizeof(char *) * (size_t)(count + 2));
|
|
36
|
+
if (!argv) {
|
|
37
|
+
*out_count = 0;
|
|
38
|
+
return NULL;
|
|
39
|
+
}
|
|
40
|
+
argv[0] = (char *)command;
|
|
41
|
+
for (int32_t i = 0; i < count; i++) argv[i + 1] = (char *)xt_string_data(xt_to_string(items[i]));
|
|
42
|
+
argv[count + 1] = NULL;
|
|
43
|
+
*out_count = count + 1;
|
|
44
|
+
return (char *)argv;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
static const char *option_cwd(xt_value options) {
|
|
48
|
+
if (!XT_IS_OBJECT(options)) return NULL;
|
|
49
|
+
xt_value cwd = xt_object_get(options, xt_string_from_cstr("cwd"));
|
|
50
|
+
if (!cwd || !XT_IS_STRING(cwd)) return NULL;
|
|
51
|
+
return xt_string_data(cwd);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
static xt_value make_result(double status, const char *out, const char *err) {
|
|
55
|
+
xt_value result = xt_object_new();
|
|
56
|
+
xt_set(result, xt_string_from_cstr("status"), xt_number(status));
|
|
57
|
+
xt_set(result, xt_string_from_cstr("stdout"), xt_string_from_cstr(out ? out : ""));
|
|
58
|
+
xt_set(result, xt_string_from_cstr("stderr"), xt_string_from_cstr(err ? err : ""));
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
#if defined(_WIN32)
|
|
63
|
+
|
|
64
|
+
static char *read_temp(FILE *file) {
|
|
65
|
+
fflush(file);
|
|
66
|
+
if (_fseeki64(file, 0, SEEK_END) != 0) return NULL;
|
|
67
|
+
long long size = _ftelli64(file);
|
|
68
|
+
if (size < 0) return NULL;
|
|
69
|
+
_fseeki64(file, 0, SEEK_SET);
|
|
70
|
+
char *buffer = (char *)malloc((size_t)size + 1);
|
|
71
|
+
if (!buffer) return NULL;
|
|
72
|
+
size_t read = fread(buffer, 1, (size_t)size, file);
|
|
73
|
+
buffer[read] = 0;
|
|
74
|
+
return buffer;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
xt_value xt_child_process_spawn_sync(int32_t argc, xt_value *argv) {
|
|
78
|
+
const char *command = argc > 0 ? xt_string_data(xt_to_string(argv[0])) : NULL;
|
|
79
|
+
if (!command) command = "";
|
|
80
|
+
xt_value args = argc > 1 ? argv[1] : XT_UNDEFINED;
|
|
81
|
+
const char *cwd = argc > 2 ? option_cwd(argv[2]) : NULL;
|
|
82
|
+
|
|
83
|
+
int count = 0;
|
|
84
|
+
char **child_argv = (char **)build_argv(command, args, &count);
|
|
85
|
+
if (!child_argv) return make_result(-1, "", "out of memory");
|
|
86
|
+
|
|
87
|
+
FILE *out_file = tmpfile();
|
|
88
|
+
FILE *err_file = tmpfile();
|
|
89
|
+
if (!out_file || !err_file) {
|
|
90
|
+
free(child_argv);
|
|
91
|
+
if (out_file) fclose(out_file);
|
|
92
|
+
if (err_file) fclose(err_file);
|
|
93
|
+
return make_result(-1, "", "could not create temporary files");
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
int saved_out = _dup(_fileno(stdout));
|
|
97
|
+
int saved_err = _dup(_fileno(stderr));
|
|
98
|
+
_dup2(_fileno(out_file), _fileno(stdout));
|
|
99
|
+
_dup2(_fileno(err_file), _fileno(stderr));
|
|
100
|
+
|
|
101
|
+
char previous[4096];
|
|
102
|
+
int had_cwd = cwd && _getcwd(previous, sizeof(previous)) != NULL;
|
|
103
|
+
if (cwd) _chdir(cwd);
|
|
104
|
+
intptr_t rc = _spawnvp(_P_WAIT, command, (const char *const *)child_argv);
|
|
105
|
+
if (had_cwd) _chdir(previous);
|
|
106
|
+
|
|
107
|
+
fflush(stdout);
|
|
108
|
+
fflush(stderr);
|
|
109
|
+
_dup2(saved_out, _fileno(stdout));
|
|
110
|
+
_dup2(saved_err, _fileno(stderr));
|
|
111
|
+
_close(saved_out);
|
|
112
|
+
_close(saved_err);
|
|
113
|
+
|
|
114
|
+
char *out = read_temp(out_file);
|
|
115
|
+
char *err = read_temp(err_file);
|
|
116
|
+
fclose(out_file);
|
|
117
|
+
fclose(err_file);
|
|
118
|
+
free(child_argv);
|
|
119
|
+
|
|
120
|
+
xt_value result = make_result(rc < 0 ? -1 : (double)rc, out, err);
|
|
121
|
+
free(out);
|
|
122
|
+
free(err);
|
|
123
|
+
return result;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
#else
|
|
127
|
+
|
|
128
|
+
static void append_chunk(char **buffer, size_t *length, size_t *capacity, const char *chunk, size_t count) {
|
|
129
|
+
if (*length + count + 1 > *capacity) {
|
|
130
|
+
size_t next = *capacity ? *capacity * 2 : 4096;
|
|
131
|
+
while (next < *length + count + 1) next *= 2;
|
|
132
|
+
char *grown = (char *)realloc(*buffer, next);
|
|
133
|
+
if (!grown) return;
|
|
134
|
+
*buffer = grown;
|
|
135
|
+
*capacity = next;
|
|
136
|
+
}
|
|
137
|
+
memcpy(*buffer + *length, chunk, count);
|
|
138
|
+
*length += count;
|
|
139
|
+
(*buffer)[*length] = 0;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
xt_value xt_child_process_spawn_sync(int32_t argc, xt_value *argv) {
|
|
143
|
+
const char *command = argc > 0 ? xt_string_data(xt_to_string(argv[0])) : NULL;
|
|
144
|
+
if (!command) command = "";
|
|
145
|
+
xt_value args = argc > 1 ? argv[1] : XT_UNDEFINED;
|
|
146
|
+
const char *cwd = argc > 2 ? option_cwd(argv[2]) : NULL;
|
|
147
|
+
|
|
148
|
+
int count = 0;
|
|
149
|
+
char **child_argv = (char **)build_argv(command, args, &count);
|
|
150
|
+
if (!child_argv) return make_result(-1, "", "out of memory");
|
|
151
|
+
|
|
152
|
+
int out_pipe[2];
|
|
153
|
+
int err_pipe[2];
|
|
154
|
+
if (pipe(out_pipe) != 0 || pipe(err_pipe) != 0) {
|
|
155
|
+
free(child_argv);
|
|
156
|
+
return make_result(-1, "", "could not create pipes");
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
pid_t pid = fork();
|
|
160
|
+
if (pid == 0) {
|
|
161
|
+
dup2(out_pipe[1], STDOUT_FILENO);
|
|
162
|
+
dup2(err_pipe[1], STDERR_FILENO);
|
|
163
|
+
close(out_pipe[0]);
|
|
164
|
+
close(out_pipe[1]);
|
|
165
|
+
close(err_pipe[0]);
|
|
166
|
+
close(err_pipe[1]);
|
|
167
|
+
if (cwd) chdir(cwd);
|
|
168
|
+
execvp(command, child_argv);
|
|
169
|
+
_exit(127);
|
|
170
|
+
}
|
|
171
|
+
close(out_pipe[1]);
|
|
172
|
+
close(err_pipe[1]);
|
|
173
|
+
|
|
174
|
+
int fds[2] = {out_pipe[0], err_pipe[0]};
|
|
175
|
+
char *buffers[2] = {NULL, NULL};
|
|
176
|
+
size_t lengths[2] = {0, 0};
|
|
177
|
+
size_t capacities[2] = {0, 0};
|
|
178
|
+
int live = 2;
|
|
179
|
+
while (live > 0) {
|
|
180
|
+
struct pollfd poll_fds[2];
|
|
181
|
+
poll_fds[0].fd = fds[0];
|
|
182
|
+
poll_fds[0].events = POLLIN;
|
|
183
|
+
poll_fds[0].revents = 0;
|
|
184
|
+
poll_fds[1].fd = fds[1];
|
|
185
|
+
poll_fds[1].events = POLLIN;
|
|
186
|
+
poll_fds[1].revents = 0;
|
|
187
|
+
if (poll(poll_fds, 2, -1) < 0) break;
|
|
188
|
+
for (int i = 0; i < 2; i++) {
|
|
189
|
+
if (fds[i] < 0 || !(poll_fds[i].revents & (POLLIN | POLLHUP | POLLERR))) continue;
|
|
190
|
+
char chunk[4096];
|
|
191
|
+
ssize_t got = read(fds[i], chunk, sizeof(chunk));
|
|
192
|
+
if (got > 0) {
|
|
193
|
+
append_chunk(&buffers[i], &lengths[i], &capacities[i], chunk, (size_t)got);
|
|
194
|
+
} else if (got == 0) {
|
|
195
|
+
close(fds[i]);
|
|
196
|
+
fds[i] = -1;
|
|
197
|
+
live--;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
int status = 0;
|
|
203
|
+
waitpid(pid, &status, 0);
|
|
204
|
+
double exit_code = WIFEXITED(status) ? (double)WEXITSTATUS(status) : -1.0;
|
|
205
|
+
|
|
206
|
+
xt_value result = make_result(exit_code, buffers[0], buffers[1]);
|
|
207
|
+
free(buffers[0]);
|
|
208
|
+
free(buffers[1]);
|
|
209
|
+
free(child_argv);
|
|
210
|
+
return result;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
#endif
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Node.js `crypto` module for xbintsc (self-contained SHA-256).
|
|
3
|
+
*
|
|
4
|
+
* Implements the common hashing surface:
|
|
5
|
+
* const hash = createHash("sha256").update(data).digest("hex");
|
|
6
|
+
*
|
|
7
|
+
* A hash object is a plain object exposing `update` / `digest` as function
|
|
8
|
+
* properties. Because the generic method dispatcher calls those with the hash
|
|
9
|
+
* object as `this`, `update` can accumulate input and `digest` can finalize it
|
|
10
|
+
* without any special object kind in the core runtime.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
#include "rt.h"
|
|
14
|
+
|
|
15
|
+
#include <stdint.h>
|
|
16
|
+
#include <stdio.h>
|
|
17
|
+
#include <string.h>
|
|
18
|
+
|
|
19
|
+
/* -- SHA-256 -------------------------------------------------------------- */
|
|
20
|
+
|
|
21
|
+
typedef struct {
|
|
22
|
+
uint32_t state[8];
|
|
23
|
+
uint64_t bitlen;
|
|
24
|
+
uint8_t buffer[64];
|
|
25
|
+
size_t buffer_length;
|
|
26
|
+
} sha256_ctx;
|
|
27
|
+
|
|
28
|
+
static const uint32_t sha256_k[64] = {
|
|
29
|
+
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
|
|
30
|
+
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
|
|
31
|
+
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
|
|
32
|
+
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
|
|
33
|
+
0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
|
|
34
|
+
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
|
|
35
|
+
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
|
|
36
|
+
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
#define SHA256_ROTR(x, n) (((x) >> (n)) | ((x) << (32 - (n))))
|
|
40
|
+
|
|
41
|
+
static void sha256_init(sha256_ctx *ctx) {
|
|
42
|
+
ctx->state[0] = 0x6a09e667;
|
|
43
|
+
ctx->state[1] = 0xbb67ae85;
|
|
44
|
+
ctx->state[2] = 0x3c6ef372;
|
|
45
|
+
ctx->state[3] = 0xa54ff53a;
|
|
46
|
+
ctx->state[4] = 0x510e527f;
|
|
47
|
+
ctx->state[5] = 0x9b05688c;
|
|
48
|
+
ctx->state[6] = 0x1f83d9ab;
|
|
49
|
+
ctx->state[7] = 0x5be0cd19;
|
|
50
|
+
ctx->bitlen = 0;
|
|
51
|
+
ctx->buffer_length = 0;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
static void sha256_compress(sha256_ctx *ctx, const uint8_t *block) {
|
|
55
|
+
uint32_t w[64];
|
|
56
|
+
for (int i = 0; i < 16; i++) {
|
|
57
|
+
w[i] = ((uint32_t)block[i * 4] << 24) | ((uint32_t)block[i * 4 + 1] << 16) |
|
|
58
|
+
((uint32_t)block[i * 4 + 2] << 8) | ((uint32_t)block[i * 4 + 3]);
|
|
59
|
+
}
|
|
60
|
+
for (int i = 16; i < 64; i++) {
|
|
61
|
+
uint32_t s0 = SHA256_ROTR(w[i - 15], 7) ^ SHA256_ROTR(w[i - 15], 18) ^ (w[i - 15] >> 3);
|
|
62
|
+
uint32_t s1 = SHA256_ROTR(w[i - 2], 17) ^ SHA256_ROTR(w[i - 2], 19) ^ (w[i - 2] >> 10);
|
|
63
|
+
w[i] = w[i - 16] + s0 + w[i - 7] + s1;
|
|
64
|
+
}
|
|
65
|
+
uint32_t a = ctx->state[0], b = ctx->state[1], c = ctx->state[2], d = ctx->state[3];
|
|
66
|
+
uint32_t e = ctx->state[4], f = ctx->state[5], g = ctx->state[6], h = ctx->state[7];
|
|
67
|
+
for (int i = 0; i < 64; i++) {
|
|
68
|
+
uint32_t s1 = SHA256_ROTR(e, 6) ^ SHA256_ROTR(e, 11) ^ SHA256_ROTR(e, 25);
|
|
69
|
+
uint32_t ch = (e & f) ^ ((~e) & g);
|
|
70
|
+
uint32_t temp1 = h + s1 + ch + sha256_k[i] + w[i];
|
|
71
|
+
uint32_t s0 = SHA256_ROTR(a, 2) ^ SHA256_ROTR(a, 13) ^ SHA256_ROTR(a, 22);
|
|
72
|
+
uint32_t maj = (a & b) ^ (a & c) ^ (b & c);
|
|
73
|
+
uint32_t temp2 = s0 + maj;
|
|
74
|
+
h = g;
|
|
75
|
+
g = f;
|
|
76
|
+
f = e;
|
|
77
|
+
e = d + temp1;
|
|
78
|
+
d = c;
|
|
79
|
+
c = b;
|
|
80
|
+
b = a;
|
|
81
|
+
a = temp1 + temp2;
|
|
82
|
+
}
|
|
83
|
+
ctx->state[0] += a;
|
|
84
|
+
ctx->state[1] += b;
|
|
85
|
+
ctx->state[2] += c;
|
|
86
|
+
ctx->state[3] += d;
|
|
87
|
+
ctx->state[4] += e;
|
|
88
|
+
ctx->state[5] += f;
|
|
89
|
+
ctx->state[6] += g;
|
|
90
|
+
ctx->state[7] += h;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
static void sha256_update(sha256_ctx *ctx, const uint8_t *data, size_t length) {
|
|
94
|
+
for (size_t i = 0; i < length; i++) {
|
|
95
|
+
ctx->buffer[ctx->buffer_length++] = data[i];
|
|
96
|
+
if (ctx->buffer_length == 64) {
|
|
97
|
+
sha256_compress(ctx, ctx->buffer);
|
|
98
|
+
ctx->bitlen += 512;
|
|
99
|
+
ctx->buffer_length = 0;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
static void sha256_final(sha256_ctx *ctx, uint8_t *out) {
|
|
105
|
+
size_t i = ctx->buffer_length;
|
|
106
|
+
ctx->buffer[i++] = 0x80;
|
|
107
|
+
if (i > 56) {
|
|
108
|
+
while (i < 64) ctx->buffer[i++] = 0;
|
|
109
|
+
sha256_compress(ctx, ctx->buffer);
|
|
110
|
+
i = 0;
|
|
111
|
+
}
|
|
112
|
+
while (i < 56) ctx->buffer[i++] = 0;
|
|
113
|
+
ctx->bitlen += (uint64_t)ctx->buffer_length * 8;
|
|
114
|
+
for (int j = 0; j < 8; j++) ctx->buffer[56 + j] = (uint8_t)(ctx->bitlen >> (56 - j * 8));
|
|
115
|
+
sha256_compress(ctx, ctx->buffer);
|
|
116
|
+
for (int j = 0; j < 8; j++) {
|
|
117
|
+
out[j * 4] = (uint8_t)(ctx->state[j] >> 24);
|
|
118
|
+
out[j * 4 + 1] = (uint8_t)(ctx->state[j] >> 16);
|
|
119
|
+
out[j * 4 + 2] = (uint8_t)(ctx->state[j] >> 8);
|
|
120
|
+
out[j * 4 + 3] = (uint8_t)(ctx->state[j]);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
static void sha256_hash(const uint8_t *data, size_t length, uint8_t *out) {
|
|
125
|
+
sha256_ctx ctx;
|
|
126
|
+
sha256_init(&ctx);
|
|
127
|
+
sha256_update(&ctx, data, length);
|
|
128
|
+
sha256_final(&ctx, out);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/* -- node:crypto surface -------------------------------------------------- */
|
|
132
|
+
|
|
133
|
+
static xt_value hash_data(xt_value hash) {
|
|
134
|
+
xt_value data = xt_object_get(hash, xt_string_from_cstr("_data"));
|
|
135
|
+
if (!data) return xt_string_from_cstr("");
|
|
136
|
+
return data;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
static xt_value xt_hash_update(xt_value thisValue, xt_value env, int32_t argc, xt_value *argv) {
|
|
140
|
+
(void)env;
|
|
141
|
+
if (XT_IS_OBJECT(thisValue) && argc > 0) {
|
|
142
|
+
xt_value combined = xt_add(hash_data(thisValue), xt_to_string(argv[0]));
|
|
143
|
+
xt_set(thisValue, xt_string_from_cstr("_data"), combined);
|
|
144
|
+
}
|
|
145
|
+
return thisValue;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
static xt_value xt_hash_digest(xt_value thisValue, xt_value env, int32_t argc, xt_value *argv) {
|
|
149
|
+
(void)env;
|
|
150
|
+
const char *text = xt_string_data(xt_to_string(hash_data(thisValue)));
|
|
151
|
+
if (!text) text = "";
|
|
152
|
+
uint8_t out[32];
|
|
153
|
+
sha256_hash((const uint8_t *)text, strlen(text), out);
|
|
154
|
+
const char *encoding = argc > 0 ? xt_string_data(xt_to_string(argv[0])) : "hex";
|
|
155
|
+
if (!encoding || strcmp(encoding, "hex") == 0) {
|
|
156
|
+
static const char digits[] = "0123456789abcdef";
|
|
157
|
+
char hex[65];
|
|
158
|
+
for (int i = 0; i < 32; i++) {
|
|
159
|
+
hex[i * 2] = digits[out[i] >> 4];
|
|
160
|
+
hex[i * 2 + 1] = digits[out[i] & 0xf];
|
|
161
|
+
}
|
|
162
|
+
hex[64] = 0;
|
|
163
|
+
return xt_string_from_cstr(hex);
|
|
164
|
+
}
|
|
165
|
+
return xt_string_from_cstr("");
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
xt_value xt_crypto_create_hash(int32_t argc, xt_value *argv) {
|
|
169
|
+
const char *algorithm = argc > 0 ? xt_string_data(xt_to_string(argv[0])) : "sha256";
|
|
170
|
+
if (!algorithm) algorithm = "sha256";
|
|
171
|
+
xt_value hash = xt_object_new();
|
|
172
|
+
xt_set(hash, xt_string_from_cstr("_algorithm"), xt_string_from_cstr(algorithm));
|
|
173
|
+
xt_set(hash, xt_string_from_cstr("_data"), xt_string_from_cstr(""));
|
|
174
|
+
xt_set(hash, xt_string_from_cstr("update"), xt_closure_new((void *)xt_hash_update, 0, NULL));
|
|
175
|
+
xt_set(hash, xt_string_from_cstr("digest"), xt_closure_new((void *)xt_hash_digest, 0, NULL));
|
|
176
|
+
return hash;
|
|
177
|
+
}
|
|
@@ -71,10 +71,14 @@ static xt_value xt_process_env(void) {
|
|
|
71
71
|
static xt_value xt_process_argv(void) {
|
|
72
72
|
int32_t count = xt_program_argc;
|
|
73
73
|
if (count <= 0 || !xt_program_argv) return xt_array_new(0, NULL);
|
|
74
|
-
|
|
74
|
+
/* Node semantics: `[execPath, scriptPath, ...args]`. A standalone binary is
|
|
75
|
+
both the executable and the script, so the executable path is repeated;
|
|
76
|
+
user arguments therefore start at index 2, matching `node script.js a b`. */
|
|
77
|
+
xt_value *items = (xt_value *)malloc(sizeof(xt_value) * (size_t)(count + 1));
|
|
75
78
|
if (!items) return xt_array_new(0, NULL);
|
|
76
|
-
|
|
77
|
-
|
|
79
|
+
items[0] = xt_string_from_cstr(xt_program_argv[0]);
|
|
80
|
+
for (int32_t i = 0; i < count; i++) items[i + 1] = xt_string_from_cstr(xt_program_argv[i]);
|
|
81
|
+
xt_value result = xt_array_new(count + 1, items);
|
|
78
82
|
free(items);
|
|
79
83
|
return result;
|
|
80
84
|
}
|
|
@@ -128,10 +132,40 @@ xt_value xt_process_call(xt_value name, int32_t argc, xt_value *argv) {
|
|
|
128
132
|
return xt_undefined();
|
|
129
133
|
}
|
|
130
134
|
|
|
135
|
+
static xt_value xt_stdout_write(xt_value thisValue, xt_value env, int32_t argc, xt_value *argv) {
|
|
136
|
+
(void)thisValue;
|
|
137
|
+
(void)env;
|
|
138
|
+
if (argc > 0) {
|
|
139
|
+
const char *text = xt_string_data(xt_to_string(argv[0]));
|
|
140
|
+
if (text) fputs(text, stdout);
|
|
141
|
+
fflush(stdout);
|
|
142
|
+
}
|
|
143
|
+
return xt_bool(1);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
static xt_value xt_stderr_write(xt_value thisValue, xt_value env, int32_t argc, xt_value *argv) {
|
|
147
|
+
(void)thisValue;
|
|
148
|
+
(void)env;
|
|
149
|
+
if (argc > 0) {
|
|
150
|
+
const char *text = xt_string_data(xt_to_string(argv[0]));
|
|
151
|
+
if (text) fputs(text, stderr);
|
|
152
|
+
fflush(stderr);
|
|
153
|
+
}
|
|
154
|
+
return xt_bool(1);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
static xt_value xt_process_stream(void *write_fn) {
|
|
158
|
+
xt_value stream = xt_object_new();
|
|
159
|
+
xt_set(stream, xt_string_from_cstr("write"), xt_closure_new(write_fn, 0, NULL));
|
|
160
|
+
return stream;
|
|
161
|
+
}
|
|
162
|
+
|
|
131
163
|
xt_value xt_process_get(xt_value name) {
|
|
132
164
|
const char *key = xt_string_data(name);
|
|
133
165
|
if (!key) return xt_undefined();
|
|
134
166
|
|
|
167
|
+
if (strcmp(key, "stdout") == 0) return xt_process_stream((void *)xt_stdout_write);
|
|
168
|
+
if (strcmp(key, "stderr") == 0) return xt_process_stream((void *)xt_stderr_write);
|
|
135
169
|
if (strcmp(key, "platform") == 0) return xt_string_from_cstr(xt_process_platform());
|
|
136
170
|
if (strcmp(key, "arch") == 0) return xt_string_from_cstr(xt_process_arch());
|
|
137
171
|
if (strcmp(key, "pid") == 0) return xt_number((double)xt_getpid());
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Node.js `url` module for xbintsc.
|
|
3
|
+
*
|
|
4
|
+
* Implements the two helpers the compiler itself relies on:
|
|
5
|
+
* - `pathToFileURL(path)` -> URL object with an `href` property
|
|
6
|
+
* - `fileURLToPath(url)` -> filesystem path
|
|
7
|
+
*
|
|
8
|
+
* Both accept the `file://` scheme and percent-encoded URLs. On Windows a
|
|
9
|
+
* leading slash before a drive letter (`/C:/`) is removed, matching Node.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
#include "rt.h"
|
|
13
|
+
|
|
14
|
+
#include <ctype.h>
|
|
15
|
+
#include <stdlib.h>
|
|
16
|
+
#include <string.h>
|
|
17
|
+
|
|
18
|
+
static int url_hex(int c) {
|
|
19
|
+
if (c >= '0' && c <= '9') return c - '0';
|
|
20
|
+
if (c >= 'a' && c <= 'f') return c - 'a' + 10;
|
|
21
|
+
if (c >= 'A' && c <= 'F') return c - 'A' + 10;
|
|
22
|
+
return -1;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
static xt_value url_percent_decode(const char *in) {
|
|
26
|
+
size_t length = strlen(in);
|
|
27
|
+
char *out = (char *)malloc(length + 1);
|
|
28
|
+
if (!out) return xt_string_from_cstr(in);
|
|
29
|
+
size_t j = 0;
|
|
30
|
+
for (size_t i = 0; i < length; i++) {
|
|
31
|
+
if (in[i] == '%' && i + 2 < length && url_hex(in[i + 1]) >= 0 && url_hex(in[i + 2]) >= 0) {
|
|
32
|
+
out[j++] = (char)((url_hex(in[i + 1]) << 4) | url_hex(in[i + 2]));
|
|
33
|
+
i += 2;
|
|
34
|
+
} else {
|
|
35
|
+
out[j++] = in[i];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
out[j] = 0;
|
|
39
|
+
xt_value result = xt_string_from_cstr(out);
|
|
40
|
+
free(out);
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
xt_value xt_url_path_to_file_url(int32_t argc, xt_value *argv) {
|
|
45
|
+
const char *raw = argc > 0 ? xt_string_data(xt_to_string(argv[0])) : "";
|
|
46
|
+
if (!raw) raw = "";
|
|
47
|
+
/* Resolve to an absolute path so the URL is comparable to `import.meta.url`
|
|
48
|
+
(which is built from realpath) even when given a relative path. */
|
|
49
|
+
char resolved[4096];
|
|
50
|
+
const char *path = raw;
|
|
51
|
+
#if defined(_WIN32)
|
|
52
|
+
if (_fullpath(resolved, raw, sizeof(resolved))) path = resolved;
|
|
53
|
+
#else
|
|
54
|
+
if (realpath(raw, resolved)) path = resolved;
|
|
55
|
+
#endif
|
|
56
|
+
char href[4300];
|
|
57
|
+
size_t j = 0;
|
|
58
|
+
const char *prefix = "file://";
|
|
59
|
+
for (; *prefix && j < sizeof(href) - 1; prefix++) href[j++] = *prefix;
|
|
60
|
+
#if defined(_WIN32)
|
|
61
|
+
if (j < sizeof(href) - 1) href[j++] = '/';
|
|
62
|
+
#endif
|
|
63
|
+
for (const char *p = path; *p && j < sizeof(href) - 1; p++) href[j++] = (*p == '\\') ? '/' : *p;
|
|
64
|
+
href[j] = 0;
|
|
65
|
+
|
|
66
|
+
xt_value url = xt_object_new();
|
|
67
|
+
xt_set(url, xt_string_from_cstr("href"), xt_string_from_cstr(href));
|
|
68
|
+
xt_set(url, xt_string_from_cstr("protocol"), xt_string_from_cstr("file:"));
|
|
69
|
+
xt_set(url, xt_string_from_cstr("pathname"), xt_string_from_cstr(path));
|
|
70
|
+
return url;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
xt_value xt_url_file_url_to_path(int32_t argc, xt_value *argv) {
|
|
74
|
+
const char *url = argc > 0 ? xt_string_data(xt_to_string(argv[0])) : "";
|
|
75
|
+
const char *path = url;
|
|
76
|
+
if (strncmp(url, "file://", 7) == 0) {
|
|
77
|
+
path = url + 7;
|
|
78
|
+
/* `file://localhost/...` is equivalent to `file:///...`. */
|
|
79
|
+
if (strncmp(path, "localhost", 9) == 0) path += 9;
|
|
80
|
+
}
|
|
81
|
+
#if defined(_WIN32)
|
|
82
|
+
if (path[0] == '/' && isalpha((unsigned char)path[1]) && path[2] == ':') path++;
|
|
83
|
+
#endif
|
|
84
|
+
return url_percent_decode(path);
|
|
85
|
+
}
|
package/runtime/rt.h
CHANGED
|
@@ -147,6 +147,9 @@ xt_value xt_object_new_with_proto(xt_value proto);
|
|
|
147
147
|
xt_value xt_object_get(xt_value obj, xt_value key);
|
|
148
148
|
xt_value xt_object_get_prototype(xt_value obj);
|
|
149
149
|
xt_value xt_object_set_prototype(xt_value obj, xt_value proto);
|
|
150
|
+
/** Define `get name()` / `set name(v)` accessors on an object. */
|
|
151
|
+
xt_value xt_object_define_getter(xt_value obj, xt_value key, xt_value getter);
|
|
152
|
+
xt_value xt_object_define_setter(xt_value obj, xt_value key, xt_value setter);
|
|
150
153
|
xt_value xt_object_freeze(xt_value obj);
|
|
151
154
|
int xt_object_is_frozen(xt_value obj);
|
|
152
155
|
xt_value xt_object_from_entries(xt_value entries);
|
|
@@ -182,6 +185,16 @@ xt_value xt_date_ctor(int32_t argc, xt_value *argv);
|
|
|
182
185
|
xt_value xt_date_static(xt_value name, int32_t argc, xt_value *argv);
|
|
183
186
|
xt_value xt_regexp_ctor(int32_t argc, xt_value *argv);
|
|
184
187
|
|
|
188
|
+
/* -- node:url ------------------------------------------------------------- */
|
|
189
|
+
xt_value xt_url_path_to_file_url(int32_t argc, xt_value *argv);
|
|
190
|
+
xt_value xt_url_file_url_to_path(int32_t argc, xt_value *argv);
|
|
191
|
+
|
|
192
|
+
/* -- node:crypto ---------------------------------------------------------- */
|
|
193
|
+
xt_value xt_crypto_create_hash(int32_t argc, xt_value *argv);
|
|
194
|
+
|
|
195
|
+
/* -- node:child_process --------------------------------------------------- */
|
|
196
|
+
xt_value xt_child_process_spawn_sync(int32_t argc, xt_value *argv);
|
|
197
|
+
|
|
185
198
|
/* -- promises / async ----------------------------------------------------- */
|
|
186
199
|
xt_value xt_promise_resolve(xt_value value);
|
|
187
200
|
xt_value xt_promise_reject(xt_value value);
|
|
@@ -223,6 +236,7 @@ xt_value xt_rest_args(int32_t argc, xt_value *argv, int32_t start);
|
|
|
223
236
|
/* -- program arguments ---------------------------------------------------- */
|
|
224
237
|
/* Captured from `main` so host extensions can expose `process.argv`. */
|
|
225
238
|
void xt_set_program_args(int32_t argc, char **argv);
|
|
239
|
+
xt_value xt_import_meta(xt_value name);
|
|
226
240
|
extern int32_t xt_program_argc;
|
|
227
241
|
extern char **xt_program_argv;
|
|
228
242
|
|
|
@@ -233,6 +247,12 @@ xt_value xt_array_set(xt_value arr, xt_value index, xt_value value);
|
|
|
233
247
|
xt_value xt_array_push(xt_value arr, xt_value value);
|
|
234
248
|
xt_value xt_array_length(xt_value arr);
|
|
235
249
|
xt_value xt_array_spread(xt_value target, xt_value source);
|
|
250
|
+
int32_t xt_array_size(xt_value value);
|
|
251
|
+
xt_value *xt_array_items(xt_value value);
|
|
252
|
+
|
|
253
|
+
/* `for...of` iteration: dispatch over arrays, strings, Maps and Sets. */
|
|
254
|
+
xt_value xt_iter_length(xt_value value);
|
|
255
|
+
xt_value xt_iter_value(xt_value value, xt_value index);
|
|
236
256
|
|
|
237
257
|
/* -- generic member access ------------------------------------------------ */
|
|
238
258
|
xt_value xt_get(xt_value target, xt_value key);
|
package/runtime/rt_internal.h
CHANGED
|
@@ -66,6 +66,10 @@ typedef struct {
|
|
|
66
66
|
typedef struct {
|
|
67
67
|
xt_string *key;
|
|
68
68
|
xt_value value;
|
|
69
|
+
/* Accessor properties (`get x()` / `set x(v)`) store the functions here;
|
|
70
|
+
* when set, `value` is ignored and property access invokes the getter. */
|
|
71
|
+
xt_value getter;
|
|
72
|
+
xt_value setter;
|
|
69
73
|
} xt_property;
|
|
70
74
|
|
|
71
75
|
typedef struct {
|
|
@@ -120,8 +124,15 @@ int xt_is_map(xt_value value);
|
|
|
120
124
|
int xt_is_set(xt_value value);
|
|
121
125
|
int xt_is_date(xt_value value);
|
|
122
126
|
int xt_is_regexp(xt_value value);
|
|
127
|
+
int xt_regexp_find(xt_value regexp, xt_value input, int32_t start, int32_t *matchStart, int32_t *matchEnd);
|
|
128
|
+
xt_value xt_regexp_exec(xt_value regexp, xt_value input);
|
|
129
|
+
xt_value xt_regexp_replace(xt_value value, xt_value regexp, xt_value replacement);
|
|
130
|
+
xt_value xt_regexp_get_property(xt_value regexp, xt_value key);
|
|
123
131
|
int32_t xt_map_size(xt_value value);
|
|
124
132
|
int32_t xt_set_size(xt_value value);
|
|
133
|
+
/* `for...of` iteration: dispatch over arrays, strings, Maps and Sets. */
|
|
134
|
+
xt_value xt_iter_length(xt_value value);
|
|
135
|
+
xt_value xt_iter_value(xt_value value, xt_value index);
|
|
125
136
|
|
|
126
137
|
/* -- collection / date / regexp representations --------------------------- */
|
|
127
138
|
typedef struct {
|