xbintsc 0.3.15 → 0.3.18

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 (156) hide show
  1. package/dist/src/cli/main.js +4 -4
  2. package/dist/src/cli/main.js.map +1 -1
  3. package/dist/src/codegen/generator/state.js +8 -0
  4. package/dist/src/codegen/generator/state.js.map +1 -1
  5. package/dist/src/codegen/generator/tables.js +8 -0
  6. package/dist/src/codegen/generator/tables.js.map +1 -1
  7. package/dist/src/driver/bundler/graph.d.ts +8 -0
  8. package/dist/src/driver/bundler/graph.js +85 -0
  9. package/dist/src/driver/bundler/graph.js.map +1 -0
  10. package/dist/src/driver/bundler/merge.d.ts +11 -0
  11. package/dist/src/driver/bundler/merge.js +288 -0
  12. package/dist/src/driver/bundler/merge.js.map +1 -0
  13. package/dist/src/driver/bundler/resolve.d.ts +12 -0
  14. package/dist/src/driver/bundler/resolve.js +246 -0
  15. package/dist/src/driver/bundler/resolve.js.map +1 -0
  16. package/dist/src/driver/bundler/symbols.d.ts +15 -0
  17. package/dist/src/driver/bundler/symbols.js +51 -0
  18. package/dist/src/driver/bundler/symbols.js.map +1 -0
  19. package/dist/src/driver/bundler/types.d.ts +36 -0
  20. package/dist/src/driver/bundler/types.js +5 -0
  21. package/dist/src/driver/bundler/types.js.map +1 -0
  22. package/dist/src/driver/modules.d.ts +9 -16
  23. package/dist/src/driver/modules.js +8 -644
  24. package/dist/src/driver/modules.js.map +1 -1
  25. package/dist/src/extensions/catalog.js +2 -1
  26. package/dist/src/extensions/catalog.js.map +1 -1
  27. package/dist/src/extensions/gui/index.d.ts +24 -0
  28. package/dist/src/extensions/gui/index.js +101 -0
  29. package/dist/src/extensions/gui/index.js.map +1 -0
  30. package/dist/tests/e2e/compile-basics.test.d.ts +4 -0
  31. package/dist/tests/e2e/compile-basics.test.js +134 -0
  32. package/dist/tests/e2e/compile-basics.test.js.map +1 -0
  33. package/dist/tests/e2e/compile-builtins.test.d.ts +4 -0
  34. package/dist/tests/e2e/compile-builtins.test.js +191 -0
  35. package/dist/tests/e2e/compile-builtins.test.js.map +1 -0
  36. package/dist/tests/e2e/compile-control-flow.test.d.ts +4 -0
  37. package/dist/tests/e2e/compile-control-flow.test.js +190 -0
  38. package/dist/tests/e2e/compile-control-flow.test.js.map +1 -0
  39. package/dist/tests/e2e/compile-modules.test.d.ts +4 -0
  40. package/dist/tests/e2e/compile-modules.test.js +48 -0
  41. package/dist/tests/e2e/compile-modules.test.js.map +1 -0
  42. package/dist/tests/e2e/compile-objects-classes.test.d.ts +4 -0
  43. package/dist/tests/e2e/compile-objects-classes.test.js +362 -0
  44. package/dist/tests/e2e/compile-objects-classes.test.js.map +1 -0
  45. package/dist/tests/e2e/differential-helpers.d.ts +12 -0
  46. package/dist/tests/e2e/differential-helpers.js +16 -0
  47. package/dist/tests/e2e/differential-helpers.js.map +1 -0
  48. package/dist/tests/e2e/differential-language.test.d.ts +4 -0
  49. package/dist/tests/e2e/{differential.test.js → differential-language.test.js} +5 -287
  50. package/dist/tests/e2e/differential-language.test.js.map +1 -0
  51. package/dist/tests/e2e/differential-symbols.test.d.ts +4 -0
  52. package/dist/tests/e2e/differential-symbols.test.js +92 -0
  53. package/dist/tests/e2e/differential-symbols.test.js.map +1 -0
  54. package/dist/tests/e2e/differential-values.test.d.ts +4 -0
  55. package/dist/tests/e2e/differential-values.test.js +197 -0
  56. package/dist/tests/e2e/differential-values.test.js.map +1 -0
  57. package/dist/tests/e2e/gui.test.d.ts +12 -0
  58. package/dist/tests/e2e/gui.test.js +493 -0
  59. package/dist/tests/e2e/gui.test.js.map +1 -0
  60. package/dist/tests/e2e/runtime-coverage-buffer.test.d.ts +4 -0
  61. package/dist/tests/e2e/runtime-coverage-buffer.test.js +97 -0
  62. package/dist/tests/e2e/runtime-coverage-buffer.test.js.map +1 -0
  63. package/dist/tests/e2e/runtime-coverage-globals.test.d.ts +4 -0
  64. package/dist/tests/e2e/runtime-coverage-globals.test.js +149 -0
  65. package/dist/tests/e2e/runtime-coverage-globals.test.js.map +1 -0
  66. package/dist/tests/e2e/runtime-coverage-node-modules.test.d.ts +4 -0
  67. package/dist/tests/e2e/runtime-coverage-node-modules.test.js +177 -0
  68. package/dist/tests/e2e/runtime-coverage-node-modules.test.js.map +1 -0
  69. package/dist/tests/e2e/runtime-coverage-streams.test.d.ts +4 -0
  70. package/dist/tests/e2e/runtime-coverage-streams.test.js +161 -0
  71. package/dist/tests/e2e/runtime-coverage-streams.test.js.map +1 -0
  72. package/dist/tests/e2e/runtime-coverage-system.test.d.ts +4 -0
  73. package/dist/tests/e2e/runtime-coverage-system.test.js +91 -0
  74. package/dist/tests/e2e/runtime-coverage-system.test.js.map +1 -0
  75. package/dist/tests/e2e/timers.test.d.ts +7 -0
  76. package/dist/tests/e2e/timers.test.js +63 -0
  77. package/dist/tests/e2e/timers.test.js.map +1 -0
  78. package/package.json +2 -1
  79. package/runtime/ext_gui/css.cpp +743 -0
  80. package/runtime/ext_gui/css.h +98 -0
  81. package/runtime/ext_gui/document.cpp +264 -0
  82. package/runtime/ext_gui/document.h +89 -0
  83. package/runtime/ext_gui/dom.cpp +472 -0
  84. package/runtime/ext_gui/dom.h +71 -0
  85. package/runtime/ext_gui/gui.cpp +457 -0
  86. package/runtime/ext_gui/gui_engine.h +81 -0
  87. package/runtime/ext_gui/image.cpp +125 -0
  88. package/runtime/ext_gui/image.h +42 -0
  89. package/runtime/ext_gui/layout.cpp +748 -0
  90. package/runtime/ext_gui/layout.h +93 -0
  91. package/runtime/ext_gui/paint.cpp +137 -0
  92. package/runtime/ext_gui/paint.h +75 -0
  93. package/runtime/ext_gui/renderer.cpp +959 -0
  94. package/runtime/ext_gui/renderer.h +68 -0
  95. package/runtime/ext_gui/stb_image.h +7988 -0
  96. package/runtime/ext_gui/style.cpp +771 -0
  97. package/runtime/ext_gui/style.h +117 -0
  98. package/runtime/ext_gui/text.cpp +378 -0
  99. package/runtime/ext_gui/text.h +78 -0
  100. package/runtime/ext_gui/window.cpp +405 -0
  101. package/runtime/ext_node/fs/fs_common.h +13 -527
  102. package/runtime/ext_node/fs/parts/buffer-bridge.inc +6 -0
  103. package/runtime/ext_node/fs/parts/builtins.inc +69 -0
  104. package/runtime/ext_node/fs/parts/dir.inc +47 -0
  105. package/runtime/ext_node/fs/parts/encoding.inc +186 -0
  106. package/runtime/ext_node/fs/parts/errors.inc +66 -0
  107. package/runtime/ext_node/fs/parts/flags.inc +39 -0
  108. package/runtime/ext_node/fs/parts/platform.inc +86 -0
  109. package/runtime/ext_node/fs/parts/promisify.inc +15 -0
  110. package/runtime/ext_node/fs/parts/time.inc +9 -0
  111. package/runtime/rt.h +33 -0
  112. package/runtime/xt_builtins.c +4 -0
  113. package/runtime/xt_containers/access.inc +168 -0
  114. package/runtime/xt_containers/arrays.inc +108 -0
  115. package/runtime/xt_containers/boxes.inc +11 -0
  116. package/runtime/xt_containers/objects.inc +326 -0
  117. package/runtime/xt_containers.c +8 -618
  118. package/runtime/xt_io/base64.inc +87 -0
  119. package/runtime/xt_io/console.inc +119 -0
  120. package/runtime/xt_io/exception.inc +142 -0
  121. package/runtime/xt_io/inspect.inc +212 -0
  122. package/runtime/xt_io.c +8 -553
  123. package/runtime/xt_loop.c +262 -24
  124. package/runtime/xt_regex/api.inc +58 -0
  125. package/runtime/xt_regex/helpers.inc +68 -0
  126. package/runtime/xt_regex/matcher.inc +248 -0
  127. package/runtime/xt_regex/parser.inc +236 -0
  128. package/runtime/xt_regex/types.inc +58 -0
  129. package/runtime/xt_regex.h +9 -672
  130. package/runtime/xt_values/arithmetic.inc +150 -0
  131. package/runtime/xt_values/comparison.inc +112 -0
  132. package/runtime/xt_values/constructors.inc +41 -0
  133. package/runtime/xt_values/conversions.inc +115 -0
  134. package/runtime/xt_values/number-format.inc +180 -0
  135. package/runtime/xt_values/strings.inc +22 -0
  136. package/runtime/xt_values.c +10 -626
  137. package/scripts/build-gui.ts +317 -0
  138. package/src/cli/main.ts +4 -3
  139. package/src/codegen/generator/state.ts +8 -0
  140. package/src/codegen/generator/tables.ts +8 -0
  141. package/src/driver/bundler/graph.ts +95 -0
  142. package/src/driver/bundler/merge.ts +312 -0
  143. package/src/driver/bundler/resolve.ts +240 -0
  144. package/src/driver/bundler/symbols.ts +55 -0
  145. package/src/driver/bundler/types.ts +37 -0
  146. package/src/driver/modules.ts +9 -693
  147. package/src/extensions/catalog.ts +2 -1
  148. package/src/extensions/gui/index.ts +107 -0
  149. package/dist/tests/e2e/compile.test.d.ts +0 -8
  150. package/dist/tests/e2e/compile.test.js +0 -893
  151. package/dist/tests/e2e/compile.test.js.map +0 -1
  152. package/dist/tests/e2e/differential.test.d.ts +0 -7
  153. package/dist/tests/e2e/differential.test.js.map +0 -1
  154. package/dist/tests/e2e/runtime-coverage.test.d.ts +0 -11
  155. package/dist/tests/e2e/runtime-coverage.test.js +0 -646
  156. 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 {};