Step 15: bytecode + CEK state serialization — 16 tests
bytecode-serialize/deserialize: sxbc v2 format wrapping compiled code dicts. cek-serialize/deserialize: cek-state v1 format wrapping suspended CEK state (phase, request, env, kont). Both use SX s-expression round-trip via inspect/parse. lib/serialize.sx has pure SX versions. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -182,6 +182,35 @@ let make_test_env () =
|
||||
Dict ld
|
||||
| _ -> Nil);
|
||||
|
||||
(* Step 15: bytecode + CEK state serialization *)
|
||||
bind "bytecode-serialize" (fun args ->
|
||||
match args with
|
||||
| [v] -> String ("(sxbc 2 " ^ Sx_types.inspect v ^ ")")
|
||||
| _ -> raise (Eval_error "bytecode-serialize: expected 1 arg"));
|
||||
|
||||
bind "bytecode-deserialize" (fun args ->
|
||||
match args with
|
||||
| [String s] ->
|
||||
let parsed = Sx_parser.parse_all s in
|
||||
(match parsed with
|
||||
| [List (Symbol "sxbc" :: Number _ :: payload :: _)] -> payload
|
||||
| _ -> raise (Eval_error "bytecode-deserialize: invalid sxbc format"))
|
||||
| _ -> raise (Eval_error "bytecode-deserialize: expected string"));
|
||||
|
||||
bind "cek-serialize" (fun args ->
|
||||
match args with
|
||||
| [v] -> String ("(cek-state 1 " ^ Sx_types.inspect v ^ ")")
|
||||
| _ -> raise (Eval_error "cek-serialize: expected 1 arg"));
|
||||
|
||||
bind "cek-deserialize" (fun args ->
|
||||
match args with
|
||||
| [String s] ->
|
||||
let parsed = Sx_parser.parse_all s in
|
||||
(match parsed with
|
||||
| [List (Symbol "cek-state" :: Number _ :: payload :: _)] -> payload
|
||||
| _ -> raise (Eval_error "cek-deserialize: invalid cek-state format"))
|
||||
| _ -> raise (Eval_error "cek-deserialize: expected string"));
|
||||
|
||||
bind "sx-parse-one" (fun args ->
|
||||
match args with
|
||||
| [String s] ->
|
||||
|
||||
Reference in New Issue
Block a user