Lazy module loading: compiler loads on demand, playground page
- load-library! native: islands can declare module dependencies at hydration time, triggering on-demand .sxbc loading - JIT compiler lazy-load: compiler.sxbc loads via setTimeout after boot, eliminating "JIT: compiler not loaded" errors - _import_hook on sx_types: infrastructure for hosts to resolve import suspensions inside eval_expr (server wiring deferred to Step 8) - Playground page (/sx/(tools.(playground))): REPL island that lazy-loads the compiler module when navigated to — demonstrates the full lazy loading pipeline Known remaining issues: - SPA navigation broken for pages using let-match (orchestration.sx, router.sx) — bytecode compiler doesn't handle let-match special form - Server-side "IO suspension in non-IO context" during http_load_files — needs cek_run import handling (deferred to Step 8) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -19,9 +19,16 @@
|
||||
function boot(K) {
|
||||
|
||||
// ================================================================
|
||||
// 8 FFI Host Primitives
|
||||
// FFI Host Primitives
|
||||
// ================================================================
|
||||
|
||||
// Lazy module loading — islands/components call this to declare dependencies
|
||||
K.registerNative("load-library!", function(args) {
|
||||
var name = args[0];
|
||||
if (!name) return false;
|
||||
return __sxLoadLibrary(name) || false;
|
||||
});
|
||||
|
||||
K.registerNative("host-global", function(args) {
|
||||
var name = args[0];
|
||||
if (typeof globalThis !== "undefined" && name in globalThis) return globalThis[name];
|
||||
@@ -617,8 +624,14 @@
|
||||
var _doInit = function() {
|
||||
loadWebStack();
|
||||
Sx.init();
|
||||
// Enable JIT after all boot code has run
|
||||
setTimeout(function() { K.eval('(enable-jit!)'); }, 0);
|
||||
// Enable JIT after all boot code has run.
|
||||
// Lazy-load the compiler first — JIT needs it to compile functions.
|
||||
setTimeout(function() {
|
||||
if (K.beginModuleLoad) K.beginModuleLoad();
|
||||
loadLibrary("sx compiler", {});
|
||||
if (K.endModuleLoad) K.endModuleLoad();
|
||||
K.eval('(enable-jit!)');
|
||||
}, 0);
|
||||
};
|
||||
|
||||
if (document.readyState === "loading") {
|
||||
|
||||
Reference in New Issue
Block a user