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:
parent
fc0f3d3790
commit
4499cedcb8
6 changed files with 222 additions and 39 deletions
7
changes/json-write-file.md
Normal file
7
changes/json-write-file.md
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
bump: minor
|
||||
type: feature
|
||||
**`Json.write_file(value, path)` saves without keeping anything.** It writes the text
|
||||
`Json.encode` would give straight to the file (through `path.tmp` and a rename), built in a buffer
|
||||
the runtime keeps, so a game that saves often holds nothing more for it. `Json.encode` itself is
|
||||
built the same way and makes only the string it returns: it used to join its text with `+`, keeping
|
||||
every piece and every number's text. `examples/lang/json_saves.ludic`: 1000 saves, 0 bytes.
|
||||
Loading…
Add table
Add a link
Reference in a new issue