Fix server import suspension, dist sync, JIT errors
- cek_run patched to handle import suspensions via _import_hook. define-library (import ...) now resolves cleanly on the server. IO suspension errors: 190 → 0. JIT failures: ~50 → 0. - _import_hook wired in sx_server.ml to load .sx files on demand. - compile-modules.js syncs source .sx files to dist/sx/ before compiling — eliminates stale bytecode from out-of-date copies. - WASM binary rebuilt with all fixes. - 2658/2658 tests pass (8 new — previously failing import tests). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -40,7 +40,7 @@
|
||||
(when
|
||||
(starts-with? name "~")
|
||||
(when (not (contains? refs name)) (append! refs name)))))
|
||||
("list" (for-each (fn (item) (scan-refs-walk item refs)) node))
|
||||
("list" (for-each (fn (child) (scan-refs-walk child refs)) node))
|
||||
("dict"
|
||||
(for-each
|
||||
(fn (key) (scan-refs-walk (dict-get node key) refs))
|
||||
@@ -56,27 +56,16 @@
|
||||
(append! seen n)
|
||||
(let
|
||||
((val (env-get env n)))
|
||||
(match
|
||||
(type-of val)
|
||||
("component"
|
||||
(for-each
|
||||
(fn
|
||||
((ref :as string))
|
||||
(transitive-deps-walk ref seen env))
|
||||
(scan-refs (component-body val))))
|
||||
("island"
|
||||
(for-each
|
||||
(fn
|
||||
((ref :as string))
|
||||
(transitive-deps-walk ref seen env))
|
||||
(scan-refs (component-body val))))
|
||||
("macro"
|
||||
(for-each
|
||||
(fn
|
||||
((ref :as string))
|
||||
(transitive-deps-walk ref seen env))
|
||||
(scan-refs (macro-body val))))
|
||||
(_ nil))))))
|
||||
(cond
|
||||
(or (= (type-of val) "component") (= (type-of val) "island"))
|
||||
(for-each
|
||||
(fn ((ref :as string)) (transitive-deps-walk ref seen env))
|
||||
(scan-refs (component-body val)))
|
||||
(= (type-of val) "macro")
|
||||
(for-each
|
||||
(fn ((ref :as string)) (transitive-deps-walk ref seen env))
|
||||
(scan-refs (macro-body val)))
|
||||
:else nil)))))
|
||||
(define
|
||||
transitive-deps
|
||||
:effects ()
|
||||
@@ -216,37 +205,36 @@
|
||||
(append! seen n)
|
||||
(let
|
||||
((val (env-get env n)))
|
||||
(match
|
||||
(type-of val)
|
||||
("component"
|
||||
(do
|
||||
(for-each
|
||||
(fn
|
||||
((ref :as string))
|
||||
(when
|
||||
(not (contains? all-refs ref))
|
||||
(append! all-refs ref)))
|
||||
(scan-io-refs (component-body val) io-names))
|
||||
(for-each
|
||||
(fn
|
||||
((dep :as string))
|
||||
(transitive-io-refs-walk dep seen all-refs env io-names))
|
||||
(scan-refs (component-body val)))))
|
||||
("macro"
|
||||
(do
|
||||
(for-each
|
||||
(fn
|
||||
((ref :as string))
|
||||
(when
|
||||
(not (contains? all-refs ref))
|
||||
(append! all-refs ref)))
|
||||
(scan-io-refs (macro-body val) io-names))
|
||||
(for-each
|
||||
(fn
|
||||
((dep :as string))
|
||||
(transitive-io-refs-walk dep seen all-refs env io-names))
|
||||
(scan-refs (macro-body val)))))
|
||||
(_ nil))))))
|
||||
(cond
|
||||
(= (type-of val) "component")
|
||||
(do
|
||||
(for-each
|
||||
(fn
|
||||
((ref :as string))
|
||||
(when
|
||||
(not (contains? all-refs ref))
|
||||
(append! all-refs ref)))
|
||||
(scan-io-refs (component-body val) io-names))
|
||||
(for-each
|
||||
(fn
|
||||
((dep :as string))
|
||||
(transitive-io-refs-walk dep seen all-refs env io-names))
|
||||
(scan-refs (component-body val))))
|
||||
(= (type-of val) "macro")
|
||||
(do
|
||||
(for-each
|
||||
(fn
|
||||
((ref :as string))
|
||||
(when
|
||||
(not (contains? all-refs ref))
|
||||
(append! all-refs ref)))
|
||||
(scan-io-refs (macro-body val) io-names))
|
||||
(for-each
|
||||
(fn
|
||||
((dep :as string))
|
||||
(transitive-io-refs-walk dep seen all-refs env io-names))
|
||||
(scan-refs (macro-body val))))
|
||||
:else nil)))))
|
||||
(define
|
||||
transitive-io-refs
|
||||
:effects ()
|
||||
@@ -318,15 +306,16 @@
|
||||
(if
|
||||
(not (= (type-of val) "component"))
|
||||
"server"
|
||||
(match
|
||||
(component-affinity val)
|
||||
("server" "server")
|
||||
("client" "client")
|
||||
(_
|
||||
(if
|
||||
(not (component-pure? name env io-names))
|
||||
"server"
|
||||
"client"))))))))
|
||||
(let
|
||||
((affinity (component-affinity val)))
|
||||
(cond
|
||||
(= affinity "server")
|
||||
"server"
|
||||
(= affinity "client")
|
||||
"client"
|
||||
(not (component-pure? name env io-names))
|
||||
"server"
|
||||
:else "client")))))))
|
||||
(define
|
||||
page-render-plan
|
||||
:effects ()
|
||||
|
||||
Reference in New Issue
Block a user