2025-11-14 - 2026-11-14
Overview
29 Pull requests merged by 2 users
Merged
#72 parser3: keep the stackSize needed by a document independent of chunking (reserve transient token slots)
Merged
#65 schemagen: reject required entries with no matching properties key
Merged
#58 schemagen: reject absent additionalProperties
Merged
#57 Fix schemagen integer parser rejecting zero with negative exponents
Merged
#54 Handle null parser in WeaselJsonParser_parse
Merged
#53 make WeaselJson_OVERFLOW a terminal state like WeaselJson_REJECT
Merged
#50 schemagen: add regression test for nullable cyclic $ref targets
Merged
#49 schemagen: reject self-referential array $ref cycles instead of crashing
Merged
#48 schemagen: escape control characters in generated C++ string literals
Merged
#47 schemagen: fix quadratic leading-zero strip in integer fallback
Merged
#46 schemagen: handle WeaselJsonParser_create failure in RootBuilder
Merged
#45 Include <cstdint> in json_value.h for uint8_t
Merged
#44 python: raise OSError when shared library is missing
Merged
#42 Handle null parser in WeaselJsonParser_reset and _destroy
Merged
#32 schemagen: reject scalar root values when root schema is object/array
Merged
#31 schemagen: cache non-object $defs entries to avoid duplicate types
Merged
#30 fix schemagen integer parsing boundary bugs
Merged
#28 schemagen: drop support for additionalProperties: true
Merged
#27 schemagen: reserve generated Root/Skip/RootScalar and avoid Kind/ArrN collisions
Merged
#29 schemagen: fix nullable root types (#13)
Merged
#25 Reject negative lengths in WeaselJsonParser_parse
Merged
#26 check WeaselJsonParser_create return value in Python bindings
Merged
#22 schemagen: add C++20 keywords to the C++ keyword allow-list
Merged
#15 Make parser reject state sticky after WeaselJson_REJECT
Merged
#9 schemagen: support objects with >32 properties
Merged
#10 Reset transient parser state in Parser3::reset
Merged
#8 schemagen: keep null elements in arrays with nullable item types
Merged
#11 schemagen: deduplicate enum constants that collide after sanitization
Merged
#7 Python bindings: add missing on_key_data callback
1 Pull request proposed by 1 user
Proposed
#80 Work around aarch64+ASan clang preserve_none miscompile (#78)
32 Issues closed from 2 users
Closed
#71 WeaselJson_OVERFLOW depends on chunk framing: partially-parsed literals and \u escapes push tokens onto the nesting stack, so the same document is accepted whole but OVERFLOWs when streamed
Closed
#63 schemagen: required entries with no matching properties key are silently dropped - generated parser accepts schema-invalid documents
Closed
#55 schemagen: absent additionalProperties is not rejected at generation (contradicts README) and silently rejects extra properties
Closed
#56 schemagen integer parser rejects valid zero values with negative exponents (e.g. 0e-2)
Closed
#51 WeaselJsonParser_parse crashes on null parser
Closed
#52 After WeaselJson_OVERFLOW, a following EOF call can return WeaselJson_OK for an incomplete document
Closed
#14 schemagen drops nullability on cyclic $ref targets
Closed
#33 schemagen crashes (RecursionError) on cyclic array $ref targets
Closed
#35 schemagen emits unescaped control characters in generated C++ string literals
Closed
#34 schemagen integer parser has quadratic complexity for fractional leading zeros
Closed
#36 Generated RootBuilder dereferences null when WeaselJsonParser_create fails
Closed
#40 EOF flush for scalars ending at chunk boundary subtracts null pointers
Closed
#37 src/json_value.h uses uint8_t without including <cstdint>
Closed
#38 Python WeaselJsonParser constructor calls sys.exit(1) when the shared library is missing
Closed
#41 WeaselJsonParser_reset / _destroy crash on null parser
Closed
#39 Parser accepts invalid UTF-16 surrogate pairs (low-low) as valid
Closed
#16 schemagen builder crashes on scalar root values when root schema is object/array
Closed
#17 schemagen emits duplicate enum/vector types when the same non-object $defs entry is referenced multiple times
Closed
#19 schemagen integer parsing accepts out-of-range negatives and rejects valid positive boundary values
Closed
#20 schemagen builder accepts duplicate unknown keys in non-strict objects
Closed
#21 schemagen generated Root alias and Kind enum can collide with user-defined names
Closed
#13 schemagen generates broken code for nullable root types
Closed
#24 WeaselJsonParser_parse accepts negative len, causing undefined behavior
Closed
#23 Python bindings do not check for failed parser creation, causing segfaults
Closed
#18 schemagen C++ keyword allow-list is missing C++20 keywords
Closed
#12 Parser does not stay in REJECT state after returning WeaselJson_REJECT
Closed
#3 schemagen breaks required/duplicate checks for objects with >32 properties
Closed
#2 WeaselJsonParser_reset does not clear inKey, misrouting string callbacks
Closed
#5 schemagen drops null elements from arrays with nullable item types
Closed
#4 schemagen produces duplicate enum constants for distinct enum values
Closed
#6 Python bindings (weaseljson.py) omit on_key_data and misalign the C callbacks struct
Closed
#1 Use a trampoline to avoid stack overflow if the musttail attribute is not available
49 Issues created by 1 user
Opened
#1 Use a trampoline to avoid stack overflow if the musttail attribute is not available
Opened
#2 WeaselJsonParser_reset does not clear inKey, misrouting string callbacks
Opened
#3 schemagen breaks required/duplicate checks for objects with >32 properties
Opened
#4 schemagen produces duplicate enum constants for distinct enum values
Opened
#5 schemagen drops null elements from arrays with nullable item types
Opened
#6 Python bindings (weaseljson.py) omit on_key_data and misalign the C callbacks struct
Opened
#12 Parser does not stay in REJECT state after returning WeaselJson_REJECT
Opened
#13 schemagen generates broken code for nullable root types
Opened
#14 schemagen drops nullability on cyclic $ref targets
Opened
#16 schemagen builder crashes on scalar root values when root schema is object/array
Opened
#17 schemagen emits duplicate enum/vector types when the same non-object $defs entry is referenced multiple times
Opened
#18 schemagen C++ keyword allow-list is missing C++20 keywords
Opened
#19 schemagen integer parsing accepts out-of-range negatives and rejects valid positive boundary values
Opened
#20 schemagen builder accepts duplicate unknown keys in non-strict objects
Opened
#21 schemagen generated Root alias and Kind enum can collide with user-defined names
Opened
#23 Python bindings do not check for failed parser creation, causing segfaults
Opened
#24 WeaselJsonParser_parse accepts negative len, causing undefined behavior
Opened
#33 schemagen crashes (RecursionError) on cyclic array $ref targets
Opened
#34 schemagen integer parser has quadratic complexity for fractional leading zeros
Opened
#35 schemagen emits unescaped control characters in generated C++ string literals
Opened
#36 Generated RootBuilder dereferences null when WeaselJsonParser_create fails
Opened
#37 src/json_value.h uses uint8_t without including <cstdint>
Opened
#38 Python WeaselJsonParser constructor calls sys.exit(1) when the shared library is missing
Opened
#39 Parser accepts invalid UTF-16 surrogate pairs (low-low) as valid
Opened
#40 EOF flush for scalars ending at chunk boundary subtracts null pointers
Opened
#41 WeaselJsonParser_reset / _destroy crash on null parser
Opened
#51 WeaselJsonParser_parse crashes on null parser
Opened
#52 After WeaselJson_OVERFLOW, a following EOF call can return WeaselJson_OK for an incomplete document
Opened
#55 schemagen: absent additionalProperties is not rejected at generation (contradicts README) and silently rejects extra properties
Opened
#56 schemagen integer parser rejects valid zero values with negative exponents (e.g. 0e-2)
Opened
#59 schemagen emits type names starting with a digit for property keys beginning with a digit (generated code does not compile)
Opened
#60 schemagen emits type names with non-identifier characters (e.g. '.', '+', '/') for $defs/property names containing them (generated code does not compile)
Opened
#61 schemagen crashes / emits non-compiling code for nullable root object reached via $ref that is referenced in a cycle
Opened
#62 schemagen _CPP_KEYWORDS list is missing C++ keywords (mutable, wchar_t, char8_t, char16_t, char32_t, noexcept, typeid, *_cast, ...) — generated code does not compile
Opened
#63 schemagen: required entries with no matching properties key are silently dropped - generated parser accepts schema-invalid documents
Opened
#64 schemagen: arrays of booleans map to std::vector<bool> whose back() is a proxy rvalue — generated code does not compile
Opened
#66 schemagen: U+0000 in property keys / enum values generates string literals with an embedded NUL byte — matchKey/enum matching misroutes values and rejects schema-valid input
Opened
#67 schemagen: enum class Kind : uint8_t overflows for schemas with more than 256 object/array kinds - generated header does not compile
Opened
#68 schemagen: a CamelCase property key collides with the generated type name of its value (generated code does not compile)
Opened
#69 schemagen: a property/$defs name that camel-cases to RootBuilder collides with the generated builder class (generated header does not compile)
Opened
#70 schemagen silently drops validation-only JSON Schema keywords (minimum, pattern, minLength, uniqueItems, ...), so generated parsers return WeaselJson_OK for schema-invalid documents
Opened
#71 WeaselJson_OVERFLOW depends on chunk framing: partially-parsed literals and \u escapes push tokens onto the nesting stack, so the same document is accepted whole but OVERFLOWs when streamed
Opened
#73 schemagen: generated integer parser overflows int64 (UB) when a saturated negative exponent is combined with the fraction
Opened
#74 schemagen: a cycle of bare $ref aliases crashes with an unhandled RecursionError instead of a GenError
Opened
#75 schemagen: $defs and definitions are merged into one namespace, so a $ref can silently resolve to the wrong definition
Opened
#76 schemagen: generated number parser rejects valid JSON numbers that underflow double (e.g. 1e-400) with WeaselJson_REJECT
Opened
#77 schemagen: object types named Kind, Cat, Frame or SlotInfo are shadowed by RootBuilder's private member types (generated header does not compile)
Opened
#78 aarch64 + ASan: clang miscompiles preserve_none (x19 frame-base clobber); parser segfaults on valid input
Opened
#79 weaseljson.py: WeaselJsonParser leaks the C parser when garbage-collected without close() (no finalizer)