perf(parse): cut allocations and validate UTF-8 in the scan
This commit is contained in:
@@ -74,6 +74,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
- The module path carries the /v2 suffix the Go toolchain requires of
|
||||
every major version 2 module: imports change to
|
||||
`sourcedock.dev/petrbalvin/interpres/v2`.
|
||||
- Input that is not valid UTF-8 is now rejected where the parser's scan
|
||||
meets the invalid byte, with a `SyntaxError` naming that line, instead of
|
||||
a whole-input check that always reported line 1. Invalid input is still
|
||||
rejected; the reported location is now the byte's own.
|
||||
|
||||
**Performance**
|
||||
|
||||
- Parsing is faster than in 1.1.0 while carrying the new document layer:
|
||||
the suite's representative document decodes at about 79 MB/s with 104
|
||||
allocations per call, and the long array-of-tables document at about
|
||||
106 MB/s against 56 MB/s in 1.1.0, with allocations on that document
|
||||
halved from 67 664 to 31 765. Date-time tokens are validated by a byte
|
||||
scan instead of regular expressions, repeated keys share one string
|
||||
across array-of-tables elements, and per-statement buffers are reused.
|
||||
|
||||
### Fixed
|
||||
|
||||
|
||||
Reference in New Issue
Block a user