Releases: bytedance/sonic
Releases · bytedance/sonic
v1.7.1
v1.7.0
Feature
- [#341] (ast)
sonic.Get()
andast.Node
supportnot-amd64
CPU arch - [#346] (decoder) not clear memory after decoding failed
Bugfix
- [#342] stop
SIGPROF
traceback while calling native functions, in case of crashing - [#336] (encoder) lose pointer-value message for deep-layer struct
- [#343] (encoder) not support concrete-type key implementing
encoding.TextMarshaler
while sorting map
Optimization
- [#345] (ast) using better skipping algorithm,
sonic.Get()
now is 2~9x faster than before
Full Changelog: v1.6.0...v1.7.0
v1.6.1
Feature
- [#341] (ast)
ast.Node
supportnot-amd64
CPU arch - [#342] stop
SIGPROF
traceback while calling native functions
Bugfix
- [#336] (encoder) lose pointer-value message for deep-layer struct
- [#343] (encoder) not support concrete-type key implementing
encoding.TextMarshaler
while sorting map
Full Changelog: v1.6.0...v1.6.1
v1.6.0
Feature
- [#305] only use
SSE
instead ofSSE4
to be compatible with oldx86
CPU - [#306] add dummy interface of
pretouch()
undernot-amd64
arch - [#325] (decoder) support skipping mismatched-typed value while binding
- [#329] support decode json-encoded (with escaping characters) base64 string
Bugfix
- [#314] (ast) iterator panic while traversing the empty object
- [#320] (decoder) clear corrupt memory when decoding failed
Optimization
Full Changelog: v1.5.0...v1.6.0
v1.6.0-rc
Feature
- [#325] (decoder) support skipping mismatched-typed value while binding
- [#320] (decoder) clear corrupt memory when decoding failed
- [#306] add dummy interface of
pretouch()
undernot-amd64
arch
Bugfix
- [#305] only use
SSE
instead ofSSE4
to be compatible with oldx86
CPU - [#314] (ast) iterator panic while traversing the empty object
Optimization
Full Changelog: v1.5.0...v1.6.0-rc
v1.5.0
Feature
- [#294] (ast) support more loose type-casting (breaking change)
- [#299] move third-party tests into another module
Bugfix
Optimization
- [#291] (encoder) faster and more accurate (for float32->float64)
ftoa()
implementation, promoting 5%~50% performance of float encoding
Full Changelog: v1.4.0...v1.5.0
v1.5.0-rc
v1.4.0
Feature
- [#275] support Go 1.19
- [#280] adapt to
SSE4-only
CPU on archAMD64
and no longer limit usage on Mac-M1 machine - [#287] add option
MaxInlineDepth
for adjusting compilation inline depth - [#218] (encoder) add encoder option
NoNullSliceOrMap
- [#253] (decoder) add option
ValidateString
to validate if string value is UTF8 - [#249] (ast) add more strict casting API
- [#262] (ast) support casting
V_STRING
to number - [#278] (ast) support cast
null
to zero value (break change)
Bugfix
- [#243] (encoder) insufficient buffer size check for
OP_i32
and panicinvalid memory address or nil pointer dereference
- [#243] (encoder) marshal escape '\b' and '\f' inconsistently with encoding/json
- [#259] (encoder) handle map without dereferencing pointer when calling
call_marshaler_v
- [#254] (decoder) didn't return io.EOF error when read nothing from io.Reader
- [#261] (decoder) didn't check ',' before object key due to imperfect FSM
- [#267] (decoder)
StreamDecoder
returns error when run out of buffer while skipping value - [#268] (decoder) wrongly set options and panic
can't set OptionUseInt64 and OptionUseNumber both
- [#250] (ast)
checkRaw()
didn't check ifNode
is nil pointer first
Optimization
- [#287] reduce default max inline depth (from 5 to 3) for less compilation time and better performance
- [#237] (encoder) remove bound and loop unrolling in quote
- [#239] (test) add more benchmarks on different structures
Full Changelog: v1.3.0...v1.4.0
v1.3.5
v1.3.4
Feature
[#262] feat: (ast) support casting string to number
Bugfix
[#267] fix: (decoder) StreamDecoder
returns error when run out of buffer while skiping value
[#269] fix: (encoder) insufficient buffer size check for OP_i32
[#268] fix: (decoder) panic on UseInt64
option
Full Changelog: v1.3.3...v1.3.4