Files
rose-ash/lib/render-trace.sx
giles 2d7dd7d582 Step 5 piece 6: migrate 23 .sx files to define-library/import
Wraps all core .sx files in R7RS define-library with explicit export
lists, plus (import ...) at end for backward-compatible global re-export.

Libraries registered:
  (sx bytecode)      — 83 opcode constants
  (sx render)        — 15 tag registries + render helpers
  (sx signals)       — 23 reactive signal primitives
  (sx r7rs)          — 21 R7RS aliases
  (sx compiler)      — 42 compiler functions
  (sx vm)            — 32 VM functions
  (sx freeze)        — 9 freeze/thaw functions
  (sx content)       — 6 content store functions
  (sx callcc)        — 1 call/cc wrapper
  (sx highlight)     — 13 syntax highlighting functions
  (sx stdlib)        — 47 stdlib functions
  (sx swap)          — 13 swap algebra functions
  (sx render-trace)  — 8 render trace functions
  (sx harness)       — 21 test harness functions
  (sx canonical)     — 12 canonical serialization functions
  (web adapter-html) — 13 HTML renderer functions
  (web adapter-sx)   — 13 SX wire format functions
  (web engine)       — 33 hypermedia engine functions
  (web request-handler) — 4 request handling functions
  (web page-helpers) — 12 page helper functions
  (web router)       — 36 routing functions
  (web deps)         — 19 dependency analysis functions
  (web orchestration) — 59 page orchestration functions

Key changes:
- define-library now inherits parent env (env-extend env instead of
  env-extend make-env) so library bodies can access platform primitives
- sx_server.ml: added resolve_library_path + load_library_file for
  import resolution (maps library specs to file paths)
- cek_run_with_io: handles "import" locally instead of sending to
  Python bridge

2608/2608 tests passing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 21:48:54 +00:00

72 lines
1.6 KiB
Plaintext

(define-library (sx render-trace)
(export
*render-trace*
*render-trace-log*
*render-trace-depth*
render-trace-reset!
render-trace-push!
render-trace-enter!
render-trace-exit!
format-render-trace)
(begin
(define *render-trace* false)
(define *render-trace-log* (list))
(define *render-trace-depth* 0)
(define
render-trace-reset!
(fn () (set! *render-trace-log* (list)) (set! *render-trace-depth* 0)))
(define
render-trace-push!
(fn
(kind detail result)
(when
*render-trace*
(set! *render-trace-log* (append *render-trace-log* (list {:result (if (> (len (str result)) 80) (str (slice (str result) 0 77) "...") (str result)) :depth *render-trace-depth* :kind kind :detail detail}))))))
(define
render-trace-enter!
(fn
(kind detail)
(when
*render-trace*
(render-trace-push! kind detail "...")
(set! *render-trace-depth* (+ *render-trace-depth* 1)))))
(define
render-trace-exit!
(fn
(result)
(when
*render-trace*
(set! *render-trace-depth* (- *render-trace-depth* 1)))))
(define
format-render-trace
(fn
()
(join
"\n"
(map
(fn
(entry)
(let
((indent (join "" (map (fn (_) " ") (range 0 (get entry :depth)))))
(kind (get entry :kind))
(detail (get entry :detail))
(result (get entry :result)))
(str indent kind " " detail " → " result)))
*render-trace-log*))))
)) ;; end define-library
;; Re-export to global namespace for backward compatibility
(import (sx render-trace))