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:
@@ -255,6 +255,10 @@ let _env_bind_hook : (env -> string -> value -> unit) option ref = ref None
|
||||
Used by browser kernel to sync mutations back to global_env. *)
|
||||
let _vm_global_set_hook : (string -> value -> unit) option ref = ref None
|
||||
|
||||
(* Optional hook: called by cek_run on import suspension.
|
||||
If set, the hook loads the library and returns true; cek_run then resumes. *)
|
||||
let _import_hook : (value -> bool) option ref = ref None
|
||||
|
||||
let env_bind env name v =
|
||||
Hashtbl.replace env.bindings (intern name) v;
|
||||
(match !_env_bind_hook with Some f -> f env name v | None -> ());
|
||||
|
||||
Reference in New Issue
Block a user