petrbalvin
d00cbb983a
perf(parse): cut allocations and validate UTF-8 in the scan
...
Per-statement work no longer allocates where it does not need to: parseKeyPath returns the first key component directly, absolute paths and key buffers sit on the parser, the definition maps are created on first write, arrays presize, and a string without escapes is copied out in one piece instead of built byte by byte. Repeated keys share one string across array-of-tables elements through a parser-local intern table whose lookup works on the bytes, so a repeated key costs no allocation.
UTF-8 validity is no longer a whole-input pass before the parser runs: the scan validates where it meets a multi-byte sequence, and a SyntaxError now names the line the invalid byte sits on. TestParseRejectsInvalidUTF8 covers nine positions; docs/API.md describes the new reporting.
Long document: 67 664 to 31 765 allocations per parse, about 51 to about 106 MB/s; representative document: 157 to 104 allocations.
2026-09-20 22:15:10 +02:00
petrbalvin
72f8b21ac4
feat: parse into a Document that keeps order and comments
...
Test / test (push) Successful in 1m34s
Assisted-by: DeepSeek V4.1 Flash
2026-09-20 10:40:57 +02:00
petrbalvin
a6e3e3fe31
feat: add OffsetDateTime, nesting limits and uniform Marshaler dispatch
...
Test / test (push) Successful in 2m18s
Assisted-by: DeepSeek V4.1 Flash
2026-09-19 19:36:24 +02:00
petrbalvin
959eaba4b0
feat(encode): add the InlineTables option
...
Assisted-by: DeepSeek V4.1 Flash
2026-09-19 12:18:30 +02:00
petrbalvin
8f85bb68fa
feat(encode): write the TOML 1.1 output form
...
Assisted-by: DeepSeek V4.1 Flash
2026-09-19 12:18:18 +02:00
petrbalvin
bccaf087c8
feat(cmd): add the encoder mode to the toml-test adapter
...
Test / test (push) Successful in 1m33s
Assisted-by: DeepSeek V4.1 Flash
2026-09-19 11:38:19 +02:00
petrbalvin
815141440e
feat: honour TextMarshaler and TextUnmarshaler by default
...
Test / test (push) Successful in 1m35s
Assisted-by: DeepSeek V4.1 Flash
2026-09-19 02:41:09 +02:00
petrbalvin
9023784da3
fix(decode): decode into a defined string or bool type
...
Assisted-by: DeepSeek V4.1 Flash
2026-09-19 02:40:51 +02:00
petrbalvin
8f0eae6604
docs: drop the TOML 1.0 compatibility promise
...
Assisted-by: DeepSeek V4.1 Flash
2026-09-19 02:24:24 +02:00
petrbalvin
1c7329aeea
build: move the module path to /v2
...
Test / test (push) Successful in 1m32s
Assisted-by: GLM 5.3 Flash
2026-09-19 00:14:39 +02:00
petrbalvin
ad6c32d0c6
chore: prepare release v1.1.0
...
Test / test (push) Successful in 1m32s
Release / gates (push) Successful in 1m21s
Release / release (push) Successful in 52s
Assisted-by: GLM 5.3 Flash
2026-09-18 01:10:08 +02:00
petrbalvin
dfd5d240d2
docs(changelog): drop the stale toml-test run mode
...
Assisted-by: GLM 5.3 Flash
2026-09-18 00:20:31 +02:00
petrbalvin
d365729b37
style(changelog): order the development fixed entries by component
...
Test / test (push) Successful in 1m34s
Assisted-by: GLM 5.3
2026-09-17 23:12:24 +02:00
petrbalvin
53102d70e6
perf(number): skip the rebuild for tokens without underscores
...
Assisted-by: GLM 5.3
2026-09-17 23:12:00 +02:00
petrbalvin
f1a757ec5c
perf(parser): scan the input as bytes instead of runes
...
Assisted-by: GLM 5.3
2026-09-17 23:11:50 +02:00
petrbalvin
3c8ac859c0
fix(decode): report the smallest unknown field deterministically
...
Assisted-by: GLM 5.3
2026-09-17 23:11:38 +02:00
petrbalvin
4def1b3e8b
fix(encode): reject a nil MarshalTOML result
...
Assisted-by: GLM 5.3
2026-09-17 23:11:10 +02:00
petrbalvin
d5327568fb
fix(encode): keep a []any of tables in the value-array form
...
Assisted-by: GLM 5.3
2026-09-17 23:10:35 +02:00
petrbalvin
c485aab227
fix(decode): overflow-check uint and float32 destinations
...
Assisted-by: GLM 5.3
2026-09-17 23:10:24 +02:00
petrbalvin
30b28fe7fc
fix(encode): emit one key when two fields resolve to one name
...
Assisted-by: GLM 5.3
2026-09-17 23:08:42 +02:00
petrbalvin
aaea68efc9
perf(decode): cache struct schemas per type
...
Assisted-by: GLM 5.3
2026-09-17 23:08:14 +02:00
petrbalvin
a8d69d90d5
fix(decode): terminate the schema walk on a self-embedded pointer struct
...
Assisted-by: GLM 5.3
2026-09-17 23:07:53 +02:00
petrbalvin
bb238c98c3
fix(decode): let the later field win an equal-depth name clash
...
Assisted-by: GLM 5.3
2026-09-17 23:07:27 +02:00
petrbalvin
54c6032a9a
fix(encode): propagate invalid UTF-8 key errors from headers and inline tables
...
Assisted-by: GLM 5.3
2026-09-17 23:06:59 +02:00
petrbalvin
ec0d7a0023
fix(encode): fall back from the literal multiline form when unsafe
...
Assisted-by: GLM 5.3
2026-09-17 23:06:25 +02:00
petrbalvin
830f840f44
fix(parser): reset dotted-key and array records per array-of-tables element
...
Assisted-by: GLM 5.3
2026-09-17 23:05:06 +02:00
petrbalvin
696f117c22
fix(parser): reject an array-of-tables header extending a frozen inline table
...
Assisted-by: GLM 5.3
2026-09-17 23:04:49 +02:00
petrbalvin
d2fc31d260
feat: support TOML 1.1
...
Test / test (push) Successful in 1m32s
Assisted-by: GLM 5.3 Flash
2026-09-17 22:06:26 +02:00
petrbalvin
18f1cd51e9
build: upgrade the compliance suite to toml-test v2.2.0
...
Test / test (push) Successful in 1m42s
Assisted-by: GLM 5.3 Flash
2026-09-17 21:30:41 +02:00
petrbalvin
5a270d0879
feat: add the -validate mode to interpres-decode
...
Assisted-by: GLM 5.3 Flash
2026-09-17 21:23:29 +02:00
petrbalvin
3f41266710
feat: typed decode and encode errors with the key path
...
Assisted-by: GLM 5.3 Flash
2026-09-17 21:20:47 +02:00
petrbalvin
fc50e3c49a
fix: decode untagged embedded structs and maps inline
...
Test / test (push) Successful in 1m26s
Assisted-by: GLM 5.3 Flash
2026-09-17 20:05:50 +02:00
petrbalvin
93c36cf376
feat: honour the omitzero and omitempty tag options on encode
...
Assisted-by: GLM 5.3 Flash
2026-09-17 19:57:23 +02:00
petrbalvin
3ac0b1e301
fix: encode mixed arrays with inline table elements
...
Assisted-by: GLM 5.3 Flash
2026-09-17 19:49:50 +02:00
petrbalvin
744c0eb58f
chore: prepare release v1.0.0
...
Test / test (push) Successful in 1m27s
Release / gates (push) Successful in 1m19s
Release / release (push) Successful in 44s
Assisted-by: GLM 5.3 Flash
2026-08-20 08:30:00 +02:00
petrbalvin
d12da6181d
docs: document set and changelog
...
Assisted-by: GLM 5.3 Flash
2026-08-19 18:44:00 +02:00