xbintsc 0.3.15 → 0.3.16
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/cli/main.js +4 -4
- package/dist/src/cli/main.js.map +1 -1
- package/dist/src/codegen/generator/state.js +8 -0
- package/dist/src/codegen/generator/state.js.map +1 -1
- package/dist/src/codegen/generator/tables.js +8 -0
- package/dist/src/codegen/generator/tables.js.map +1 -1
- package/dist/src/driver/bundler/graph.d.ts +8 -0
- package/dist/src/driver/bundler/graph.js +85 -0
- package/dist/src/driver/bundler/graph.js.map +1 -0
- package/dist/src/driver/bundler/merge.d.ts +11 -0
- package/dist/src/driver/bundler/merge.js +288 -0
- package/dist/src/driver/bundler/merge.js.map +1 -0
- package/dist/src/driver/bundler/resolve.d.ts +12 -0
- package/dist/src/driver/bundler/resolve.js +246 -0
- package/dist/src/driver/bundler/resolve.js.map +1 -0
- package/dist/src/driver/bundler/symbols.d.ts +15 -0
- package/dist/src/driver/bundler/symbols.js +51 -0
- package/dist/src/driver/bundler/symbols.js.map +1 -0
- package/dist/src/driver/bundler/types.d.ts +36 -0
- package/dist/src/driver/bundler/types.js +5 -0
- package/dist/src/driver/bundler/types.js.map +1 -0
- package/dist/src/driver/modules.d.ts +9 -16
- package/dist/src/driver/modules.js +8 -644
- package/dist/src/driver/modules.js.map +1 -1
- package/dist/src/extensions/catalog.js +2 -1
- package/dist/src/extensions/catalog.js.map +1 -1
- package/dist/src/extensions/gui/index.d.ts +24 -0
- package/dist/src/extensions/gui/index.js +101 -0
- package/dist/src/extensions/gui/index.js.map +1 -0
- package/dist/tests/e2e/compile-basics.test.d.ts +4 -0
- package/dist/tests/e2e/compile-basics.test.js +134 -0
- package/dist/tests/e2e/compile-basics.test.js.map +1 -0
- package/dist/tests/e2e/compile-builtins.test.d.ts +4 -0
- package/dist/tests/e2e/compile-builtins.test.js +191 -0
- package/dist/tests/e2e/compile-builtins.test.js.map +1 -0
- package/dist/tests/e2e/compile-control-flow.test.d.ts +4 -0
- package/dist/tests/e2e/compile-control-flow.test.js +190 -0
- package/dist/tests/e2e/compile-control-flow.test.js.map +1 -0
- package/dist/tests/e2e/compile-modules.test.d.ts +4 -0
- package/dist/tests/e2e/compile-modules.test.js +48 -0
- package/dist/tests/e2e/compile-modules.test.js.map +1 -0
- package/dist/tests/e2e/compile-objects-classes.test.d.ts +4 -0
- package/dist/tests/e2e/compile-objects-classes.test.js +362 -0
- package/dist/tests/e2e/compile-objects-classes.test.js.map +1 -0
- package/dist/tests/e2e/differential-helpers.d.ts +12 -0
- package/dist/tests/e2e/differential-helpers.js +16 -0
- package/dist/tests/e2e/differential-helpers.js.map +1 -0
- package/dist/tests/e2e/differential-language.test.d.ts +4 -0
- package/dist/tests/e2e/{differential.test.js → differential-language.test.js} +5 -287
- package/dist/tests/e2e/differential-language.test.js.map +1 -0
- package/dist/tests/e2e/differential-symbols.test.d.ts +4 -0
- package/dist/tests/e2e/differential-symbols.test.js +92 -0
- package/dist/tests/e2e/differential-symbols.test.js.map +1 -0
- package/dist/tests/e2e/differential-values.test.d.ts +4 -0
- package/dist/tests/e2e/differential-values.test.js +197 -0
- package/dist/tests/e2e/differential-values.test.js.map +1 -0
- package/dist/tests/e2e/gui.test.d.ts +12 -0
- package/dist/tests/e2e/gui.test.js +493 -0
- package/dist/tests/e2e/gui.test.js.map +1 -0
- package/dist/tests/e2e/runtime-coverage-buffer.test.d.ts +4 -0
- package/dist/tests/e2e/runtime-coverage-buffer.test.js +97 -0
- package/dist/tests/e2e/runtime-coverage-buffer.test.js.map +1 -0
- package/dist/tests/e2e/runtime-coverage-globals.test.d.ts +4 -0
- package/dist/tests/e2e/runtime-coverage-globals.test.js +149 -0
- package/dist/tests/e2e/runtime-coverage-globals.test.js.map +1 -0
- package/dist/tests/e2e/runtime-coverage-node-modules.test.d.ts +4 -0
- package/dist/tests/e2e/runtime-coverage-node-modules.test.js +177 -0
- package/dist/tests/e2e/runtime-coverage-node-modules.test.js.map +1 -0
- package/dist/tests/e2e/runtime-coverage-streams.test.d.ts +4 -0
- package/dist/tests/e2e/runtime-coverage-streams.test.js +161 -0
- package/dist/tests/e2e/runtime-coverage-streams.test.js.map +1 -0
- package/dist/tests/e2e/runtime-coverage-system.test.d.ts +4 -0
- package/dist/tests/e2e/runtime-coverage-system.test.js +91 -0
- package/dist/tests/e2e/runtime-coverage-system.test.js.map +1 -0
- package/dist/tests/e2e/timers.test.d.ts +7 -0
- package/dist/tests/e2e/timers.test.js +63 -0
- package/dist/tests/e2e/timers.test.js.map +1 -0
- package/package.json +2 -1
- package/runtime/ext_gui/css.cpp +743 -0
- package/runtime/ext_gui/css.h +98 -0
- package/runtime/ext_gui/document.cpp +264 -0
- package/runtime/ext_gui/document.h +89 -0
- package/runtime/ext_gui/dom.cpp +472 -0
- package/runtime/ext_gui/dom.h +71 -0
- package/runtime/ext_gui/gui.cpp +457 -0
- package/runtime/ext_gui/gui_engine.h +81 -0
- package/runtime/ext_gui/image.cpp +125 -0
- package/runtime/ext_gui/image.h +42 -0
- package/runtime/ext_gui/layout.cpp +748 -0
- package/runtime/ext_gui/layout.h +93 -0
- package/runtime/ext_gui/paint.cpp +137 -0
- package/runtime/ext_gui/paint.h +75 -0
- package/runtime/ext_gui/renderer.cpp +959 -0
- package/runtime/ext_gui/renderer.h +68 -0
- package/runtime/ext_gui/stb_image.h +7988 -0
- package/runtime/ext_gui/style.cpp +771 -0
- package/runtime/ext_gui/style.h +117 -0
- package/runtime/ext_gui/text.cpp +378 -0
- package/runtime/ext_gui/text.h +78 -0
- package/runtime/ext_gui/window.cpp +405 -0
- package/runtime/ext_node/fs/fs_common.h +13 -527
- package/runtime/ext_node/fs/parts/buffer-bridge.inc +6 -0
- package/runtime/ext_node/fs/parts/builtins.inc +69 -0
- package/runtime/ext_node/fs/parts/dir.inc +47 -0
- package/runtime/ext_node/fs/parts/encoding.inc +186 -0
- package/runtime/ext_node/fs/parts/errors.inc +66 -0
- package/runtime/ext_node/fs/parts/flags.inc +39 -0
- package/runtime/ext_node/fs/parts/platform.inc +86 -0
- package/runtime/ext_node/fs/parts/promisify.inc +15 -0
- package/runtime/ext_node/fs/parts/time.inc +9 -0
- package/runtime/rt.h +33 -0
- package/runtime/xt_builtins.c +4 -0
- package/runtime/xt_containers/access.inc +168 -0
- package/runtime/xt_containers/arrays.inc +108 -0
- package/runtime/xt_containers/boxes.inc +11 -0
- package/runtime/xt_containers/objects.inc +326 -0
- package/runtime/xt_containers.c +8 -618
- package/runtime/xt_io/base64.inc +87 -0
- package/runtime/xt_io/console.inc +119 -0
- package/runtime/xt_io/exception.inc +142 -0
- package/runtime/xt_io/inspect.inc +212 -0
- package/runtime/xt_io.c +8 -553
- package/runtime/xt_loop.c +262 -24
- package/runtime/xt_regex/api.inc +58 -0
- package/runtime/xt_regex/helpers.inc +68 -0
- package/runtime/xt_regex/matcher.inc +248 -0
- package/runtime/xt_regex/parser.inc +236 -0
- package/runtime/xt_regex/types.inc +58 -0
- package/runtime/xt_regex.h +9 -672
- package/runtime/xt_values/arithmetic.inc +150 -0
- package/runtime/xt_values/comparison.inc +112 -0
- package/runtime/xt_values/constructors.inc +41 -0
- package/runtime/xt_values/conversions.inc +115 -0
- package/runtime/xt_values/number-format.inc +180 -0
- package/runtime/xt_values/strings.inc +22 -0
- package/runtime/xt_values.c +10 -626
- package/scripts/build-gui.ts +317 -0
- package/src/cli/main.ts +4 -3
- package/src/codegen/generator/state.ts +8 -0
- package/src/codegen/generator/tables.ts +8 -0
- package/src/driver/bundler/graph.ts +95 -0
- package/src/driver/bundler/merge.ts +312 -0
- package/src/driver/bundler/resolve.ts +240 -0
- package/src/driver/bundler/symbols.ts +55 -0
- package/src/driver/bundler/types.ts +37 -0
- package/src/driver/modules.ts +9 -693
- package/src/extensions/catalog.ts +2 -1
- package/src/extensions/gui/index.ts +107 -0
- package/dist/tests/e2e/compile.test.d.ts +0 -8
- package/dist/tests/e2e/compile.test.js +0 -893
- package/dist/tests/e2e/compile.test.js.map +0 -1
- package/dist/tests/e2e/differential.test.d.ts +0 -7
- package/dist/tests/e2e/differential.test.js.map +0 -1
- package/dist/tests/e2e/runtime-coverage.test.d.ts +0 -11
- package/dist/tests/e2e/runtime-coverage.test.js +0 -646
- package/dist/tests/e2e/runtime-coverage.test.js.map +0 -1
|
@@ -12,8 +12,9 @@
|
|
|
12
12
|
|
|
13
13
|
import type { Extension } from "./registry.js";
|
|
14
14
|
import { nodeExtension } from "./node/index.js";
|
|
15
|
+
import { guiExtension } from "./gui/index.js";
|
|
15
16
|
|
|
16
17
|
/** Every extension bundled with xbintsc, in registration order. */
|
|
17
18
|
export function bundledExtensions(): readonly Extension[] {
|
|
18
|
-
return [nodeExtension];
|
|
19
|
+
return [nodeExtension, guiExtension];
|
|
19
20
|
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GUI extension: a self-contained, GPU-accelerated HTML/CSS renderer.
|
|
3
|
+
*
|
|
4
|
+
* Unlike the system-WebView approach, this extension ships its *own* rendering
|
|
5
|
+
* engine (HTML parser, CSS cascade, layout, GPU compositor) written in C/C++.
|
|
6
|
+
* It is therefore delivered as a per-platform prebuilt archive — the same way
|
|
7
|
+
* the core runtime ships `runtime/lib/<os>-<arch>/core.a` — and linked through
|
|
8
|
+
* `nativeObjects`. The core compiler stays platform-agnostic and never learns
|
|
9
|
+
* that "gui" exists beyond the module bindings below.
|
|
10
|
+
*
|
|
11
|
+
* Design and roadmap live in `doc/gui.md`. The C++/GPU sources are not built
|
|
12
|
+
* yet: `nativeObjects()` fails with an actionable message until
|
|
13
|
+
* `runtime/lib/<os>-<arch>/gui.a` exists.
|
|
14
|
+
*
|
|
15
|
+
* TypeScript sees one importable module:
|
|
16
|
+
*
|
|
17
|
+
* import { createWindow, run } from "gui";
|
|
18
|
+
*
|
|
19
|
+
* Window instances are runtime objects whose methods are dispatched in C
|
|
20
|
+
* (through the existing `xt_call_method` object model); the registry only
|
|
21
|
+
* needs to bind the top-level functions.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
import { join } from "node:path";
|
|
25
|
+
import type { Extension, ExtensionModule } from "../registry.js";
|
|
26
|
+
import { findRuntimeDir, platformSlug } from "../../driver/paths.js";
|
|
27
|
+
import { findRuntimeLibrary } from "../../driver/runtime-lib.js";
|
|
28
|
+
|
|
29
|
+
/** Top-level `gui` module bindings. */
|
|
30
|
+
const guiModule: ExtensionModule = {
|
|
31
|
+
namespace: "gui",
|
|
32
|
+
exports: {
|
|
33
|
+
createWindow: { symbol: "xt_gui_create_window" },
|
|
34
|
+
run: { symbol: "xt_gui_run" },
|
|
35
|
+
quit: { symbol: "xt_gui_quit" },
|
|
36
|
+
/** Window handles are opaque runtime objects created by `createWindow`. */
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/** Absolute path to the per-platform prebuilt GUI archive (`gui.a`, or
|
|
41
|
+
* `gui.lib` with the MSVC ABI on Windows). */
|
|
42
|
+
function guiArchive(): string {
|
|
43
|
+
return join(findRuntimeDir(), "lib", platformSlug(), "gui.a");
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export const guiExtension: Extension = {
|
|
47
|
+
name: "gui",
|
|
48
|
+
description: "GPU-accelerated HTML/CSS GUI (self-hosted renderer, no webview)",
|
|
49
|
+
nativeObjects: () => {
|
|
50
|
+
const archive = findRuntimeLibrary("gui");
|
|
51
|
+
if (archive === undefined) {
|
|
52
|
+
throw new Error(
|
|
53
|
+
`GUI native library not found at ${guiArchive()} (or gui.lib).\n` +
|
|
54
|
+
`Build it for ${platformSlug()} first (see doc/gui.md).`,
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
return [archive];
|
|
58
|
+
},
|
|
59
|
+
/**
|
|
60
|
+
* System libraries the archive itself depends on. The vendored third-party
|
|
61
|
+
* libraries (GPU backend, HarfBuzz, FreeType, ...) are linked *into* `gui.a`
|
|
62
|
+
* by its build script, so only OS frameworks remain here. TODO(gui): confirm
|
|
63
|
+
* the exact set once the GPU backend is chosen (see doc/gui.md).
|
|
64
|
+
*/
|
|
65
|
+
linkerFlags: () => {
|
|
66
|
+
if (process.platform === "darwin") {
|
|
67
|
+
return [
|
|
68
|
+
"-framework", "CoreMedia",
|
|
69
|
+
"-framework", "CoreVideo",
|
|
70
|
+
"-framework", "Cocoa",
|
|
71
|
+
"-weak_framework", "UniformTypeIdentifiers",
|
|
72
|
+
"-framework", "IOKit",
|
|
73
|
+
"-framework", "ForceFeedback",
|
|
74
|
+
"-framework", "Carbon",
|
|
75
|
+
"-framework", "CoreAudio",
|
|
76
|
+
"-framework", "AudioToolbox",
|
|
77
|
+
"-framework", "AVFoundation",
|
|
78
|
+
"-framework", "Foundation",
|
|
79
|
+
"-framework", "GameController",
|
|
80
|
+
"-framework", "Metal",
|
|
81
|
+
"-framework", "QuartzCore",
|
|
82
|
+
/* HarfBuzz's CoreText shaper (macOS system fonts). */
|
|
83
|
+
"-framework", "CoreText",
|
|
84
|
+
"-framework", "CoreGraphics",
|
|
85
|
+
"-framework", "CoreFoundation",
|
|
86
|
+
"-weak_framework", "CoreHaptics",
|
|
87
|
+
"-lpthread",
|
|
88
|
+
"-lm",
|
|
89
|
+
"-lc++",
|
|
90
|
+
];
|
|
91
|
+
}
|
|
92
|
+
if (process.platform === "win32") {
|
|
93
|
+
return [
|
|
94
|
+
/* SDL_GPU D3D12 backend. */
|
|
95
|
+
"-ld3d12", "-ldxgi", "-ldxguid",
|
|
96
|
+
/* Win32 / COM / multimedia services SDL3 uses. */
|
|
97
|
+
"-luser32", "-lgdi32", "-lshell32",
|
|
98
|
+
"-lole32", "-loleaut32", "-luuid", "-ladvapi32",
|
|
99
|
+
"-lwinmm", "-limm32", "-lversion", "-lsetupapi",
|
|
100
|
+
/* The engine is C++; link the MSVC C++ runtime. */
|
|
101
|
+
"-lmsvcprt",
|
|
102
|
+
];
|
|
103
|
+
}
|
|
104
|
+
return ["-lX11", "-lwayland-client", "-lEGL", "-lGL", "-ldl", "-lpthread", "-lstdc++"];
|
|
105
|
+
},
|
|
106
|
+
modules: () => ({ gui: guiModule }),
|
|
107
|
+
};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* End-to-end tests: compile TypeScript all the way to a native binary and run
|
|
3
|
-
* it. Each program is compiled and executed through the shared
|
|
4
|
-
* {@link describeE2E} harness, so the suite is skipped when no
|
|
5
|
-
* clang-compatible compiler is available. Node extension coverage lives in
|
|
6
|
-
* `compile-node.test.ts`.
|
|
7
|
-
*/
|
|
8
|
-
export {};
|