Recent Releases of https://github.com/bytedance/sonic

https://github.com/bytedance/sonic - v1.14.0

What's Changed

  • fix: trim the trailing whitespace for raw json value by @liuq19 in https://github.com/bytedance/sonic/pull/806
  • feat: support go1.25 by @AsterDY in https://github.com/bytedance/sonic/pull/808
  • fix: check trailing space for 'native.SkipOneFast' by @AsterDY in https://github.com/bytedance/sonic/pull/812

Full Changelog: https://github.com/bytedance/sonic/compare/v1.13.3...v1.14.0

- Go
Published by AsterDY 11 months ago

https://github.com/bytedance/sonic - v1.14.0-rc1

What's Changed

  • fix: trim the trailing whitespace for raw json value by @liuq19 in https://github.com/bytedance/sonic/pull/806
  • feat: support go1.25 by @AsterDY in https://github.com/bytedance/sonic/pull/808

Full Changelog: https://github.com/bytedance/sonic/compare/v1.13.3...v1.14.0-rc1

- Go
Published by AsterDY 12 months ago

https://github.com/bytedance/sonic - v1.13.3

What's Changed

  • chore: remove NoQuoteTextMarshaler from ConfigFastest and export … by @AsterDY in https://github.com/bytedance/sonic/pull/781
  • fix: code and comment typos by @musvaage in https://github.com/bytedance/sonic/pull/783
  • fix(git): add lacking fuzz/go-fuzz-corpus submodule by @zchee in https://github.com/bytedance/sonic/pull/784
  • opt:(encoder) use std strconv.AppendInt for better performance on arm by @AsterDY in https://github.com/bytedance/sonic/pull/789
  • fix: not panic when marshal map key that is bool by @liuq19 in https://github.com/bytedance/sonic/pull/795
  • fix: typo in ast/node.go doc comment by @eomhs in https://github.com/bytedance/sonic/pull/793
  • feat:(ast) add Node.StrictBool by @AsterDY in https://github.com/bytedance/sonic/pull/801
  • fix: pass io.Reader's error to StreamDecoder by @AsterDY in https://github.com/bytedance/sonic/pull/802
  • fix(compat): should return error when unmarshaling json with trailing chars by @liuq19 in https://github.com/bytedance/sonic/pull/803

New Contributors

  • @musvaage made their first contribution in https://github.com/bytedance/sonic/pull/783
  • @zchee made their first contribution in https://github.com/bytedance/sonic/pull/784
  • @eomhs made their first contribution in https://github.com/bytedance/sonic/pull/793

Full Changelog: https://github.com/bytedance/sonic/compare/v1.13.2...v1.13.3

- Go
Published by AsterDY about 1 year ago

https://github.com/bytedance/sonic - v1.13.2

What's Changed

  • fix(amd64) bugs when parsing into nil-iface by @liuq19 in https://github.com/bytedance/sonic/pull/776
  • fix(aarch64): bugs when parsing into []byte by @liuq19 in https://github.com/bytedance/sonic/pull/776
  • fix(aarch64): unmarshal into []json.Number by @liuq19 in https://github.com/bytedance/sonic/pull/779

Full Changelog: https://github.com/bytedance/sonic/compare/v1.13.1...v1.13.2

- Go
Published by AsterDY about 1 year ago

https://github.com/bytedance/sonic - v1.13.1

What's Changed

  • fix(aarch64): avoid using the boundary pointer of an array by @liuq19 in https://github.com/bytedance/sonic/pull/763
  • fix: Write version warning to stderr by @roysc in https://github.com/bytedance/sonic/pull/761
  • feat: support golang 1.24 by @liuq19 in https://github.com/bytedance/sonic/pull/741
  • fix(compat): duplicate description by @y1jiong in https://github.com/bytedance/sonic/pull/767
  • chore: add notice for go1.24.0 on README by @AsterDY in https://github.com/bytedance/sonic/pull/766
  • fix: loader version by @liuq19 in https://github.com/bytedance/sonic/pull/770

New Contributors

  • @roysc made their first contribution in https://github.com/bytedance/sonic/pull/761
  • @y1jiong made their first contribution in https://github.com/bytedance/sonic/pull/767

Full Changelog: https://github.com/bytedance/sonic/compare/v1.12.10...v1.13.1

- Go
Published by AsterDY over 1 year ago

https://github.com/bytedance/sonic - v1.12.10

Bugfix

  • fix(aarch64): support parse map that key is float by @liuq19 in https://github.com/bytedance/sonic/pull/748
  • fix(aarch64): bug when unmarshal into prefilled interface slice by @liuq19 in https://github.com/bytedance/sonic/pull/751
  • fix: bug when marshal nil interface{} that contains not-indirect value by @liuq19 in https://github.com/bytedance/sonic/pull/756
  • fix(loader): invalid binary length in stackmap by @liuq19 in https://github.com/bytedance/sonic/pull/754
  • fix(aarch64): bug when unmarshal into non-nil interface by @liuq19 in https://github.com/bytedance/sonic/pull/759
  • fix bug when serde with unsupported type by @liuq19 in https://github.com/bytedance/sonic/pull/757

Full Changelog: https://github.com/bytedance/sonic/compare/v1.12.9...v1.12.10

- Go
Published by AsterDY over 1 year ago

https://github.com/bytedance/sonic - v1.12.9

What's Changed

BugFix( for aarch64)

  • fix crash cause by sigprof , not useX28 register in arm64 of native C [PR: #746, Issue: #743]
  • fix bug when parsing invalid json that contains unescaped control chars [PR: #745, Issue: #739]
  • fix bug when parsing large json [PR: #745, Issue: #744]

Chore

  • chore: fix ci by @liuq19 in https://github.com/bytedance/sonic/pull/740
  • Update codeql-analysis.yml by @willem-bd in https://github.com/bytedance/sonic/pull/736
  • chore: add issue and pr template by @liuq19 in https://github.com/bytedance/sonic/pull/742

New Contributors

  • @willem-bd made their first contribution in https://github.com/bytedance/sonic/pull/736

Full Changelog: https://github.com/bytedance/sonic/compare/v1.12.8...v1.12.9

- Go
Published by liuq19 over 1 year ago

https://github.com/bytedance/sonic - v1.12.8

What's Changed

Feature

  • feat:(decoder) add option CaseSensitive by @AsterDY in https://github.com/bytedance/sonic/pull/709

Fix

  • fix:(loader) avoid race on lastmoduledatap with go plugin (only effects on byted-tango) by @AsterDY in https://github.com/bytedance/sonic/pull/707
  • fix: update base64x version to avoid illegal instruction in sse by @liuq19 in https://github.com/bytedance/sonic/pull/734

Full Changelog: https://github.com/bytedance/sonic/compare/v1.12.7...v1.12.8

- Go
Published by liuq19 over 1 year ago

https://github.com/bytedance/sonic - v1.12.7

Optimization

  • [#727] refactor(loader): copy & trim iasm for smaller binary size by @xiaost
  • [#726] introduce json-path lib "cloudwego/gjson" by @AsterDY

New Contributors

  • @spacewander made their first contribution in https://github.com/bytedance/sonic/pull/713
  • @xiaost made their first contribution in https://github.com/bytedance/sonic/pull/727

Full Changelog: https://github.com/bytedance/sonic/compare/v1.12.6...v1.12.7

- Go
Published by AsterDY over 1 year ago

https://github.com/bytedance/sonic - v1.12.6

Bugfix

  • fix(jit): out of index when dump mismatched error by @liuq19 in https://github.com/bytedance/sonic/pull/717
  • fix: readme typos by @uncledu in https://github.com/bytedance/sonic/pull/720
  • fix(aarch64): skip number for object value by @liuq19 in https://github.com/bytedance/sonic/pull/719

New Contributors

  • @uncledu made their first contribution in https://github.com/bytedance/sonic/pull/720

Full Changelog: https://github.com/bytedance/sonic/compare/v1.12.5...v1.12.6

- Go
Published by AsterDY over 1 year ago

https://github.com/bytedance/sonic - v1.12.5

What's Changed

  • opt: support NoCopyRawMessage by @liuq19 in https://github.com/bytedance/sonic/pull/708
  • fix(aarch64): invalid skip number by @liuq19 in https://github.com/bytedance/sonic/pull/712

Full Changelog: https://github.com/bytedance/sonic/compare/v1.12.4...v1.12.5

- Go
Published by liuq19 over 1 year ago

https://github.com/bytedance/sonic - v1.12.4

What's Changed

  • build: compatible for unsupportted go images by @AsterDY in https://github.com/bytedance/sonic/pull/701
  • fix:(encoder) incorrectly pass pv due to wrongly use BTC instead of BTS by @AsterDY in https://github.com/bytedance/sonic/pull/706

Full Changelog: https://github.com/bytedance/sonic/compare/v1.12.3...v1.12.4

- Go
Published by AsterDY over 1 year ago

https://github.com/bytedance/sonic - v1.12.3

What's Changed

  • opt: add decoder Option NoValidateJSON for skipping JSON faster by @AsterDY in https://github.com/bytedance/sonic/pull/696

Full Changelog: https://github.com/bytedance/sonic/compare/v1.12.2...v1.12.3

- Go
Published by AsterDY over 1 year ago

https://github.com/bytedance/sonic - v1.12.2

What's Changed

BugFix

[#695] panic when using .Error() in mismatch type error

Chore

[#687] build: add CI on performance [#688][#691 chore: add Go 1.23 to workflows and skip checking linkname

New Contributors

  • @HeRaNO made their first contribution in https://github.com/bytedance/sonic/pull/688

Full Changelog: https://github.com/bytedance/sonic/compare/v1.12.1...v1.12.2

- Go
Published by liuq19 almost 2 years ago

https://github.com/bytedance/sonic - v1.12.1

BugFix

  • [#682] consider json.Marshaler/Unmarshaler when handling json:",string" tag as encoding/json
  • [#681] [#683] fix: remove print debug and unused codes
  • [#685] feat:(ast) nill Node can marshal to null

Full Changelog: https://github.com/bytedance/sonic/compare/v1.12.0...v1.12.1

- Go
Published by liuq19 almost 2 years ago

https://github.com/bytedance/sonic - v1.12.0

Feature

  • [#645] support aarch64
  • [#662] support go1.23rc2 and drop support below go1.17 (fallback)
  • [#661] ast.Node support concurrently-read and optimize Node.Load/LoadAll by default
  • [#661] ast.Node will build a hash index for object which has more than 8 keys, to boost Node.Get()
  • [#668] export MarshalIndent API in root
  • [#669] support marshal Inf/NaN with option
  • [#673] add APIKind to indicate if using fallback implementation

Optimization

  • [#651] enhance data race detection and panic message on encoder
  • [#664] add a limit option on reusing buffer size

New Contributors

  • @lvan100 made their first contribution in https://github.com/bytedance/sonic/pull/673

Full Changelog: https://github.com/bytedance/sonic/compare/v1.11.9...v1.12.0

- Go
Published by AsterDY almost 2 years ago

https://github.com/bytedance/sonic - v1.12.0-rc

Notice

  • [#645] Will not support Go1.16 from v1.12.0

Feature

  • [#645] Support ARM64 arch for decoder and encoder
  • [#669] support marshal invalid float (Inf/NaN) as null
  • [#668] export MarshalIndent api in root

Optimization

  • [#667]: remove some link-names to support compilation on Go1.23rc1 (fallback to std)
  • [#651] enhance data race detection
  • [#664] add limit on reusing buffer size to avoid OOM

Full Changelog: https://github.com/bytedance/sonic/compare/v1.11.9...v1.12.0-rc

- Go
Published by AsterDY almost 2 years ago

https://github.com/bytedance/sonic - v1.11.9

What's Changed

  • chore: remove noavx2 mode by @liuq19 in https://github.com/bytedance/sonic/pull/647
  • fix: invalid pcsp in x86_64 by @liuq19 in https://github.com/bytedance/sonic/pull/644
  • fix(visitor): unconsumed rbrace in (*traverser).decodeObject() by @zhongxinghong in https://github.com/bytedance/sonic/pull/654

Full Changelog: https://github.com/bytedance/sonic/compare/v1.11.8...v1.11.9

- Go
Published by liuq19 almost 2 years ago

https://github.com/bytedance/sonic - v1.11.8

Feature

  • [#630] feat:(ast) Visitor support skip object and array ## Bugfix
  • [#632] fix: better compile error info in 32-bit arch
  • [#642] fix: check empty when validating utf8
  • [#636] fix: add mssing max pc-sp of natives

Full Changelog: https://github.com/bytedance/sonic/compare/v1.11.7...v1.11.8

- Go
Published by AsterDY about 2 years ago

https://github.com/bytedance/sonic - v1.11.7

What's Changed

BugFix

  • fix: wrongly use reflect.growslice() by @AsterDY in https://github.com/bytedance/sonic/pull/629
  • fix: possible oom when encode parallel in go1.16 by @liuq19 in https://github.com/bytedance/sonic/pull/635

Full Changelog: https://github.com/bytedance/sonic/compare/v1.11.6...v1.11.7

- Go
Published by liuq19 about 2 years ago

https://github.com/bytedance/sonic - v1.11.6

What's Changed

  • feat: update base64x by @AsterDY in https://github.com/bytedance/sonic/pull/621
  • chore: update loader to v0.1.1 by @AsterDY in https://github.com/bytedance/sonic/pull/623

Full Changelog: https://github.com/bytedance/sonic/compare/v1.11.4...v1.11.6

- Go
Published by AsterDY about 2 years ago

https://github.com/bytedance/sonic - v1.11.5-alpha

for test, DONOT USE IT

- Go
Published by AsterDY about 2 years ago

https://github.com/bytedance/sonic - v1.11.4

What's Changed

  • [#607] feat:(ast) support arm64 by @AsterDY in https://github.com/bytedance/sonic/pull/607
  • [#618] chore: immigrate some dependencies to cloudwego by @AsterDY in https://github.com/bytedance/sonic/pull/618
  • [#619] build:(native) full inline native C funcs by @AsterDY in https://github.com/bytedance/sonic/pull/619

New Contributors

  • @pengqiseven made their first contribution in https://github.com/bytedance/sonic/pull/606
  • @AlexanderMahone0 made their first contribution in https://github.com/bytedance/sonic/pull/617

Full Changelog: https://github.com/bytedance/sonic/compare/v1.11.2...v1.11.4

- Go
Published by AsterDY about 2 years ago

https://github.com/bytedance/sonic - v1.11.3

Feature

  • [#607] ast package support arm64

Full Changelog: https://github.com/bytedance/sonic/compare/v1.11.2...v1.11.3

- Go
Published by AsterDY over 2 years ago

https://github.com/bytedance/sonic - v1.11.2-arm_ast

- Go
Published by AsterDY over 2 years ago

https://github.com/bytedance/sonic - v1.11.2

Bugfix

  • [#603] fix:(ast) SortKeys(true) panic when not loaded-all

Full Changelog: https://github.com/bytedance/sonic/compare/v1.11.1...v1.11.2

- Go
Published by AsterDY over 2 years ago

https://github.com/bytedance/sonic - v1.11.1

Feature

  • #594 add new node method "IndexOrGetWithIdx"

Bugfix

  • #601 Unset() used physical index to removePair
  • #599 support build rt on non-amd64 env

New Contributors

  • @Bisstocuz made their first contribution in https://github.com/bytedance/sonic/pull/594

Full Changelog: https://github.com/bytedance/sonic/compare/v1.11.0...v1.11.1

- Go
Published by AsterDY over 2 years ago

https://github.com/bytedance/sonic - v1.11.0

Feature

  • [#590] support go1.22
  • #558 allow the disabling of the newline in the encoder
  • #577 always copy once after top Get

Bugfix

  • #540 checked if a interface is empty by its value field instead of type field
  • #544 didn't pass non-exist value when call Node.Interface()
  • #547 didn't fully reuse buffer memory
  • #569 Set on non-object node unexpectedly
  • #571 implement soft delete for Unset().
    • Break change : Unset()'s behavior will be compatible with versions <= 1.9.x, while being incompatible with versions on 1.10.x

Optimization

  • #550 refactor streaming decoder to fully use buffer
  • [#545] eliminate race test errors
  • #552 use lockfree to register new modules

New Contributors

  • @felix021 made their first contribution in https://github.com/bytedance/sonic/pull/552
  • @testwill made their first contribution in https://github.com/bytedance/sonic/pull/557
  • @elee1766 made their first contribution in https://github.com/bytedance/sonic/pull/558

Full Changelog: https://github.com/bytedance/sonic/compare/v1.10.2...v1.11.0

- Go
Published by AsterDY over 2 years ago

https://github.com/bytedance/sonic - v1.11.0-rc.2

Feature

  • [#577] Get() will always COPY returned JSON from input JSON bytes, in order to reduce the possibility of OOM when caching ast.Node.
    • NOTICE: Meanwhile Get() won't copy entity input JSON bytes like before, for CPU performance. The panic may be more frequent for services that exist data-race on input JSON bytes.

Full Changelog: https://github.com/bytedance/sonic/compare/v1.11.0-rc...v1.11.0-rc.2

- Go
Published by AsterDY over 2 years ago

https://github.com/bytedance/sonic - v1.11.0-rc

Break Change

#571 implement soft delete for Unset()/UnsetByIndex(), which means the node Len() and Index() will change after Unset(). This change is in order to be in keeping with versions <= v1.9.2

Feature

  • #558 allow the disabling of the newline in the encoder
  • [#567] perfect build tag for mmap_unix.go

Bugfix

  • [#569]Set on non-object node unexpectedly change node type

New Contributors

  • @elee1766 made their first contribution in https://github.com/bytedance/sonic/pull/558

Full Changelog: https://github.com/bytedance/sonic/compare/v1.10.3-rc...v1.11.0-rc

- Go
Published by AsterDY over 2 years ago

https://github.com/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 https://github.com/bytedance/sonic/pull/540
  • fix: didn't pass non-exist value when call Node.Interface() by @AsterDY in https://github.com/bytedance/sonic/pull/544
  • fix: didn't fully reuse buffer memory by @AsterDY in https://github.com/bytedance/sonic/pull/547
  • opt: refactor streaming decoder to fully use buffer by @AsterDY in https://github.com/bytedance/sonic/pull/550
  • opt: eliminate race test errors by @AsterDY in https://github.com/bytedance/sonic/pull/545
  • opt: use lockfree to register new modules by @felix021 in https://github.com/bytedance/sonic/pull/552
  • chore: use out.String() instead of string(out.Bytes()) by @testwill in https://github.com/bytedance/sonic/pull/557

New Contributors

  • @felix021 made their first contribution in https://github.com/bytedance/sonic/pull/552
  • @testwill made their first contribution in https://github.com/bytedance/sonic/pull/557

Full Changelog: https://github.com/bytedance/sonic/compare/v1.10.2...v1.10.3-rc

- Go
Published by AsterDY over 2 years ago

https://github.com/bytedance/sonic - v1.10.2-unsafe_back

Only used for users who doesn't care about break change on Node.UnsafeArray() and Node.UnsafeMap()

- Go
Published by AsterDY over 2 years ago

https://github.com/bytedance/sonic - 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 https://github.com/bytedance/sonic/pull/528
  • @CrazyHarb made their first contribution in https://github.com/bytedance/sonic/pull/521

Full Changelog: https://github.com/bytedance/sonic/compare/v1.10.1...v1.10.2

- Go
Published by AsterDY over 2 years ago

https://github.com/bytedance/sonic - v1.10.1

Feature

  • #511 support sort keys on non-object node
  • #527 Add NoValidateJSONMarshaler option

Bugfix

  • #504 check error before Set/Unset/Add()
  • #520 over boundary bugs of skip number and tolower in native c

New Contributors

  • @jimyag made their first contribution in https://github.com/bytedance/sonic/pull/501
  • @hitzhangjie made their first contribution in https://github.com/bytedance/sonic/pull/505
  • @xiezheng-XD made their first contribution in https://github.com/bytedance/sonic/pull/516
  • @andeya made their first contribution in https://github.com/bytedance/sonic/pull/527

Full Changelog: https://github.com/bytedance/sonic/compare/v1.10.0...v1.10.1

- Go
Published by AsterDY almost 3 years ago

https://github.com/bytedance/sonic - v1.10.0

Feature

  • [#493] support Go1.21.0
  • #471 add ast.Visitor for transversing JSON in-place
  • [#470] add Valid() API

Bugfix

  • [#486] possible overflowed instruction while handling byte type
  • #484 avoid scratched memory of returned error
  • #496 Exist() didn't check Valid() first
  • #498 drop ast.Node API UnsafeArray() and UnsafeMap() (Break Change)

Optimization

  • [#393] refactor asm2asm to avoid SIGPROF crashing, and enable traceback when C function panics
  • #464 use linked chunk as fundamental storage for nodes to keep node pointer valid (Break Change)
  • #464 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 pass skipnumber flag to avoid decoding numbers

New Contributors

  • @xumingyukou made their first contribution in https://github.com/bytedance/sonic/pull/447
  • @zhongxinghong made their first contribution in https://github.com/bytedance/sonic/pull/471

Full Changelog: https://github.com/bytedance/sonic/compare/v1.9.2...v1.10.0

- Go
Published by AsterDY almost 3 years ago

https://github.com/bytedance/sonic - v1.10.0-rc2

Optimization

  • #475 pass skipnumber flag to avoid decoding numbers
  • [#483] update base64x to finish asm2asm refactor

Feature

  • #471 add ast.Visitor for iterating JSON into custom generic data containers in-place

New Contributors

  • @zhongxinghong made their first contribution in https://github.com/bytedance/sonic/pull/471

Full Changelog: https://github.com/bytedance/sonic/compare/v1.10.0-rc...v1.10.0-rc2

- Go
Published by AsterDY almost 3 years ago

https://github.com/bytedance/sonic - 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 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] 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 https://github.com/bytedance/sonic/pull/447

Full Changelog: https://github.com/bytedance/sonic/compare/v1.9.2...v1.10.0-rc

- Go
Published by AsterDY almost 3 years ago

https://github.com/bytedance/sonic - 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 https://github.com/bytedance/sonic/pull/457

Full Changelog: https://github.com/bytedance/sonic/compare/v1.9.1...v1.9.2

- Go
Published by AsterDY almost 3 years ago

https://github.com/bytedance/sonic - v1.9.1

Bugfix

  • [#436] Fix the invalid cmpeq instruction in windows
  • [#438] Initialize the cap and len of the empty slices

Document

  • [#439] Add doc for decoder and encoder APIs

Full Changelog: https://github.com/bytedance/sonic/compare/v1.9.0...v1.9.1

- Go
Published by liuq19 about 3 years ago

https://github.com/bytedance/sonic - v1.9.0

Feature

  • [#430] decoder and encoder package support fallback on not-supported envs

Bugfix

  • [#433] incorrectly use mov lagre imm64 to memory instruction in jit

Doc

  • [#428] add Chinese translation for introduction & readme

New Contributors

  • @Dorapower made their first contribution in https://github.com/bytedance/sonic/pull/428

Full Changelog: https://github.com/bytedance/sonic/compare/v1.8.10...v1.9.0

- Go
Published by AsterDY about 3 years ago

https://github.com/bytedance/sonic - v1.8.10

Bigfix

  • fix: quote empty string key in ast

Full Changelog: https://github.com/bytedance/sonic/compare/v1.8.9...v1.8.10

- Go
Published by liuq19 about 3 years ago

https://github.com/bytedance/sonic - v1.8.9

Bugfix

  • #407 check mismatch error after recursion
  • #415 clear allocated memory after slice grow in decode

Optimization

  • #416 skip space use shuffle SIMD instruction
  • #409 optimize default slice capacity (16 -> 2)

Full Changelog: https://github.com/bytedance/sonic/compare/v1.8.8...v1.8.9

- Go
Published by AsterDY about 3 years ago

https://github.com/bytedance/sonic - v1.8.8

Bugfix

  • [#400] unmarshal recursive pointer type
  • [#404] incorrectly handle alias type of pointer in struct

Full Changelog: https://github.com/bytedance/sonic/compare/v1.8.7...v1.8.8

- Go
Published by AsterDY about 3 years ago

https://github.com/bytedance/sonic - v1.8.7

Bugfix

  • [#392] fix unmarshal into named pointer type with unmarshaler
  • [#396] fix marshal direct struct/array type with marshaler

Full Changelog: https://github.com/bytedance/sonic/compare/v1.8.6...v1.8.7

- Go
Published by liuq19 about 3 years ago

https://github.com/bytedance/sonic - v1.8.6

Bugfix

  • [#387] match empty string in json path
  • [#388] add mutex lock for registerModule
  • [#389] validate raw-node JSON strictly

Full Changelog: https://github.com/bytedance/sonic/compare/v1.8.5...v1.8.6

- Go
Published by AsterDY about 3 years ago

https://github.com/bytedance/sonic - v1.8.5

Bugfix

  • [#376] out-of-bound for single unclosed string
  • [#380, #383] export not found error in ast get
  • [#382] decimal map key may be truncated and populated unexpectedly

Feature

  • [#382] add options Default(Encoder|Decoder)BufferSize to make initial buffer size adjustable

Full Changelog: https://github.com/bytedance/sonic/compare/v1.8.3...v1.8.5

- Go
Published by AsterDY over 3 years ago

https://github.com/bytedance/sonic - v1.8.3

Bugfix

  • [#372] omit checkptr detects on unsafe functions
  • [#373] return error when Get() from incomplete json value

Full Changelog: https://github.com/bytedance/sonic/compare/v1.8.2...v1.8.3

- Go
Published by AsterDY over 3 years ago

https://github.com/bytedance/sonic - v1.8.2

Bugfix

  • #369 failed to use memory pool after passing UTF8 validation

Full Changelog: https://github.com/bytedance/sonic/compare/v1.8.1...v1.8.2

- Go
Published by AsterDY over 3 years ago

https://github.com/bytedance/sonic - v1.8.1

Feature

  • [#362] generic loader for go1.16~1.17 ## Bugfix
  • [#365] add nocheckptr directive

Full Changelog: https://github.com/bytedance/sonic/compare/v1.8.0...v1.8.1

- Go
Published by AsterDY over 3 years ago

https://github.com/bytedance/sonic - v1.8.0

Feature

  • [#350] add Get() API on not-amd64 envs
  • [#354] more complete function loader and support Go 1.20
  • [#357] replace invalid utf8 char with '\ufffd', which is n accord with encoding/json
  • [#361] add env option SONIC_STOP_PROFILING to stop profiling on demands, working around for issue #310

Full Changelog: https://github.com/bytedance/sonic/compare/v1.7.0...v1.8.0

- Go
Published by AsterDY over 3 years ago

https://github.com/bytedance/sonic - v1.7.1

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: https://github.com/bytedance/sonic/compare/v1.7.0...v1.7.1

- Go
Published by AsterDY over 3 years ago

https://github.com/bytedance/sonic - v1.7.0

Feature

  • #341 sonic.Get() and ast.Node support not-amd64 CPU arch
  • #346 not clear memory after decoding failed

Bugfix

  • [#342] stop SIGPROF traceback while calling native functions, in case of crashing
  • #336 lose pointer-value message for deep-layer struct
  • #343 not support concrete-type key implementing encoding.TextMarshaler while sorting map

Optimization

  • #345 using better skipping algorithm, sonic.Get() now is 2~9x faster than before

Full Changelog: https://github.com/bytedance/sonic/compare/v1.6.0...v1.7.0

- Go
Published by AsterDY over 3 years ago

https://github.com/bytedance/sonic - v1.6.1

Feature

  • #341 ast.Node support not-amd64 CPU arch
  • [#342] stop SIGPROF traceback while calling native functions

Bugfix

  • #336 lose pointer-value message for deep-layer struct
  • #343 not support concrete-type key implementing encoding.TextMarshaler while sorting map

Full Changelog: https://github.com/bytedance/sonic/compare/v1.6.0...v1.6.1

- Go
Published by AsterDY over 3 years ago

https://github.com/bytedance/sonic - v1.6.0

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 support skipping mismatched-typed value while binding
  • [#329] support decode json-encoded (with escaping characters) base64 string

Bugfix

  • #314 iterator panic while traversing the empty object
  • #320 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: https://github.com/bytedance/sonic/compare/v1.5.0...v1.6.0

- Go
Published by AsterDY over 3 years ago

https://github.com/bytedance/sonic - v1.6.0-rc

Feature

  • #325 support skipping mismatched-typed value while binding
  • #320 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 iterator panic while traversing the empty object

Optimization

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

Full Changelog: https://github.com/bytedance/sonic/compare/v1.5.0...v1.6.0-rc

- Go
Published by AsterDY over 3 years ago

https://github.com/bytedance/sonic - v1.5.0

Feature

  • #294 support more loose type-casting (breaking change)
  • [#299] move third-party tests into another module ## Bugfix
  • [#296]#295 StreamDecoder unexpectedly stopped while decoding buffer-truncated numbers ## Optimization
  • #291 faster and more accurate (for float32->float64) ftoa() implementation, promoting 5%~50% performance of float encoding

Full Changelog: https://github.com/bytedance/sonic/compare/v1.4.0...v1.5.0

- Go
Published by AsterDY over 3 years ago

https://github.com/bytedance/sonic - v1.5.0-rc

Feature

#294 support looser type-casting (breaking change)

Bugfix

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

Full Changelog: https://github.com/bytedance/sonic/compare/v1.4.0...v1.5.0-rc

- Go
Published by AsterDY almost 4 years ago

https://github.com/bytedance/sonic - v1.4.0

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 add encoder option NoNullSliceOrMap
  • #253 add option ValidateString to validate if string value is UTF8
  • #249 add more strict casting API
  • #262 support casting V_STRING to number
  • #278 support cast null to zero value (break change)

Bugfix

  • #243 insufficient buffer size check for OP_i32 and panic invalid memory address or nil pointer dereference
  • #243 marshal escape '\b' and '\f' inconsistently with encoding/json
  • #259 handle map without dereferencing pointer when calling call_marshaler_v
  • #254 didn't return io.EOF error when read nothing from io.Reader
  • #261 didn't check ',' before object key due to imperfect FSM
  • #267 StreamDecoder returns error when run out of buffer while skipping value
  • #268 wrongly set options and panic can't set OptionUseInt64 and OptionUseNumber both
  • #250 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 remove bound and loop unrolling in quote
  • #239 add more benchmarks on different structures

Full Changelog: https://github.com/bytedance/sonic/compare/v1.3.0...v1.4.0

- Go
Published by AsterDY almost 4 years ago

https://github.com/bytedance/sonic - v1.3.5

Feature

  • [#275] support Go 1.19

- Go
Published by AsterDY almost 4 years ago

https://github.com/bytedance/sonic - 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: https://github.com/bytedance/sonic/compare/v1.3.3...v1.3.4

- Go
Published by AsterDY almost 4 years ago

https://github.com/bytedance/sonic - v1.3.3

Feature

  • [#218] feat:(encoder) add encoder option NoNullSliceOrMap

Bugfix

  • [#259] fix:(encoder) panic on calling MarshalJSON() of a alias map
  • [#261] fix:(decoder) didn't check ',' before a object key due to imperfect FSM

Full Changelog: https://github.com/bytedance/sonic/compare/v1.3.2...v1.3.3

- Go
Published by AsterDY almost 4 years ago

https://github.com/bytedance/sonic - v1.3.2

Feature

  • [#249] feat:(ast) Add more strict casting APIs (StrictXXX()) ## Bugfix
  • [#243] fix:(encoder) Escape \b/\f like encoding/json
  • [#250] fix:(ast) checkRaw() checks nil-pointer first
  • [#254] fix: (decoder) return io.EOF when read nothing from io.Reader

Full Changelog: https://github.com/bytedance/sonic/compare/v1.3.1...v1.3.2

- Go
Published by AsterDY almost 4 years ago

https://github.com/bytedance/sonic - v1.3.1

Feature

  • [#237] opt: remove bound and loop unrolling in the quote process. The benchmark showed the encoding performance was accelerated by 10%~20%. ## CI
  • [#239] test: add more JSON samples and corresponding benchmarks, aiming at performance comparison with https://github.com/go-json-experiment/json

Full Changelog: https://github.com/bytedance/sonic/compare/v1.3.0...v1.3.1

- Go
Published by AsterDY about 4 years ago

https://github.com/bytedance/sonic - v1.3.0

Feature

  • [#233] add configurable sonic.API to be compatible with encoding/json library and ARM arch.
  • [#225] support streaming IO with encoder.StreamEncoder and decoder.StreamDecoder.
  • [#228] support windows OS. ## Bugfix
  • #230 fix the invalid length of output buffer caused by register-scratching bug under encoding error.
  • #224 add defensive string-pointer-checking to avoid crashes on native-C stack.

Full Changelog: https://github.com/bytedance/sonic/compare/v1.2.0...v1.3.0

- Go
Published by AsterDY about 4 years ago

https://github.com/bytedance/sonic - v1.2.2

What's Changed

  • fix: some typos by @liuq19 in https://github.com/bytedance/sonic/pull/221
  • fix: add nil pointer check by @AsterDY in https://github.com/bytedance/sonic/pull/224
  • fix (encoder): spill RL (buffer length) register while calling internal encoders in case of it got scratched by @AsterDY in https://github.com/bytedance/sonic/pull/230
  • feat: support for Windows by @ii64 in https://github.com/bytedance/sonic/pull/228

New Contributors

  • @ii64 made their first contribution in https://github.com/bytedance/sonic/pull/228

Full Changelog: https://github.com/bytedance/sonic/compare/v1.2.1...v1.2.2

- Go
Published by AsterDY about 4 years ago

https://github.com/bytedance/sonic - v1.2.1

What's Changed

[#216 ]doc: update readme [#215] fix: base64x' native decoder stack-overflow under AVX2 CPU

Full Changelog: https://github.com/bytedance/sonic/compare/v1.2.0...v1.2.1

- Go
Published by AsterDY about 4 years ago

https://github.com/bytedance/sonic - v1.2.0

Feature

  • [#214] support Go 1.18
  • [#208] add fuzz test in Go 1.18
  • [#197] add API MarshalString()
  • #192 add option CopyString()
  • [#196] allow decoding string value as json.Number in binding scenario ## Bugfix
  • [#194] check nil pointer when encoding a pointer receiver of json.Marshaler
  • [#188] fix nil panic when loading on plugin mode
  • [#209] ignore overflow-check while decoding json.Number and optimize

Full Changelog: https://github.com/bytedance/sonic/compare/v1.1.1...v1.2.0

- Go
Published by AsterDY about 4 years ago

https://github.com/bytedance/sonic - v1.1.1

Feature

  • #192 add option CopyString() ## Bugfix
  • [#194] check nil pointer for Marshaler by @AsterDY in https://github.com/bytedance/sonic/pull/194

Full Changelog: https://github.com/bytedance/sonic/compare/v1.1.0...v1.1.1

- Go
Published by AsterDY over 4 years ago

https://github.com/bytedance/sonic - v1.1.0

Feature

[#171] support HTML escaping [#189] support JSON validation and skipping [#168] add optimizing options encoder.CompactMarshaler and encoder.NoQuoteTextMarshaler

Bugfix

[#187] prevent premature GC on decoded string values [#181] add GC write barrier for Go1.15 [#179] check number ending when skipping numbers

Full Changelog: https://github.com/bytedance/sonic/compare/v1.0.0...v1.1.0

- Go
Published by AsterDY over 4 years ago

https://github.com/bytedance/sonic - v1.0.2

- Go
Published by AsterDY over 4 years ago

https://github.com/bytedance/sonic - Release v1.0.0

Feature

  • [#155] ast.Node supports containing interface{}
  • [#164] ast.Node supports sorting pair keys
  • [#152] syntax error always shows related JSON (quoted) ## Bugfix
  • [#148] align 'string' option in struct tag as encoding/json
  • [#155] quote string when call node.MarshalJSON()
  • [#156, #159] relocate stack pointers for GC recognition
  • [#161] prevent out-of-bounds accessing in native.advance_string()
  • [#162] shrink function stacks and achieve stack-split check
  • [#166] keep passed buffer alive when encoding

Full Changelog: https://github.com/bytedance/sonic/compare/v1.0.0-rc.3...v1.0.0

- Go
Published by AsterDY over 4 years ago

https://github.com/bytedance/sonic - v1.0.0-rc.3

Feature

  • [#116] support Go 1.17
  • [#137] add compiler option WithCompileRecursiveDepth to pretouch recursively for large/deep struct ## Bugfix
  • [#142] correct the field priority as encoding/json in case-insensitive match
  • [#145] use global variables to keep all arguments and locals alive

- Go
Published by AsterDY over 4 years ago

https://github.com/bytedance/sonic - v1.0.0-rc.2

Bugfix

  • [#127] keep internal pointers alive whileMarshal() or Unmarshal()
  • [#131] generate gcWriteBarrier in JIT (only support Go1.16 [#134])
  • [#132] fix stack-overflow error (json.UnsupportedValue) after frequent errors
  • [#129] avoid the pointer of argumentval cleared while debugging

- Go
Published by AsterDY over 4 years ago

https://github.com/bytedance/sonic - v1.0.0-rc.1

Improvement

  • [#124] add node.Load()/LoadAll() to support concurrency ## Bugfix
  • [#122 ] add runtime.KeepAlive() to avoid premature GC during Marshal()/Unmarshal()

- Go
Published by AsterDY over 4 years ago

https://github.com/bytedance/sonic - v1.0.0-rc

Bugfix

  • [ #107 ] ignored the UTF-16 surrogate pair after an invalid unicode
  • [ #108 ] couldn't skip zero-based exponent in skip_number()
  • [ #112 ] returned error when unmarshalling invalid base64-encoded strings
  • [ #113 ] redundantly handled struct-typed fields' "omitempty" tag
  • [ #115 ] encoder.SortMapKeys flag didn't work when marshalling integer-key map

- Go
Published by AsterDY over 4 years ago