Write readme
This commit is contained in:
31
README.md
31
README.md
@@ -1,11 +1,26 @@
|
|||||||
Template for shared library implemented in c++
|
# Weaseljson
|
||||||
|
|
||||||
|
An rfc8259-compliant streaming json parser
|
||||||
|
|
||||||
# Features
|
# Features
|
||||||
|
|
||||||
- unit tests
|
- SAX-style api
|
||||||
- fuzz targets
|
- No memory allocations during parsing
|
||||||
- benchmarks
|
- O(1) stack memory usage
|
||||||
- CI
|
- Streaming api - no need to buffer the entire document in memory. Parsing is resumed when more data is available
|
||||||
- (x64,arm64) * (linux,macos) support
|
- Strings are unescaped in place before they're presented. No unicode normalization is performed
|
||||||
- no libstdc++ dependency
|
- Robust to crashes with untrusted input
|
||||||
- python bindings
|
|
||||||
|
# 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
|
||||||
|
|||||||
Reference in New Issue
Block a user