diff --git a/hosts/ocaml/bin/run_tests.ml b/hosts/ocaml/bin/run_tests.ml index acd0314f..1a9f9f4b 100644 --- a/hosts/ocaml/bin/run_tests.ml +++ b/hosts/ocaml/bin/run_tests.ml @@ -65,7 +65,18 @@ let make_test_env () = ignore (Sx_types.env_bind env name (NativeFn (name, fn))) in - (* --- 5 platform functions required by test-framework.sx --- *) + (* --- platform functions required by test-framework.sx --- *) + + bind "cek-try" (fun args -> + match args with + | [thunk; handler] -> + (try Sx_ref.cek_call thunk Nil + with Eval_error msg -> Sx_ref.cek_call handler (List [String msg])) + | [thunk] -> + (try let r = Sx_ref.cek_call thunk Nil in + List [Symbol "ok"; r] + with Eval_error msg -> List [Symbol "error"; String msg]) + | _ -> Nil); bind "try-call" (fun args -> match args with diff --git a/hosts/ocaml/bin/sx_server.ml b/hosts/ocaml/bin/sx_server.ml index 726c0c67..33007d9c 100644 --- a/hosts/ocaml/bin/sx_server.ml +++ b/hosts/ocaml/bin/sx_server.ml @@ -389,7 +389,7 @@ let setup_evaluator_bridge env = match args with | [thunk; handler] -> (try Sx_ref.cek_call thunk Nil - with Eval_error msg -> Sx_ref.cek_call handler (String msg)) + with Eval_error msg -> Sx_ref.cek_call handler (List [String msg])) | [thunk] -> (try let r = Sx_ref.cek_call thunk Nil in List [Symbol "ok"; r] diff --git a/hosts/ocaml/browser/sx_browser.ml b/hosts/ocaml/browser/sx_browser.ml index 1cb6554e..85415e6a 100644 --- a/hosts/ocaml/browser/sx_browser.ml +++ b/hosts/ocaml/browser/sx_browser.ml @@ -481,7 +481,7 @@ let () = match args with | [thunk; handler] -> (try Sx_ref.cek_call thunk Nil - with Eval_error msg -> Sx_ref.cek_call handler (String msg)) + with Eval_error msg -> Sx_ref.cek_call handler (List [String msg])) | [thunk] -> (try let r = Sx_ref.cek_call thunk Nil in List [Symbol "ok"; r] diff --git a/shared/static/wasm/sx/boot.sx b/shared/static/wasm/sx/boot.sx index 154c3b76..f82d2d63 100644 --- a/shared/static/wasm/sx/boot.sx +++ b/shared/static/wasm/sx/boot.sx @@ -1,575 +1,45 @@ -;; ========================================================================== -;; boot.sx — Browser boot, mount, hydrate, script processing -;; -;; Handles the browser startup lifecycle: -;; 1. CSS tracking init -;; 2. Component script processing (from