Feature
- [#275] support Go 1.19
- [#280] adapt to
SSE4-onlyCPU on archAMD64and no longer limit usage on Mac-M1 machine - [#287] add option
MaxInlineDepthfor adjusting compilation inline depth - [#218] (encoder) add encoder option
NoNullSliceOrMap - [#253] (decoder) add option
ValidateStringto validate if string value is UTF8 - [#249] (ast) add more strict casting API
- [#262] (ast) support casting
V_STRINGto number - [#278] (ast) support cast
nullto zero value (break change)
Bugfix
- [#243] (encoder) insufficient buffer size check for
OP_i32and 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)
StreamDecoderreturns 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 ifNodeis 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