Commit graph

264 commits

Author SHA1 Message Date
Zixuan Chen
83af4d07eb
Merge pull request #44 from loro-dev/feat-wasm-encode
Feat: wasm encode
2022-12-13 16:34:54 +08:00
Zixuan Chen
f322bde4c9 Perf remove string pool mutex (#41)
This is based on append-only-bytes. It allows us to share str data in a lock-free way. The downside of this method is it tends to use more memory
2022-12-13 16:18:56 +08:00
Zixuan Chen
90fe4cc69e fix: remove needless check 2022-12-12 16:18:55 +08:00
Zixuan Chen
dc4229d609 perf: reduce heap allocations 2022-12-12 16:01:58 +08:00
Zixuan Chen
313b1cc8c0 bench: add wasm bench to web test 2022-12-12 13:44:49 +08:00
Zixuan Chen
68bd7179c4
Perf remove string pool mutex (#41)
This is based on append-only-bytes. It allows us to share str data in a lock-free way. The downside of this method is it tends to use more memory
2022-12-09 17:22:33 +08:00
Zixuan Chen
569cfdcf5e perf(rle): use simple iter range for range_map 2022-12-09 10:46:55 +08:00
Zixuan Chen
1933fe6a56 fix: refine rangemap interface 2022-12-07 11:03:10 +08:00
Zixuan Chen
594b60dafb
Perf store cache in parent node (#36)
* refactor: make internal and leaf use same type of cache

* refactor: add cache update

* test : add normalization to arb test

* test: fuzz

* fix: internal insert bug

* fix: missing utf16

* test: fix test sub overflow

* feat: use heapless for binary heap

* refactor: refine warning

* test: reduce test time

* perf: reduce computation when finding pos

* bench: fix ignore parse time in benching

* feat: make it compile in new sig (should be merged)

* fix: type err

* fix: fix type err

* fix: cache when merge & borrow

* refactor: simplify code

* fix: cumulated tree trait bug

* fix: a few fatal bugs (still buggy)

* fix: global tree trait

* refactor: rm an unused fn

* fix: insert at cursor bug

* fix: in cursor insert cache may be invalid

strip the checker there

* chore: remove needless check

* refactor: add inline to methods

* test: remove cfg=mem for mem example

* fix: type err
2022-12-06 16:34:46 +08:00
Zixuan Chen
2604c4a3fb refactor: make internal and leaf use same type of cache 2022-12-06 16:21:48 +08:00
Zixuan Chen
c25500df04 feat: introduce rope 2022-12-06 16:21:48 +08:00
Zixuan Chen
f757b86f5c
Fix: unsound (violate borrow stack rules) bugs detected by Miri (#32)
* fix: borrow stack bugs exposed by miri

* fix: use context to track notify when integrating

* fix: miri bugs

* fix: borrow stack bugs

* fix: set range miri err
2022-12-06 16:05:58 +08:00
Zixuan Chen
610a651b5c fix: vec slice is ill defined 2022-12-06 15:50:35 +08:00
Zixuan Chen
134866bf3d chore: rm unused fn 2022-12-06 15:40:56 +08:00
Zixuan Chen
45c1a2e791 fix: decode deps 2022-11-30 23:55:58 +08:00
Zixuan Chen
d3a0d10b12 feat: encode updates 2022-11-30 23:55:58 +08:00
leeeon233
4ed1eaee32 feat: add list notify
Co-authored-by: Zixuan Chen <me@zxch3n.com>
2022-11-24 15:34:23 +08:00
Zixuan Chen
59bdaae250 refactor: use import context & basic notify
Co-authored-by: Leonzhao <leeeon233@gmail.com>
2022-11-24 12:15:25 +08:00
Zixuan Chen
1ae9bf2a48 feat: init delta 2022-11-23 16:26:38 +08:00
Zixuan Chen
c9e3a67963 test: fix range map tests 2022-11-18 00:32:18 +08:00
Zixuan Chen
521615b1a0 perf: replace returned vec with iterator 2022-11-18 00:32:18 +08:00
Zixuan Chen
402b174842 perf: avoid heap alloc 2022-11-18 00:32:18 +08:00
Zixuan Chen
878f6cf939 chore: refine map max children config 2022-11-18 00:32:18 +08:00
Zixuan Chen
ff9877db42 fix: remove needless notify 2022-11-18 00:32:05 +08:00
Zixuan Chen
b89ac938db refactor: initialize new import pipeline 2022-11-17 17:11:55 +08:00
Zixuan Chen
284f1e0862 fix: it's possible to enter the no sibling state 2022-11-15 15:53:03 +08:00
Zixuan Chen
114e12944d fix: should use slicerange in text container 2022-11-15 14:37:18 +08:00
Zixuan Chen
985a8f6920 fix: export iter bug 2022-11-15 13:59:10 +08:00
Zixuan Chen
3d07e7e7e5 fix: bugs related to unknown type 2022-11-15 13:41:00 +08:00
Zixuan Chen
794e001ce9 feat: fast gc 2022-11-15 10:46:29 +08:00
Zixuan Chen
1ca3f0e774 refactor: rename feature fuzzing to test_utils 2022-11-14 10:49:42 +08:00
Zixuan Chen
9758303c28
Merge pull request #15 from loro-dev/feat-recursive
feat: recursive type
2022-11-14 10:31:10 +08:00
Zixuan Chen
fa63687698 refactor: remove proptest feature 2022-11-13 21:22:49 +08:00
Zixuan Chen
743e2b597b chore: fix all warnings 2022-11-11 22:44:18 +08:00
Zixuan Chen
0d0603d75f feat: get value deep 2022-11-11 22:26:06 +08:00
Zixuan Chen
737c14e99a fix: update bumpalo fix potential leaks 2022-11-10 22:34:49 +08:00
Zixuan Chen
8242a598af Merge branch 'main' into feat-recursive 2022-11-10 15:34:21 +08:00
Zixuan Chen
fbe4cc7ef8 doc: remove redundant todos and logics 2022-11-10 15:10:53 +08:00
Zixuan Chen
42db1057d2 doc: update range map doc 2022-11-10 12:00:05 +08:00
Zixuan Chen
e298128f8d refactor: simplify code
the threshold is useless because most of the nodes
will have at least MAX_CHILDREN_NUM/2 children
2022-11-10 01:37:23 +08:00
Zixuan Chen
97709c5af3 chore: remove debug code 2022-11-10 01:27:24 +08:00
Zixuan Chen
5027da1e2e perf: binary search for global tree trait 2022-11-10 01:17:22 +08:00
Zixuan Chen
592199ab65 fix: set small range err 2022-11-09 23:57:13 +08:00
Zixuan Chen
b4cdc817d7 doc: new range map doc 2022-11-09 22:54:07 +08:00
Zixuan Chen
498cc7f2a7 perf: better set range strategy
and use heap mode in cursor map
2022-11-09 21:55:53 +08:00
Zixuan Chen
e85efa7d01 perf: simplify global tree cache update 2022-11-09 21:31:28 +08:00
Zixuan Chen
59d9c9ba34 fix: better capacity setting 2022-11-09 20:07:53 +08:00
Zixuan Chen
6eff5ddd3f refactor: refine small set 2022-11-09 19:37:47 +08:00
Zixuan Chen
1653f8d109 perf: optimize insert at the range end 2022-11-09 18:42:13 +08:00
Zixuan Chen
0988b74254 chore: utils 2022-11-09 17:54:06 +08:00
Zixuan Chen
58fb7de26c fix: remove changes error freeze behavior
and cover more cases that can be applied directly
2022-11-09 13:53:12 +08:00
Zixuan Chen
5c0c09e2d1 perf: apply edits directly when possible 2022-11-09 12:18:27 +08:00
Zixuan Chen
8616f4d3b0 chore: cargo fix 2022-11-08 23:51:31 +08:00
Zixuan Chen
e7af203efa Merge branch 'chore-clean-todos' 2022-11-08 12:41:11 +08:00
Zixuan Chen
0acb003fe1 chore: update todo doc 2022-11-08 12:41:01 +08:00
Zixuan Chen
f7821f0515 fix: use after free in heap mode when deleting 2022-11-08 11:39:58 +08:00
Zixuan Chen
e833c1d5d7 chore: remove redundant todo 2022-11-08 10:50:55 +08:00
Zixuan Chen
b086185d86 chore: refine doc 2022-11-07 15:25:48 +08:00
Zixuan Chen
420d29e42f chore: add doc for heapmode 2022-11-07 15:24:02 +08:00
Zixuan Chen
82ef8a42ee refactor: rename modes to HeapMode and BumpMode 2022-11-07 15:20:49 +08:00
Zixuan Chen
a3df07bf5c refactor: make Bump mode newtype 2022-11-07 15:19:48 +08:00
Zixuan Chen
c7d3e01087 refactor: no boxing for T in RleTree
and make Heap mode as the default mode, because users
should be aware of Bump mode's limitation before using it
2022-11-07 15:10:36 +08:00
Zixuan Chen
62891e25b3 fix: use heap mode in text state
Fix #8
2022-11-07 14:26:10 +08:00
Zixuan Chen
303b1c6787 chore: cargo fix 2022-11-07 14:21:06 +08:00
Zixuan Chen
24cd11f59e refactor: make bump optional in rle tree 2022-11-07 14:16:53 +08:00
Zixuan Chen
dd2c2701c4 chore: more debug info 2022-11-01 23:07:30 +08:00
Zixuan Chen
df1892bd4e refactor: merge reverse deletions
fix: counter span merge err
2022-11-01 17:16:11 +08:00
Zixuan Chen
6e03c9c04b refactor: extract remote op 2022-10-31 23:50:00 +08:00
Zixuan Chen
27c4b1ca2b refactor: remove change freeze field 2022-10-31 22:35:37 +08:00
Zixuan Chen
1e9d5769f3 fix: add debug info & reduce 40% mem usage 2022-10-31 21:42:19 +08:00
Zixuan Chen
9c35aa266c fix: reduce heap alloc 2022-10-31 20:40:39 +08:00
Zixuan Chen
8cfe9f2772 perf: reduce heap alloc 2022-10-31 20:06:56 +08:00
Zixuan Chen
43c28608c6 fix: reduce heap alloc 2022-10-31 19:27:13 +08:00
Zixuan Chen
87227ad39a Merge branch 'refactor-parallel' into feat-wasm 2022-10-28 18:49:01 +08:00
Zixuan Chen
c8d5127213 chore: cargo style fix 2022-10-28 18:28:55 +08:00
Zixuan Chen
16e3d6f3cb chore: bk 2022-10-28 17:19:58 +08:00
Zixuan Chen
bf8973c758 feat: set range
fix: update cache

chore: remove useless tests

chore: add bench script
2022-10-28 15:25:11 +08:00
Zixuan Chen
b80a70bb2d fix: reduce unsafe code 2022-10-27 16:10:22 +08:00
Zixuan Chen
328d0517c0 chore: update crdt-list dep 2022-10-26 23:35:21 +08:00
Zixuan Chen
95e514b329 refactor: simplify delete 2022-10-26 23:31:34 +08:00
Zixuan Chen
105ab9b5ef chore: micro optimization 2022-10-26 23:31:34 +08:00
Zixuan Chen
9770fb50f3 chore: cargo fix 2022-10-26 23:31:34 +08:00
Zixuan Chen
6a2da8a01f fix: avoid potential memory leak 2022-10-26 23:31:34 +08:00
Zixuan Chen
dc4571f389 refactor: remove unnecessary field 2022-10-26 23:31:34 +08:00
Zixuan Chen
02ebfbc0fc fix: remove a few unsafe blocks about create cursor 2022-10-26 23:31:34 +08:00
Zixuan Chen
e7daca728b refactor: cursor should not impl copy 2022-10-26 23:31:34 +08:00
Zixuan Chen
b280c21860 refactor: add RleVecWithLen to impl HasLength 2022-10-26 23:31:34 +08:00
Zixuan Chen
22f9ba3f3c refactor: rename len method in old rlevec 2022-10-26 23:31:34 +08:00
Zixuan Chen
5220ca70f1 refactor: move rle vec impl 2022-10-26 23:31:34 +08:00
Zixuan Chen
0d89349731 refactor: use rle vec for ops 2022-10-26 23:31:34 +08:00
Zixuan Chen
1c5cd948ed feat: new rle vec 2022-10-26 23:31:34 +08:00
Zixuan Chen
79aec7544a refactor: rename HasLength functions 2022-10-26 23:31:34 +08:00
Zixuan Chen
e521229da2 refactor: move trait logic to one file 2022-10-26 23:31:34 +08:00
Zixuan Chen
7e5c9b0b0f fix: rename has global index 2022-10-26 23:31:34 +08:00
Zixuan Chen
d69eca5dc5 refactor: rename rle vec to rle vec with index 2022-10-26 23:31:34 +08:00
Zixuan Chen
bfd5e090d9 refactor: use list slice 2022-10-26 23:31:34 +08:00
Zixuan Chen
5a95a3c04d chore: cargo fix 2022-10-26 23:31:34 +08:00
Zixuan Chen
7284301ce8 doc: add sliceable doc 2022-10-26 23:31:34 +08:00
Zixuan Chen
478491831d fix: rle iter logic 2022-10-26 23:31:34 +08:00
Zixuan Chen
b0572016a0 fix: effect iter, get_cursor_at_id_span bug 2022-10-26 23:31:34 +08:00