vcdiff: new package for RFC 3284 binary deltas
A pure-OCaml encoder and decoder for the VCDIFF generic differencing
format: diff computes a delta with a greedy block-hash matcher (the
ocaml-git pack-delta approach), apply reconstructs the target with
overlap-growing copies, and deltas decode to plain values (windows of
typed ADD/RUN/COPY instructions, address caches resolved) that
re-encode through the default code table, including the paired
ADD/COPY entries and cheapest-mode address selection.
The decoder accepts the xdelta3 VCD_APPHEADER and VCD_ADLER32
extensions and rejects secondary compression and custom code tables
with a typed Unsupported error. Errors are a facade over Loc.Error
with window/instruction context frames.
Follows the ocaml-encodings shape (Sort/Error/Value layers, six IO
verbs, mdx-checked docs); the codec-combinator and cursor layers do
not apply: a delta is a flat instruction program, not a recursive
data model, so the Value layer is the whole AST.
Tests are hand-assembled byte vectors anchored on RFC 3284 sections
4-5 (default code table indexes, all address modes, near/same caches,
VCD_TARGET windows, multi-byte integers) plus hostile inputs, and
alcobar fuzzing of diff/apply identity, value roundtrips and decoder
totality. Integers reuse Varint.Sdnv (RFC 6256 is the same big-endian
base-128 encoding RFC 3284 section 2 specifies); window checksums use
the new Crc.adler32. Searched llms.txt and the tree first: the only
delta code was the git-pack-format encoder private to ocaml-git, and
no bsdiff/VCDIFF/chunking package exists. xdelta3 interop traces and
ocaml-bsdiff are scoped in the local TODO.
vcdiff: new package for RFC 3284 binary deltas
A pure-OCaml encoder and decoder for the VCDIFF generic differencing
format: diff computes a delta with a greedy block-hash matcher (the
ocaml-git pack-delta approach), apply reconstructs the target with
overlap-growing copies, and deltas decode to plain values (windows of
typed ADD/RUN/COPY instructions, address caches resolved) that
re-encode through the default code table, including the paired
ADD/COPY entries and cheapest-mode address selection.
The decoder accepts the xdelta3 VCD_APPHEADER and VCD_ADLER32
extensions and rejects secondary compression and custom code tables
with a typed Unsupported error. Errors are a facade over Loc.Error
with window/instruction context frames.
Follows the ocaml-encodings shape (Sort/Error/Value layers, six IO
verbs, mdx-checked docs); the codec-combinator and cursor layers do
not apply: a delta is a flat instruction program, not a recursive
data model, so the Value layer is the whole AST.
Tests are hand-assembled byte vectors anchored on RFC 3284 sections
4-5 (default code table indexes, all address modes, near/same caches,
VCD_TARGET windows, multi-byte integers) plus hostile inputs, and
alcobar fuzzing of diff/apply identity, value roundtrips and decoder
totality. Integers reuse Varint.Sdnv (RFC 6256 is the same big-endian
base-128 encoding RFC 3284 section 2 specifies); window checksums use
the new Crc.adler32. Searched llms.txt and the tree first: the only
delta code was the git-pack-format encoder private to ocaml-git, and
no bsdiff/VCDIFF/chunking package exists. xdelta3 interop traces and
ocaml-bsdiff are scoped in the local TODO.
vcdiff: new package for RFC 3284 binary deltas
A pure-OCaml encoder and decoder for the VCDIFF generic differencing
format: diff computes a delta with a greedy block-hash matcher (the
ocaml-git pack-delta approach), apply reconstructs the target with
overlap-growing copies, and deltas decode to plain values (windows of
typed ADD/RUN/COPY instructions, address caches resolved) that
re-encode through the default code table, including the paired
ADD/COPY entries and cheapest-mode address selection.
The decoder accepts the xdelta3 VCD_APPHEADER and VCD_ADLER32
extensions and rejects secondary compression and custom code tables
with a typed Unsupported error. Errors are a facade over Loc.Error
with window/instruction context frames.
Follows the ocaml-encodings shape (Sort/Error/Value layers, six IO
verbs, mdx-checked docs); the codec-combinator and cursor layers do
not apply: a delta is a flat instruction program, not a recursive
data model, so the Value layer is the whole AST.
Tests are hand-assembled byte vectors anchored on RFC 3284 sections
4-5 (default code table indexes, all address modes, near/same caches,
VCD_TARGET windows, multi-byte integers) plus hostile inputs, and
alcobar fuzzing of diff/apply identity, value roundtrips and decoder
totality. Integers reuse Varint.Sdnv (RFC 6256 is the same big-endian
base-128 encoding RFC 3284 section 2 specifies); window checksums use
the new Crc.adler32. Searched llms.txt and the tree first: the only
delta code was the git-pack-format encoder private to ocaml-git, and
no bsdiff/VCDIFF/chunking package exists. xdelta3 interop traces and
ocaml-bsdiff are scoped in the local TODO.
vcdiff: new package for RFC 3284 binary deltas
A pure-OCaml encoder and decoder for the VCDIFF generic differencing
format: diff computes a delta with a greedy block-hash matcher (the
ocaml-git pack-delta approach), apply reconstructs the target with
overlap-growing copies, and deltas decode to plain values (windows of
typed ADD/RUN/COPY instructions, address caches resolved) that
re-encode through the default code table, including the paired
ADD/COPY entries and cheapest-mode address selection.
The decoder accepts the xdelta3 VCD_APPHEADER and VCD_ADLER32
extensions and rejects secondary compression and custom code tables
with a typed Unsupported error. Errors are a facade over Loc.Error
with window/instruction context frames.
Follows the ocaml-encodings shape (Sort/Error/Value layers, six IO
verbs, mdx-checked docs); the codec-combinator and cursor layers do
not apply: a delta is a flat instruction program, not a recursive
data model, so the Value layer is the whole AST.
Tests are hand-assembled byte vectors anchored on RFC 3284 sections
4-5 (default code table indexes, all address modes, near/same caches,
VCD_TARGET windows, multi-byte integers) plus hostile inputs, and
alcobar fuzzing of diff/apply identity, value roundtrips and decoder
totality. Integers reuse Varint.Sdnv (RFC 6256 is the same big-endian
base-128 encoding RFC 3284 section 2 specifies); window checksums use
the new Crc.adler32. Searched llms.txt and the tree first: the only
delta code was the git-pack-format encoder private to ocaml-git, and
no bsdiff/VCDIFF/chunking package exists. xdelta3 interop traces and
ocaml-bsdiff are scoped in the local TODO.
vcdiff: new package for RFC 3284 binary deltas
A pure-OCaml encoder and decoder for the VCDIFF generic differencing
format: diff computes a delta with a greedy block-hash matcher (the
ocaml-git pack-delta approach), apply reconstructs the target with
overlap-growing copies, and deltas decode to plain values (windows of
typed ADD/RUN/COPY instructions, address caches resolved) that
re-encode through the default code table, including the paired
ADD/COPY entries and cheapest-mode address selection.
The decoder accepts the xdelta3 VCD_APPHEADER and VCD_ADLER32
extensions and rejects secondary compression and custom code tables
with a typed Unsupported error. Errors are a facade over Loc.Error
with window/instruction context frames.
Follows the ocaml-encodings shape (Sort/Error/Value layers, six IO
verbs, mdx-checked docs); the codec-combinator and cursor layers do
not apply: a delta is a flat instruction program, not a recursive
data model, so the Value layer is the whole AST.
Tests are hand-assembled byte vectors anchored on RFC 3284 sections
4-5 (default code table indexes, all address modes, near/same caches,
VCD_TARGET windows, multi-byte integers) plus hostile inputs, and
alcobar fuzzing of diff/apply identity, value roundtrips and decoder
totality. Integers reuse Varint.Sdnv (RFC 6256 is the same big-endian
base-128 encoding RFC 3284 section 2 specifies); window checksums use
the new Crc.adler32. Searched llms.txt and the tree first: the only
delta code was the git-pack-format encoder private to ocaml-git, and
no bsdiff/VCDIFF/chunking package exists. xdelta3 interop traces and
ocaml-bsdiff are scoped in the local TODO.
vcdiff: new package for RFC 3284 binary deltas
A pure-OCaml encoder and decoder for the VCDIFF generic differencing
format: diff computes a delta with a greedy block-hash matcher (the
ocaml-git pack-delta approach), apply reconstructs the target with
overlap-growing copies, and deltas decode to plain values (windows of
typed ADD/RUN/COPY instructions, address caches resolved) that
re-encode through the default code table, including the paired
ADD/COPY entries and cheapest-mode address selection.
The decoder accepts the xdelta3 VCD_APPHEADER and VCD_ADLER32
extensions and rejects secondary compression and custom code tables
with a typed Unsupported error. Errors are a facade over Loc.Error
with window/instruction context frames.
Follows the ocaml-encodings shape (Sort/Error/Value layers, six IO
verbs, mdx-checked docs); the codec-combinator and cursor layers do
not apply: a delta is a flat instruction program, not a recursive
data model, so the Value layer is the whole AST.
Tests are hand-assembled byte vectors anchored on RFC 3284 sections
4-5 (default code table indexes, all address modes, near/same caches,
VCD_TARGET windows, multi-byte integers) plus hostile inputs, and
alcobar fuzzing of diff/apply identity, value roundtrips and decoder
totality. Integers reuse Varint.Sdnv (RFC 6256 is the same big-endian
base-128 encoding RFC 3284 section 2 specifies); window checksums use
the new Crc.adler32. Searched llms.txt and the tree first: the only
delta code was the git-pack-format encoder private to ocaml-git, and
no bsdiff/VCDIFF/chunking package exists. xdelta3 interop traces and
ocaml-bsdiff are scoped in the local TODO.