Yi Duan
f421ee8530
fix:(encoder) pass pv through compiler recursively ( #336 )
...
* pass pv
* test reflect indirect
* fix: pass `pv` throught compiler recursively
2022-12-13 14:26:58 +08:00
liu
6deed01a90
opt: reduce memory pool size ( #302 )
...
* fix: reduce state stack size
* fix types
* opt: shrink encoder stack size
* opt: reduce decoder stack size
* add bench.py loops
Co-authored-by: liuqiang <liuqiang.06@bytedance.com>
Co-authored-by: duanyi.aster <duanyi.aster@bytedance.com>
2022-10-28 16:40:14 +08:00
Chen Yannan
5e54c02172
fmt: move thrid-party tests into another module ( #299 )
...
* fix:move benchmarkTests and unitTests related to external json library
* remove extra spaces
* merge go.mod files
* refactor: add external_jsonlib_test into go.work and CI
Co-authored-by: Yi Duan <duanyi.aster@bytedance.com>
2022-09-20 12:02:41 +08:00
liu
ccc0f3f1e3
opt: faster ftoa ( #291 )
...
* opt: faster f64toa
* feat:(option) add option `MaxInlineDepth` for addjust compilation inline depth (#287 )
* feat: make compilation depth changeable
* feat: add option `DefaultMaxInlineDepth`
* add recurse depth = 10
* refactor
* doc: readme and comment
* opt: add `_MAX_FIELDS` to limit the inlining of big struct
* update license
* fix typo
* feat:(ast) support cast `null` to empty value (#278 )
* fix: recompile
* test: add ftoa benchmarks
* feat: add f32toa
* fix: add license
* opt: optimize decimal
* fix benchmarks
* fix: poor performance in atof32
* test: add more integer test
Co-authored-by: liuqiang <liuqiang.06@bytedance.com>
Co-authored-by: Yi Duan <duanyi.aster@bytedance.com>
2022-09-20 10:26:18 +08:00
Yi Duan
94f95f0479
feat:(option) add option MaxInlineDepth for addjust compilation inline depth ( #287 )
...
* feat: make compilation depth changeable
* feat: add option `DefaultMaxInlineDepth`
* add recurse depth = 10
* refactor
* doc: readme and comment
* opt: add `_MAX_FIELDS` to limit the inlining of big struct
* update license
* fix typo
2022-08-22 15:45:49 +08:00
chenzhuoyu
d4024becca
chore: remove excessive spaces
2022-08-12 15:29:23 +08:00
Yi Duan
b36771ba37
feat: support Go 1.19 ( #275 )
...
* feat: support Go 1.19
* fuzz test refactor
* fix fuzz bug, generate pointer typ
Co-authored-by: liuqiang <liuqiang.06@bytedance.com>
2022-08-09 12:54:11 +08:00
Yi Duan
8b51e75241
fix:(encoder) insufficient buffer size check for OP_i32 ( #269 )
2022-07-28 17:18:53 +08:00
Yi Duan
07d7b867d4
feat (encoder): add encoder option NoNullSliceOrMap ( #218 )
...
* feat (encoder): add encoder option `NoNullSliceOrMap`
* feat: add option on `sonic.Config`
* build: specify `self-host` to x64 machine
2022-07-08 15:07:42 +08:00
Yi Duan
a66db08b94
fix:(encoder) handle map like pointer when calling call_marshaler_v ( #259 )
2022-07-06 14:50:28 +08:00
liu
3717c62ec2
test: add generic benchmark ( #239 )
...
* test: add generic benchmark
* test: add ci
* chore: adjust generic benchmark variable name
* ci: fix compare bug in bench.py
* build: adjust CI yaml
* test: use sonic.Config
* chore: generic test
* test: add interface type bench
Co-authored-by: liuqiang <liuqiang.06@bytedance.com>
Co-authored-by: duanyi.aster <duanyi.aster@bytedance.com>
2022-06-07 13:26:28 +08:00
Yi Duan
f9d033d6f8
feat: support streaming IO ( #225 )
...
* feat (decoder): support streaming IO
* opt: fine tune buffer size factors
* feat (encoder): support streaming IO
* doc: refactor format and add comments
* fix: io.EOF dead loop
* build: adjust CI files
* doc: update README.md
2022-05-24 10:38:43 +08:00
Yi Duan
308b76b44f
fix (encoder): spill RL (buffer length) register while calling internal encoders in case of it got scratched ( #230 )
...
Change-Id: Ie15c589b739a7b3feb93c5a7b65e82c114d7ab80
2022-05-23 12:27:29 +08:00
Yi Duan
5086cb21fe
fix: add nil pointer check ( #224 )
...
* fix: add nil pointer check
* panicNilPointerOfNonEmptyString
2022-05-19 13:24:57 +08:00
Yi Duan
cb1702dc8c
feat: support Go1.18 ( #205 )
...
* feat: support Go1.18
* fix: re-encoding `moduledata.pclntab`
* test: add generic func wrap test
2022-03-28 20:43:43 +08:00
Yi Duan
8caa4eef05
fix: check nil pointer for Marshaler ( #194 )
2022-02-25 18:00:57 +08:00
liu
ce41dd9636
fix: correct htmlescape chars check ( #190 )
...
* fix: correct htmlescape chars check
* fix: continuous html escape chars
* tmp: compile clang13
* fix: check single xe2 char
* fix: htmlescape no mem test
* fix: htmlescape zero check bug
* fix: htmlescape bug
* build: clang12
Co-authored-by: liuqiang <liuqiang.06@bytedance.com>
Co-authored-by: duanyi.aster <duanyi.aster@bytedance.com>
2022-02-22 11:43:58 +08:00
liu
7475b256ce
support JSON validate ( #189 )
...
* fix: check unescaped control chars in decode
* feat: add utf8 validate func
* feat: validate utf8 in json string
* feat: add validateone api
* fix: check unicode pointer for surrogate
* clang12 compile
* feat: Import `Valid()` and `Skip()`
* opt: use looktable
* fix utf-8 validate performance problem
* fix: utf-8 validate bug
* clang12 build
* feat: (encoder) accelerate validating json from `json.Marshaler`
chore!:
- `encoder.NoCompactMarshaler`changes to `encoder.CompactMarshaler`, which means compacting operation is not open by default
* fix: only one json value is `Valid()`
Co-authored-by: liuqiang <liuqiang.06@bytedance.com>
Co-authored-by: duanyi.aster <duanyi.aster@bytedance.com>
2022-02-21 16:35:53 +08:00
Yi Duan
526c46883e
fix: support writeBarrier for Go 1.15 ( #181 )
2022-01-27 17:37:42 +08:00
Yi Duan
3dde76677e
doc: update benchmarks and dependency repos ( #180 )
...
* doc: update benchmarks and dependency repos
* doc: add 'Optimization Options' on README
* fix some possible typos
Co-authored-by: liuqiang <liuqiang.06@bytedance.com>
2022-01-25 15:09:01 +08:00
liu
d75ce3f730
opt: use simd to optimize htmlescape ( #171 )
...
* opt: use simd to optimize htmlescape
* opt: reuse escaped buffer
* feat: cmake with Clang12
Co-authored-by: liuqiang <liuqiang.06@bytedance.com>
Co-authored-by: duanyi.aster <duanyi.aster@bytedance.com>
2022-01-18 11:30:28 +08:00
Yi Duan
14121d64f1
feat:(encoder) add optimazing options ( #168 )
...
* feat:(encoder) add option `NoCompactMarshaler` and `NoEscapeTextMarshaler`
* feat: add `EscapeHTML` to align with std lib
2022-01-05 14:20:46 +08:00
Yi Duan
fcfe1c4317
fix:(encoder) keep arguement buf alive ( #166 )
2021-12-31 17:15:35 +08:00
liu
1443eb3bcf
fix: move large-size local array to _Stack ( #162 )
...
* fix: move large-size local array to _Stack
* fix: adjust jsonstate and add alwaysinline
* fix: initialize types.JsonState's dbuf at prologue
* fix: replace `always_inline` with `inline`
* fix: remove unused types
* feat: update asm2asm
* fix: check stack size befor call JIT function
Co-authored-by: liuqiang <liuqiang.06@bytedance.com>
Co-authored-by: duanyi.aster <duanyi.aster@bytedance.com>
2021-12-30 14:51:23 +08:00
Yi Duan
8203bbac35
fix: remove stack writeBarrier for encoder ( #159 )
...
Co-authored-by: duanyi.aster <duanyi.aster@bytedance.com>
2021-12-20 17:26:19 +08:00
Yi Duan
22229eefc3
fix: relocate stack pointers ( #156 )
...
* fix: relocate stack pointer _VAR_sv to keep it alive
* fix: add stack pointer _VAR_vk to defend `encoding.TextUnmarshaler`
* fix: align faker func's stack with JIT func's
* fix: clear _Stack memory when err returned
* fix: clear stack pointer before return
* fix: relimit stack-overflow check at `_ValueDecoder`
Co-authored-by: duanyi.aster <duanyi.aster@bytedance.com>
2021-12-20 16:19:12 +08:00
Yi Duan
d2711a6af0
fix: use global var _KeepAlive to notice GC in shadow funcs ( #145 )
...
Co-authored-by: duanyi.aster <duanyi.aster@bytedance.com>
2021-12-02 11:08:40 +08:00
Yi Duan
49df11ef83
feat: adjust ABI for supporting go1.17 ( #116 )
...
* feat: adjust encoder ABI for supporting go1.17
* binding
* generic
* opt: exchange R10/R11 with BX/BP when call c func
* fmt
Co-authored-by: duanyi.aster <duanyi.aster@bytedance.com>
2021-11-30 18:47:17 +08:00
liu
49fc705341
feat: Pretouch recursively for large/deep struct ( #137 )
2021-11-26 14:12:51 +08:00
Yi Duan
5b38f56cec
fix: go1.15 CANNOT support gcWriteBarrier due to linkname bug ( #134 )
...
* fix: go1.15 CANNOT add gcWriteBarrier due to linkname bug
* add go1.15 push-check
Co-authored-by: duanyi.aster <duanyi.aster@bytedance.com>
2021-11-18 11:15:14 +08:00
Yi Duan
43e4a00e90
fix: add gc_write_barrier checks ( #131 )
...
* fix: add gcWriteBarrier for decode
* add gcWriteBarrier for encoder
Co-authored-by: duanyi.aster <duanyi.aster@bytedance.com>
2021-11-17 11:21:20 +08:00
Yi Duan
0f66ab7211
fix: add stack memory at _VAR_vp to pass the address of vp while recursing ( #129 )
...
Co-authored-by: duanyi.aster <duanyi.aster@bytedance.com>
2021-11-09 12:47:05 +08:00
Yi Duan
442ce696fb
fix: use stackmap of shadow func as jit func's ( #127 )
...
* fix: use stackmap of shadow func as jit func's
* fix: use LoadWithFaker in decoder
* fix: LoadWithFaker support go115
* add 'runtime.' prefix on jit funcname to prevent preempt
* add parallel GC tests
* remove no_stack_pointer()
Co-authored-by: duanyi.aster <duanyi.aster@bytedance.com>
Co-authored-by: liuqiang <liuqiang.06@bytedance.com>
2021-11-09 11:50:40 +08:00
Yi Duan
3eade82a01
fix: add gcGuard to prevent GC during Marshal()/Unmarshal() ( #122 )
...
Co-authored-by: duanyi.aster <duanyi.aster@bytedance.com>
2021-10-28 17:02:37 +08:00
liu
0a710eeb9d
fix: make it sorted when marshalling integer key map ( #117 )
2021-10-18 19:31:33 +08:00
liu
3eca433cb9
fix: marshal struct field with omitempty tag as encoding/json ( #114 )
2021-10-12 15:14:39 +08:00
Yi Duan
a577eafc25
refactor: make it more readable ( #104 )
...
Co-authored-by: duanyi.aster <duanyi.aster@bytedance.com>
2021-09-18 11:31:25 +08:00
chenzhuoyu
8ccd57d4e0
fix: defer single-element maps checking
2021-09-14 18:41:45 +08:00
chenzhuoyu
514208a4d5
fix: potential ProgramCache OOM under high-load
2021-09-09 14:35:01 +08:00
chenzhuoyu
d2e150948a
fix: unmarshalers are always addressable
2021-09-06 16:53:51 +08:00
chenzhuoyu
712d6195df
fix: support AVX2 auto-detection for base64x
2021-08-23 14:33:48 +08:00
chenzhuoyu
ade38b26c4
fix: check flags for indirection
2021-08-18 13:36:28 +08:00
chenzhuoyu
8383178c89
feat: supports map key-sorting via encoder options
2021-08-16 18:31:41 +08:00
chenzhuoyu
c2ea100389
fix: fix nil pointer on value receiver ( #58 )
2021-07-28 17:12:36 +08:00
chenzhuoyu
4937f48f3c
fix: support dynamic interface indirection
2021-07-06 21:51:27 +08:00
chenzhuoyu
bcca8c2052
fix: fix addressing past valid memory for empty string
2021-07-02 18:25:50 +08:00
chenzhuoyu
5cb6f17944
feat: performance optimizations
2021-07-02 14:38:12 +08:00
Masaaki Goshima
4e02b5b2fe
Update benchmark ( #34 )
...
* chore: update version of goccy/go-json to v0.7.2
* chore: use unordered map option at encoding for go-json's benchmark
2021-06-26 10:43:10 +08:00
chenzhuoyu
53efb129d8
feat: reduce allocs for mapiterinit
2021-06-23 16:37:33 +08:00
chenzhuoyu
944f2b58cc
chore: sort imports
2021-06-22 16:47:57 +08:00