Write readme

This commit is contained in:
2025-05-20 12:43:26 -04:00
parent c79b19b24f
commit bde83c0b15

View File

@@ -1,11 +1,26 @@
Template for shared library implemented in c++
# Weaseljson
An rfc8259-compliant streaming json parser
# Features
- unit tests
- fuzz targets
- benchmarks
- CI
- (x64,arm64) * (linux,macos) support
- no libstdc++ dependency
- python bindings
- SAX-style api
- No memory allocations during parsing
- O(1) stack memory usage
- Streaming api - no need to buffer the entire document in memory. Parsing is resumed when more data is available
- Strings are unescaped in place before they're presented. No unicode normalization is performed
- Robust to crashes with untrusted input
# Rfc8259 conformance notes
- There are no limits on number precision. Numbers are only validated syntactically and are presented as is
- Only utf-8 is accepted
- Invalid utf-8 is rejected
- Byte order markers are rejected
- Invalid escaped utf16 surrogate pairs are rejected
- Documents that are too deeply nested are rejected to control memory usage
- Duplicate keys are presented
# Caveats
- Users should be prepared to discard work done during SAX callbacks if the document is ultimately rejected