Revision history for JSONL
0.1.6 2026-08-21T23:47:32+01:00
- Records are now written as BYTES — UTF-8 JSON plus one 0x0A — through
IO::Handle.write, bypassing the handle's encoder entirely. This is
the third and final round with Windows CRLF: 0.1.4 passed
:!translate-nl to open (not an open argument; silently swallowed by
%_), 0.1.5 re-set it through .encoding (which short-circuits before
reading :translate-nl when the encoding name is unchanged) — both
no-ops, both caught by the byte test on Windows CI. Bytes have no
trapdoors. Works on any handle, text or binary; .write is ordered
with a caller's own .say on a shared handle. Output is UTF-8
regardless of the handle's encoding, which is what JSONL is. The
closed-handle check .say performed and .write does not is supplied
by the writer, so a write through a closed handle still throws the
typed X::IO::Closed rather than a raw VM error.
- The byte test now also drives a handle opened :nl-out("\r\n") — the
shape of the Windows failure, reproduced on every platform — so the
immunity is proven without a Windows box.
0.1.5 2026-08-21T23:27:29+01:00
- Writer output really is byte-identical on every platform now. The
0.1.4 fix passed :!translate-nl to open, which is not an open
argument at all — it lands in the implicit %_ and is silently
swallowed, so Windows kept writing CRLF (caught by the 0.1.4 byte
test on Windows CI). The handle's encoder is built translating by
default and the one supported off-switch is rebuilding it through
.encoding(:!translate-nl), which the writer now does for handles it
opens AND for a caller-supplied :handle at construction. The byte
test now covers both modes.
0.1.4 2026-08-21T23:16:18+01:00
- Writer output is byte-identical on every platform: path-mode handles
are opened :!translate-nl, so the "\n" record separator reaches the
file as one 0x0A byte on Windows too instead of being rewritten to
CRLF by the platform's default newline translation. A caller-supplied
:handle keeps whatever translation it was opened with; open it
:!translate-nl for deterministic output.
0.1.3 2026-08-09T19:40:27+01:00
- Added opt-in :flush to JSONL::Writer for handle-mode durability
(flushes to disk after every line so a crash loses at most the
in-flight line)
0.1.2 2026-04-29T23:45:10+01:00
- Bump Github Actions to use node 24+
0.1.1 2026-04-13T17:04:53+01:00
- Added auth specifiers to META6.json dependencies
0.1.0 2026-04-07T18:33:26+01:00
- Initial release
- Reader with lazy streaming, head/tail/grep/sample/summary/schema
- Writer with sorted keys, append mode
- Editor with update-at/delete-at/insert-at/transform
- Line class with hash-like and array-like access
- Strict and lenient modes for blank lines and malformed JSON
- File and IO::Handle input/output support