Releases: bytedance/sonic
Releases · bytedance/sonic
v1.10.3-rc
What's Changed
- fix: checked if a interface is empty by its value field instead of type field by @AsterDY in #540
- fix: didn't pass non-exist value when call
Node.Interface()
by @AsterDY in #544 - fix: didn't fully reuse buffer memory by @AsterDY in #547
- opt: refactor streaming decoder to fully use buffer by @AsterDY in #550
- opt: eliminate race test errors by @AsterDY in #545
- opt: use lockfree to register new modules by @felix021 in #552
- chore: use out.String() instead of string(out.Bytes()) by @testwill in #557
New Contributors
Full Changelog: v1.10.2...v1.10.3-rc
v1.10.2-unsafe_back
Only used for users who doesn't care about break change on Node.UnsafeArray()
and Node.UnsafeMap()
v1.10.2
Bugfix
- [#521] use int64 for MaxInt48 to compile in x86 arch
- [#530] unnecessary ptr check
json.Unmarshaler
- [#531] missing write-barrier when truncate empty slice
- [#533] not use rbp in JIT
New Contributors
- @ancientmodern made their first contribution in #528
- @CrazyHarb made their first contribution in #521
Full Changelog: v1.10.1...v1.10.2
v1.10.1
Feature
- [#511] (ast) support sort keys on non-object node
- [#527] (encoder) Add
NoValidateJSONMarshaler
option
Bugfix
- [#504] (ast) check error before
Set/Unset/Add()
- [#520] (native) over boundary bugs of skip number and tolower in native c
New Contributors
- @jimyag made their first contribution in #501
- @hitzhangjie made their first contribution in #505
- @xiezheng-XD made their first contribution in #516
- @andeya made their first contribution in #527
Full Changelog: v1.10.0...v1.10.1
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
v1.10.0-rc2
Optimization
- [#475] (ast) pass
skipnumber
flag to avoid decoding numbers - [#483] update base64x to finish asm2asm refactor
Feature
- [#471] (ast) add
ast.Visitor
for iterating JSON into custom generic data containers in-place
New Contributors
- @zhongxinghong made their first contribution in #471
Full Changelog: v1.10.0-rc...v1.10.0-rc2
v1.10.0-rc
Bugfix
- [#464] use linked chunk as fundamental storage for nodes, to keep returned
ast.Node
pointer valid.- BREAK CHANGE:
ast.Unset()
now WON'T changeast.Len()
andast.Index()
- BREAK CHANGE:
ast.UnsafeArray()
andast.UnsafeMap()
are deprecated and user SHOULDN'T modify node based on these API
- BREAK CHANGE:
- [#393] refactor
asm2asm
to avoid crashing when the program gets panic or profiled- BREAK CHANGE: sonic now only support Go 1.16~1.20
Feature
- [#470] add
Valid()
API on main package
Optimization
- [#464] reduce memory allocation when loading nodes,
ast.Load()
performance now speeds up 20%~60% - [#393]: call native C function by register-based ABI in
ast.Node
New Contributors
- @xumingyukou made their first contribution in #447
Full Changelog: v1.9.2...v1.10.0-rc
v1.9.2
Bugfix
- [#446] refactor sonic/loader package and fix funcname() bug
- [#457] fix only first opt effective on
internal/encoder/Pretouch()
- [#461] fix compatibilty of overflowed float32 with STD
Optimization
- [#444] try checking integrity of json stream first instead of decoding
New Contributors
- @baijinping made their first contribution in #457
Full Changelog: v1.9.1...v1.9.2
v1.9.1
v1.9.0
Feature
- [#430]
decoder
andencoder
package support fallback on not-supported envs
Bugfix
- [#433] incorrectly use
mov
lagreimm64
to memory instruction in jit
Doc
- [#428] add Chinese translation for introduction & readme
New Contributors
- @Dorapower made their first contribution in #428
Full Changelog: v1.8.10...v1.9.0