runtime: Json.write_file, and Json.encode through a kept buffer

The encoder appends into RtJsonState's buffer (grown only past the biggest document yet): ints and
Q16.16 fixeds written as digits in place, floats through string() and freed. Json.encode copies the
answer out once; Json.write_file hands the buffer to Fs.write_text (.tmp + rename) and keeps nothing.
json_saves.ludic: exact text, the file equals encode, parse round-trips, 1000 saves grow 0; clean
under MallocScribble. json_quote (the + builder) is gone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Orkun ÇAKILKAYA 2026-09-28 15:32:36 +03:00
parent fc0f3d3790
commit 4499cedcb8
6 changed files with 222 additions and 39 deletions

View file

@ -488,6 +488,7 @@ namespace Value {
}
namespace Json {
alias encode(value) = json_encode
alias write_file(value, path) = json_write_file # encode straight to a file, keeping nothing per call
alias parse(text) = json_parse
alias free(value) = json_free
alias free_all(value) = json_free_all