v1.6.1 — Faster codec, fewer allocations
The codec stops repeating work and allocates less on its busiest path.
Error paths are built only when an error happens
Section titled “Error paths are built only when an error happens”Net.Any built a path string for every key of every table it wrote, only to name
a value if something went wrong. Paths are now composed where an error is
raised, once per container.
Replication sends its patches through Any, so
this is the busiest path in the codec.
Errors name numeric keys
Section titled “Errors name numeric keys”An error about a numeric key in a dictionary now names the key:
before: value[?]after: value[7]One bounds check per array
Section titled “One bounds check per array”An array of fixed-width numbers checked the buffer’s capacity once for the whole run, then again for every element. A 2000-element array now costs 2000 fewer bounds checks in each direction. The single check still covers the whole run before any byte is touched.
Fewer allocations for CFrames
Section titled “Fewer allocations for CFrames”- Packing and unpacking a
CFrameRotno longer allocates tables. Anyno longer allocates a 12-element table for everyCFrameit writes.
The wire format is unchanged: v1.6.0 and v1.6.1 produce the same bytes.
Full changelog
Section titled “Full changelog”Every change in this release is listed in the changelog.