Implement portable Arborix container, section directory, nodes section, and Merkle DAG reconstruction utilities in tricu libraries. Add byte/list helper fixes needed for data-first recursion, validate node payloads, duplicate hashes, and closed child references, and expose executable loading from a root hash. Expand binary reader coverage with portable header/section tests, nodes-section parsing, fixture bundle parsing, and execution checks for reconstructed id/not?/map roots. Refresh fixture bundles and remove obsolete fixtures.
52 lines
941 B
Plaintext
52 lines
941 B
Plaintext
!import "base.tri" !Local
|
|
!import "list.tri" !Local
|
|
|
|
nothing = t
|
|
just = x : t x
|
|
|
|
bytesNil? = emptyList?
|
|
|
|
bytesHead = matchList nothing (h _ : just h)
|
|
|
|
bytesTail = matchList nothing (_ r : just r)
|
|
|
|
byteEq? = equal?
|
|
bytesLength = length
|
|
bytesAppend = append
|
|
|
|
bytesTake_ = y (self remaining n i :
|
|
matchList
|
|
t
|
|
(h r :
|
|
matchBool
|
|
t
|
|
(pair h (self r n (succ i)))
|
|
(equal? i n))
|
|
remaining)
|
|
|
|
bytesTake = n bytes : bytesTake_ bytes n 0
|
|
|
|
bytesDrop_ = y (self remaining n i :
|
|
matchList
|
|
t
|
|
(_ r :
|
|
matchBool
|
|
remaining
|
|
(self r n (succ i))
|
|
(equal? i n))
|
|
remaining)
|
|
|
|
bytesDrop = n bytes : bytesDrop_ bytes n 0
|
|
|
|
bytesSplitAt = n bytes : pair (bytesTake n bytes) (bytesDrop n bytes)
|
|
|
|
bytesEq? = y (self xs ys :
|
|
matchList
|
|
(matchList true (_ _ : false) ys)
|
|
(xh xt :
|
|
matchList
|
|
false
|
|
(yh yt : and? (byteEq? xh yh) (self xt yt))
|
|
ys)
|
|
xs)
|