1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Fixes from the 2026-11 independent review. No breaking changes; MSRV stays
1.85.
`LengthPrefixed::new` and `Delimited::new` build unbounded framers: a `U32`
length prefix allows 4 GiB per frame and a delimiter has no limit at all,
while `VarintPrefixed::new` is capped at 8 MiB. A streaming reader in front
of a peer keeps buffering until a frame completes, so the unbounded
constructors let one connection hold as much memory as the prefix can
describe.
1.2.0 adds:
`bounded(..)` (8 MiB / 64 KiB) is unchanged.
`LengthPrefixed::new` and `Delimited::new` are **deprecated**. They behave
exactly as before in 1.x. Replace them with `bounded` or `bounded_to` for
peer input, or with `unbounded` where something else already bounds the
input. In 2.0, `new` becomes bounded.
The default multi-byte delimiter search scanned for the delimiter's first
byte and compared at every hit, so input built from that byte scanned about
200 times slower than ordinary input. It now scans for the last byte and
switches to a Horspool skip table after a few failed candidates. Results are
identical; a new test checks it against a naive search on dense input and
counts compares on hostile input.
-