fed-sx-m1: Step 3b substrate fix #2 — $X char literals decode to char code in tokenizer (+12 eval, 750/750)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 31s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 31s
This commit is contained in:
@@ -103,16 +103,16 @@ The kernel calls into these host primitives: `crypto:hash/2`,
|
||||
|
||||
These three gaps block the remaining unchecked deliverables:
|
||||
|
||||
1. **Term codec** (`3b`/`3c`) — **byte-level path resolved 2026-06-04:**
|
||||
`erlang:binary_to_list/1` and `erlang:list_to_binary/1` are now registered
|
||||
in `lib/erlang/runtime.sx` (738/738 conformance, +9 ffi tests). `list_to_binary`
|
||||
is iolist-aware (`[1, <<2,3>>, [4, [5]]]` → `<<1,2,3,4,5>>`); round-trip
|
||||
`list_to_binary(binary_to_list(B)) =:= B` holds. Step 3b on-disk segment
|
||||
writer is unblocked if it uses byte ints directly. Still parked:
|
||||
`atom_to_list`/`integer_to_list` return SX-strings (an opaque OCaml-string
|
||||
type), not Erlang charlists; `$X` char literals decode to `nil` in
|
||||
`parse-number`. Both still block code that wants Erlang-idiomatic
|
||||
`[$h,$i | T]` patterns on atom/integer names.
|
||||
1. **Term codec** (`3b`/`3c`) — **substrate fixes #1 + #2 done 2026-06-04:**
|
||||
`erlang:binary_to_list/1` and `erlang:list_to_binary/1` are registered
|
||||
in `lib/erlang/runtime.sx` (`list_to_binary` is iolist-aware); the
|
||||
tokenizer's `$X` branch now emits the decimal char code, so `[$h, $i | T]`
|
||||
patterns and `list_to_binary([$f,$e,$d])` work end-to-end. 750/750
|
||||
conformance, +9 ffi + +12 eval tests. Step 3b on-disk segment writer
|
||||
has a complete byte-level term ↔ binary path. Still parked (low priority
|
||||
for Milestone 1): `atom_to_list`/`integer_to_list` return SX-strings
|
||||
(an opaque OCaml-string type), not Erlang charlists — only blocks code
|
||||
that wants charlist arithmetic on atom/integer names.
|
||||
|
||||
2. **SX-source eval bridge** — There's no BIF that lets Erlang call into the
|
||||
SX evaluator on a parsed source string. Blocks evaluating the `:schema` /
|
||||
|
||||
Reference in New Issue
Block a user