v1.10.0
Break Change
-
[#464] Due to design bugs, we are sorry to warn you that some behaviors of
ast.Node
have to be changed:- BREAK CHANGE: ast.Unset() now WON'T change ast.Len() and ast.Index()
- BREAK CHANGE: ast.UnsafeArray() and ast.UnsafeMap() are deprecated and user SHOULDN'T modify node based on these API
-
[#393] Due to difficulty of maintaining compatibility with Golang:
- BREAK CHANGE: sonic now only support Go 1.16~1.20, drop Go 1.15 support
Feature
- [#493] support Go1.21.0
- [#471] (ast) add
ast.Visitor
for transversing JSON in-place - [#470] add
Valid()
API
Bugfix
- [#486] possible overflowed instruction while handling
byte
type - [#484] (decoder) avoid scratched memory of returned error
- [#496] (ast) Exist() didn't check Valid() first
- [#498] (ast) drop ast.Node API
UnsafeArray()
andUnsafeMap()
(Break Change)
Optimization
- [#393] refactor
asm2asm
to avoidSIGPROF
crashing, and enable traceback when C function panics - [#464] (ast) use linked chunk as fundamental storage for nodes to keep node pointer valid (Break Change)
- [#464] (ast) avoid malloc when meeting empty values, and inline header chunk into lazy-parsing stack to reduce malloc. The performance of
Parse()\Load()\Interface()
promoted 10~60% - [#475] (last) pass
skipnumber
flag to avoid decoding numbers
New Contributors
- @xumingyukou made their first contribution in #447
- @zhongxinghong made their first contribution in #471
Full Changelog: v1.9.2...v1.10.0