Skip to content

Releases: bytedance/sonic

v1.7.1

09 Feb 02:27
f87d87d
Compare
Choose a tag to compare

Feature

  • [#350] export Get() API on not-amd64 envs
  • [#354] add more complete function loader. Also support Go 1.20
  • [#358] fallback on unsupported go versions

Full Changelog: v1.7.0...v1.7.1

v1.7.0

10 Jan 06:45
32877b6
Compare
Choose a tag to compare

Feature

  • [#341] (ast) sonic.Get() and ast.Node support not-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

04 Jan 02:40
67cffb1
Compare
Choose a tag to compare

Feature

  • [#341] (ast) ast.Node support not-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

13 Dec 06:15
01c0d36
Compare
Choose a tag to compare

Feature

  • [#305] only use SSE instead of SSE4 to be compatible with old x86 CPU
  • [#306] add dummy interface of pretouch() under not-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

  • [#302] reduce memory pool size of JIT's stack (1~3+MB per P)
  • [#324] reduce type assertions in ast

Full Changelog: v1.5.0...v1.6.0

v1.6.0-rc

07 Nov 03:23
518110b
Compare
Choose a tag to compare
v1.6.0-rc Pre-release
Pre-release

Feature

  • [#325] (decoder) support skipping mismatched-typed value while binding
  • [#320] (decoder) clear corrupt memory when decoding failed
  • [#306] add dummy interface of pretouch() under not-amd64 arch

Bugfix

  • [#305] only use SSE instead of SSE4 to be compatible with old x86 CPU
  • [#314] (ast) iterator panic while traversing the empty object

Optimization

  • [#302] reduce memory pool size of JIT's stack (1~3+MB per P)
  • [#324] (ast) reduce type assertion

Full Changelog: v1.5.0...v1.6.0-rc

v1.5.0

20 Sep 05:51
5e54c02
Compare
Choose a tag to compare

Feature

  • [#294] (ast) support more loose type-casting (breaking change)
  • [#299] move third-party tests into another module

Bugfix

  • [#296][#295] (decoder) StreamDecoder unexpectedly stopped while decoding buffer-truncated numbers

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

08 Sep 08:54
2138136
Compare
Choose a tag to compare

Feature

[#294] (decoder) support looser type-casting (breaking change)

Bugfix

[#295][#296] (decoder) StreamDecoder unexpectedly stop while skipping incomplete number

Full Changelog: v1.4.0...v1.5.0-rc

v1.4.0

22 Aug 09:24
cf08d54
Compare
Choose a tag to compare

Feature

  • [#275] support Go 1.19
  • [#280] adapt to SSE4-only CPU on arch AMD64 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 panic invalid 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 if Node 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

11 Aug 06:51
b36771b
Compare
Choose a tag to compare

Feature

  • [#275] support Go 1.19

v1.3.4

28 Jul 09:58
8b51e75
Compare
Choose a tag to compare

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