loro/Cargo.lock

2889 lines
71 KiB
Text
Raw Normal View History

# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "addr2line"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97"
dependencies = [
"gimli",
]
[[package]]
name = "adler"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
feat: memkv export import all (#422) * feat: sstable * fix: add magic number version * feat: new mem kv store based sstable * feat: binary_search * fix: sstable iter scan * fix: new mem kv * feat: add cache for sstable * fix: encode schema comment * fix: sstable iter scan * chore: clean * fix: export all * fix: sstable scan bound * fix: sstable iter scan next==prev * fix: merge iter next_back * fix: mem kv export * chore: clean * fix: prev to key * fix: prev find block * fix: get prev block idx * refactor: kv store * fix: checksum when import * fix: meta first last key * Revert "fix: meta first last key" This reverts commit a069c1ed37f89f04e1b7a51c3a91f562819a72f5. * fix: skip empty iter * fix: remove key from large block * chore: comment * feat: compress block * fix: remove key in large block * chore: const * doc: intro sstable encode * test: add kv store fuzz * style: format file * feat: add fuzz to kv store (#428) * fix: kv fuzzer * fix: debug * bk * fix: block iter next back * fix: block prev iter left = next idx * feat: move kv store a crate * fix: remove value len from normal block * doc: sstable format * test: add more test * test: add test * feat: new merge iter * chore: revert * fix: rename next back * fix: rename mem sstable * fix: rename to mem * fix: use Bytes as key * fix: use simple merge iter * feat: compress option * fix: remove empty iter * style: refine some impl details * fix: large block compress * feat: use write read for encode * doc: refine doc * fix: simplify the first chunk * feat: import many times * refactor: refine styles * test: fuzz merge iter * fix: rename peek_xxx() * fix: better sstable iter inner * fix: use mem kv store * pref: mem kv store * perf: export mem kv * chore: clean --------- Co-authored-by: Zixuan Chen <remch183@outlook.com>
2024-08-30 03:44:34 +00:00
[[package]]
name = "ahash"
version = "0.8.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
dependencies = [
"cfg-if",
"getrandom",
"once_cell",
"version_check",
"zerocopy",
]
[[package]]
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
name = "android-tzdata"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
[[package]]
name = "android_system_properties"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
dependencies = [
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"libc",
]
2022-10-27 08:36:04 +00:00
[[package]]
name = "anes"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
[[package]]
name = "anstyle"
version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc"
[[package]]
name = "anyhow"
version = "1.0.86"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
[[package]]
name = "append-only-bytes"
Feat: Peritext-like rich text support (#123) * feat: richtext wip * feat: add insert to style range map wip * feat: richtext state * fix: fix style state inserting and style map * fix: tiny vec merge err * fix: comment err * refactor: use new generic-btree & refine impl * feat: fugue tracker * feat: tracker * feat: tracker * fix: fix a few err in impl * feat: init richtext content state * feat: refactor arena * feat: extract anchor_type info out of style flag * refactor: state apply op more efficiently we can now reuse the repr in state and op * fix: new clippy errors * refactor: use state chunk as delta item * refactor: use two op to insert style start and style end * feat: diff calc * feat: handler * fix: tracker checkout err * fix: pass basic richtext handler tests * fix: pass handler basic marking tests * fix: pass all peritext criteria * feat: snapshot encoding for richtext init * refactor: replace Text with Richtext * refacotr: rm text code * fix: richtext checkout err * refactor: diff of text and map * refactor: del span * refactor: event * fix: fuzz err * fix: pass all tests * fix: fuzz err * fix: list child cache err * chore: rm debug code * fix: encode enhanced err * fix: encode enchanced * fix: fix several richtext issue * fix: richtext anchor err * chore: rm debug code * fix: richtext fuzz err * feat: speedup text snapshot decode * perf: optimize snapshot encoding * perf: speed up decode & insert * fix: fugue span merge err * perf: speedup delete & id cursor map * fix: fugue merge err * chore: update utils * perf: speedup text insert / del * fix: cursor cache * perf: reduce conversion by introducing InsertText * perf: speed up by refined cursor cache * chore: update gbtree dep * refactor(wasm): use quill delta format * chore: fix warnings
2023-10-29 06:02:13 +00:00
version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
Feat: Peritext-like rich text support (#123) * feat: richtext wip * feat: add insert to style range map wip * feat: richtext state * fix: fix style state inserting and style map * fix: tiny vec merge err * fix: comment err * refactor: use new generic-btree & refine impl * feat: fugue tracker * feat: tracker * feat: tracker * fix: fix a few err in impl * feat: init richtext content state * feat: refactor arena * feat: extract anchor_type info out of style flag * refactor: state apply op more efficiently we can now reuse the repr in state and op * fix: new clippy errors * refactor: use state chunk as delta item * refactor: use two op to insert style start and style end * feat: diff calc * feat: handler * fix: tracker checkout err * fix: pass basic richtext handler tests * fix: pass handler basic marking tests * fix: pass all peritext criteria * feat: snapshot encoding for richtext init * refactor: replace Text with Richtext * refacotr: rm text code * fix: richtext checkout err * refactor: diff of text and map * refactor: del span * refactor: event * fix: fuzz err * fix: pass all tests * fix: fuzz err * fix: list child cache err * chore: rm debug code * fix: encode enhanced err * fix: encode enchanced * fix: fix several richtext issue * fix: richtext anchor err * chore: rm debug code * fix: richtext fuzz err * feat: speedup text snapshot decode * perf: optimize snapshot encoding * perf: speed up decode & insert * fix: fugue span merge err * perf: speedup delete & id cursor map * fix: fugue merge err * chore: update utils * perf: speedup text insert / del * fix: cursor cache * perf: reduce conversion by introducing InsertText * perf: speed up by refined cursor cache * chore: update gbtree dep * refactor(wasm): use quill delta format * chore: fix warnings
2023-10-29 06:02:13 +00:00
checksum = "ac436601d6bdde674a0d7fb593e829ffe7b3387c351b356dd20e2d40f5bf3ee5"
2022-10-08 18:04:41 +00:00
[[package]]
name = "arbitrary"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.3.0"
2022-10-08 18:04:41 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "e2d098ff73c1ca148721f37baad5ea6a465a13f9573aba8641fbbbae8164a54e"
2022-10-08 18:04:41 +00:00
dependencies = [
"derive_arbitrary",
]
[[package]]
name = "arbtest"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d48cee94156b8405b421abf4dc77852a150448f2ece19293238693aa316c75ab"
dependencies = [
"arbitrary",
]
[[package]]
name = "arrayvec"
version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
2022-10-03 09:35:44 +00:00
[[package]]
name = "arref"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2ccd462b64c3c72f1be8305905a85d85403d768e8690c9b8bd3b9009a5761679"
[[package]]
name = "atomic-polyfill"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "e3ff7eb3f316534d83a8a2c3d1674ace8a5a71198eba31e2e2b597833f699b28"
dependencies = [
"critical-section",
]
[[package]]
name = "atty"
version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
dependencies = [
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"hermit-abi 0.1.19",
"libc",
"winapi",
]
[[package]]
name = "autocfg"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]]
name = "backtrace"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.3.67"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca"
dependencies = [
"addr2line",
"cc",
"cfg-if",
"libc",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"miniz_oxide 0.6.2",
"object",
"rustc-demangle",
]
feat: stabilizing encoding (#219) This PR implements a new encode schema that is more extendible and more compact. It’s also simpler and takes less binary size and maintaining effort. It is inspired by the [Automerge Encoding Format](https://automerge.org/automerge-binary-format-spec/). The main motivation is the extensibility. When we integrate a new CRDT algorithm, we don’t want to make a breaking change to the encoding or keep multiple versions of the encoding schema in the code, as it will make our WASM size much larger. We need a stable and extendible encoding schema for our v1.0 version. This PR also exposes the ops that compose the current container state. For example, now you can make a query about which operation a certain character quickly. This behavior is required in the new snapshot encoding, so it’s included in this PR. # Encoding Schema ## Header The header has 22 bytes. - (0-4 bytes) Magic Bytes: The encoding starts with `loro` as magic bytes. - (4-20 bytes) Checksum: MD5 checksum of the encoded data, including the header starting from 20th bytes. The checksum is encoded as a 16-byte array. The `checksum` and `magic bytes` fields are trimmed when calculating the checksum. - (20-21 bytes) Encoding Method (2 bytes, big endian): Multiple encoding methods are available for a specific encoding version. ## Encode Mode: Updates In this approach, only ops, specifically their historical record, are encoded, while document states are excluded. Like Automerge's format, we employ columnar encoding for operations and changes. Previously, operations were ordered by their Operation ID (OpId) before columnar encoding. However, sorting operations based on their respective containers initially enhance compression potential. ## Encode Mode: Snapshot This mode simultaneously captures document state and historical data. Upon importing a snapshot into a new document, initialization occurs directly from the snapshot, bypassing the need for CRDT-based recalculations. Unlike previous snapshot encoding methods, the current binary output in snapshot mode is compatible with the updates mode. This enhances the efficiency of importing snapshots into non-empty documents, where initialization via snapshot is infeasible. Additionally, when feasible, we leverage the sequence of operations to construct state snapshots. In CRDTs, deducing the specific ops constituting the current container state is feasible. These ops are tagged in relation to the container, facilitating direct state reconstruction from them. This approach, pioneered by Automerge, significantly improves compression efficiency.
2024-01-02 09:03:24 +00:00
[[package]]
name = "base64"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.21.5"
feat: stabilizing encoding (#219) This PR implements a new encode schema that is more extendible and more compact. It’s also simpler and takes less binary size and maintaining effort. It is inspired by the [Automerge Encoding Format](https://automerge.org/automerge-binary-format-spec/). The main motivation is the extensibility. When we integrate a new CRDT algorithm, we don’t want to make a breaking change to the encoding or keep multiple versions of the encoding schema in the code, as it will make our WASM size much larger. We need a stable and extendible encoding schema for our v1.0 version. This PR also exposes the ops that compose the current container state. For example, now you can make a query about which operation a certain character quickly. This behavior is required in the new snapshot encoding, so it’s included in this PR. # Encoding Schema ## Header The header has 22 bytes. - (0-4 bytes) Magic Bytes: The encoding starts with `loro` as magic bytes. - (4-20 bytes) Checksum: MD5 checksum of the encoded data, including the header starting from 20th bytes. The checksum is encoded as a 16-byte array. The `checksum` and `magic bytes` fields are trimmed when calculating the checksum. - (20-21 bytes) Encoding Method (2 bytes, big endian): Multiple encoding methods are available for a specific encoding version. ## Encode Mode: Updates In this approach, only ops, specifically their historical record, are encoded, while document states are excluded. Like Automerge's format, we employ columnar encoding for operations and changes. Previously, operations were ordered by their Operation ID (OpId) before columnar encoding. However, sorting operations based on their respective containers initially enhance compression potential. ## Encode Mode: Snapshot This mode simultaneously captures document state and historical data. Upon importing a snapshot into a new document, initialization occurs directly from the snapshot, bypassing the need for CRDT-based recalculations. Unlike previous snapshot encoding methods, the current binary output in snapshot mode is compatible with the updates mode. This enhances the efficiency of importing snapshots into non-empty documents, where initialization via snapshot is infeasible. Additionally, when feasible, we leverage the sequence of operations to construct state snapshots. In CRDTs, deducing the specific ops constituting the current container state is feasible. These ops are tagged in relation to the container, facilitating direct state reconstruction from them. This approach, pioneered by Automerge, significantly improves compression efficiency.
2024-01-02 09:03:24 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9"
feat: stabilizing encoding (#219) This PR implements a new encode schema that is more extendible and more compact. It’s also simpler and takes less binary size and maintaining effort. It is inspired by the [Automerge Encoding Format](https://automerge.org/automerge-binary-format-spec/). The main motivation is the extensibility. When we integrate a new CRDT algorithm, we don’t want to make a breaking change to the encoding or keep multiple versions of the encoding schema in the code, as it will make our WASM size much larger. We need a stable and extendible encoding schema for our v1.0 version. This PR also exposes the ops that compose the current container state. For example, now you can make a query about which operation a certain character quickly. This behavior is required in the new snapshot encoding, so it’s included in this PR. # Encoding Schema ## Header The header has 22 bytes. - (0-4 bytes) Magic Bytes: The encoding starts with `loro` as magic bytes. - (4-20 bytes) Checksum: MD5 checksum of the encoded data, including the header starting from 20th bytes. The checksum is encoded as a 16-byte array. The `checksum` and `magic bytes` fields are trimmed when calculating the checksum. - (20-21 bytes) Encoding Method (2 bytes, big endian): Multiple encoding methods are available for a specific encoding version. ## Encode Mode: Updates In this approach, only ops, specifically their historical record, are encoded, while document states are excluded. Like Automerge's format, we employ columnar encoding for operations and changes. Previously, operations were ordered by their Operation ID (OpId) before columnar encoding. However, sorting operations based on their respective containers initially enhance compression potential. ## Encode Mode: Snapshot This mode simultaneously captures document state and historical data. Upon importing a snapshot into a new document, initialization occurs directly from the snapshot, bypassing the need for CRDT-based recalculations. Unlike previous snapshot encoding methods, the current binary output in snapshot mode is compatible with the updates mode. This enhances the efficiency of importing snapshots into non-empty documents, where initialization via snapshot is infeasible. Additionally, when feasible, we leverage the sequence of operations to construct state snapshots. In CRDTs, deducing the specific ops constituting the current container state is feasible. These ops are tagged in relation to the container, facilitating direct state reconstruction from them. This approach, pioneered by Automerge, significantly improves compression efficiency.
2024-01-02 09:03:24 +00:00
2022-12-27 06:18:46 +00:00
[[package]]
name = "bench-utils"
version = "0.1.0"
dependencies = [
"arbitrary",
"enum-as-inner 0.5.1",
2022-12-27 06:18:46 +00:00
"flate2",
2024-09-07 12:01:33 +00:00
"loro-common 0.16.12",
2022-12-27 06:18:46 +00:00
"rand",
"serde_json",
]
[[package]]
name = "bit-set"
version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1"
dependencies = [
"bit-vec",
]
[[package]]
name = "bit-vec"
version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
[[package]]
name = "bitflags"
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
2023-07-02 16:40:05 +00:00
[[package]]
name = "bitmaps"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "031043d04099746d8db04daf1fa424b2bc8bd69d92b25962dcde24da39ab64a2"
dependencies = [
"typenum",
]
[[package]]
name = "bitmaps"
version = "3.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1d084b0137aaa901caf9f1e8b21daa6aa24d41cd806e111335541eff9683bd6"
[[package]]
name = "bumpalo"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "3.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba"
2022-10-15 16:26:29 +00:00
[[package]]
name = "bytecount"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.6.3"
2022-10-15 16:26:29 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c"
2022-10-15 16:26:29 +00:00
[[package]]
name = "byteorder"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
[[package]]
name = "bytes"
version = "1.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50"
2022-10-27 08:36:04 +00:00
[[package]]
name = "cast"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
2023-01-28 11:59:37 +00:00
[[package]]
feat: stabilizing encoding (#219) This PR implements a new encode schema that is more extendible and more compact. It’s also simpler and takes less binary size and maintaining effort. It is inspired by the [Automerge Encoding Format](https://automerge.org/automerge-binary-format-spec/). The main motivation is the extensibility. When we integrate a new CRDT algorithm, we don’t want to make a breaking change to the encoding or keep multiple versions of the encoding schema in the code, as it will make our WASM size much larger. We need a stable and extendible encoding schema for our v1.0 version. This PR also exposes the ops that compose the current container state. For example, now you can make a query about which operation a certain character quickly. This behavior is required in the new snapshot encoding, so it’s included in this PR. # Encoding Schema ## Header The header has 22 bytes. - (0-4 bytes) Magic Bytes: The encoding starts with `loro` as magic bytes. - (4-20 bytes) Checksum: MD5 checksum of the encoded data, including the header starting from 20th bytes. The checksum is encoded as a 16-byte array. The `checksum` and `magic bytes` fields are trimmed when calculating the checksum. - (20-21 bytes) Encoding Method (2 bytes, big endian): Multiple encoding methods are available for a specific encoding version. ## Encode Mode: Updates In this approach, only ops, specifically their historical record, are encoded, while document states are excluded. Like Automerge's format, we employ columnar encoding for operations and changes. Previously, operations were ordered by their Operation ID (OpId) before columnar encoding. However, sorting operations based on their respective containers initially enhance compression potential. ## Encode Mode: Snapshot This mode simultaneously captures document state and historical data. Upon importing a snapshot into a new document, initialization occurs directly from the snapshot, bypassing the need for CRDT-based recalculations. Unlike previous snapshot encoding methods, the current binary output in snapshot mode is compatible with the updates mode. This enhances the efficiency of importing snapshots into non-empty documents, where initialization via snapshot is infeasible. Additionally, when feasible, we leverage the sequence of operations to construct state snapshots. In CRDTs, deducing the specific ops constituting the current container state is feasible. These ops are tagged in relation to the container, facilitating direct state reconstruction from them. This approach, pioneered by Automerge, significantly improves compression efficiency.
2024-01-02 09:03:24 +00:00
name = "cc"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.0.83"
2023-01-28 11:59:37 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
2023-01-28 11:59:37 +00:00
dependencies = [
"jobserver",
feat: stabilizing encoding (#219) This PR implements a new encode schema that is more extendible and more compact. It’s also simpler and takes less binary size and maintaining effort. It is inspired by the [Automerge Encoding Format](https://automerge.org/automerge-binary-format-spec/). The main motivation is the extensibility. When we integrate a new CRDT algorithm, we don’t want to make a breaking change to the encoding or keep multiple versions of the encoding schema in the code, as it will make our WASM size much larger. We need a stable and extendible encoding schema for our v1.0 version. This PR also exposes the ops that compose the current container state. For example, now you can make a query about which operation a certain character quickly. This behavior is required in the new snapshot encoding, so it’s included in this PR. # Encoding Schema ## Header The header has 22 bytes. - (0-4 bytes) Magic Bytes: The encoding starts with `loro` as magic bytes. - (4-20 bytes) Checksum: MD5 checksum of the encoded data, including the header starting from 20th bytes. The checksum is encoded as a 16-byte array. The `checksum` and `magic bytes` fields are trimmed when calculating the checksum. - (20-21 bytes) Encoding Method (2 bytes, big endian): Multiple encoding methods are available for a specific encoding version. ## Encode Mode: Updates In this approach, only ops, specifically their historical record, are encoded, while document states are excluded. Like Automerge's format, we employ columnar encoding for operations and changes. Previously, operations were ordered by their Operation ID (OpId) before columnar encoding. However, sorting operations based on their respective containers initially enhance compression potential. ## Encode Mode: Snapshot This mode simultaneously captures document state and historical data. Upon importing a snapshot into a new document, initialization occurs directly from the snapshot, bypassing the need for CRDT-based recalculations. Unlike previous snapshot encoding methods, the current binary output in snapshot mode is compatible with the updates mode. This enhances the efficiency of importing snapshots into non-empty documents, where initialization via snapshot is infeasible. Additionally, when feasible, we leverage the sequence of operations to construct state snapshots. In CRDTs, deducing the specific ops constituting the current container state is feasible. These ops are tagged in relation to the container, facilitating direct state reconstruction from them. This approach, pioneered by Automerge, significantly improves compression efficiency.
2024-01-02 09:03:24 +00:00
"libc",
2023-01-28 11:59:37 +00:00
]
[[package]]
name = "cfg-if"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
[[package]]
name = "chrono"
version = "0.4.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a"
dependencies = [
"android-tzdata",
"iana-time-zone",
"js-sys",
"num-traits",
"wasm-bindgen",
"windows-targets 0.52.4",
]
2022-10-27 08:36:04 +00:00
[[package]]
name = "ciborium"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.2.0"
2022-10-27 08:36:04 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
2022-10-27 08:36:04 +00:00
dependencies = [
"ciborium-io",
"ciborium-ll",
"serde",
]
[[package]]
name = "ciborium-io"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.2.0"
2022-10-27 08:36:04 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
2022-10-27 08:36:04 +00:00
[[package]]
name = "ciborium-ll"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.2.0"
2022-10-27 08:36:04 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
2022-10-27 08:36:04 +00:00
dependencies = [
"ciborium-io",
"half",
]
[[package]]
name = "clap"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "3.2.23"
2022-10-27 08:36:04 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
2022-10-27 08:36:04 +00:00
dependencies = [
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"bitflags",
"clap_lex 0.2.4",
2022-10-27 08:36:04 +00:00
"indexmap",
"textwrap",
]
[[package]]
name = "clap"
version = "4.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0"
dependencies = [
"clap_builder",
]
[[package]]
name = "clap_builder"
version = "4.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4"
dependencies = [
"anstyle",
"clap_lex 0.7.0",
]
2022-10-27 08:36:04 +00:00
[[package]]
name = "clap_lex"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
dependencies = [
"os_str_bytes",
]
[[package]]
name = "clap_lex"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce"
[[package]]
name = "cobs"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15"
feat: stabilizing encoding (#219) This PR implements a new encode schema that is more extendible and more compact. It’s also simpler and takes less binary size and maintaining effort. It is inspired by the [Automerge Encoding Format](https://automerge.org/automerge-binary-format-spec/). The main motivation is the extensibility. When we integrate a new CRDT algorithm, we don’t want to make a breaking change to the encoding or keep multiple versions of the encoding schema in the code, as it will make our WASM size much larger. We need a stable and extendible encoding schema for our v1.0 version. This PR also exposes the ops that compose the current container state. For example, now you can make a query about which operation a certain character quickly. This behavior is required in the new snapshot encoding, so it’s included in this PR. # Encoding Schema ## Header The header has 22 bytes. - (0-4 bytes) Magic Bytes: The encoding starts with `loro` as magic bytes. - (4-20 bytes) Checksum: MD5 checksum of the encoded data, including the header starting from 20th bytes. The checksum is encoded as a 16-byte array. The `checksum` and `magic bytes` fields are trimmed when calculating the checksum. - (20-21 bytes) Encoding Method (2 bytes, big endian): Multiple encoding methods are available for a specific encoding version. ## Encode Mode: Updates In this approach, only ops, specifically their historical record, are encoded, while document states are excluded. Like Automerge's format, we employ columnar encoding for operations and changes. Previously, operations were ordered by their Operation ID (OpId) before columnar encoding. However, sorting operations based on their respective containers initially enhance compression potential. ## Encode Mode: Snapshot This mode simultaneously captures document state and historical data. Upon importing a snapshot into a new document, initialization occurs directly from the snapshot, bypassing the need for CRDT-based recalculations. Unlike previous snapshot encoding methods, the current binary output in snapshot mode is compatible with the updates mode. This enhances the efficiency of importing snapshots into non-empty documents, where initialization via snapshot is infeasible. Additionally, when feasible, we leverage the sequence of operations to construct state snapshots. In CRDTs, deducing the specific ops constituting the current container state is feasible. These ops are tagged in relation to the container, facilitating direct state reconstruction from them. This approach, pioneered by Automerge, significantly improves compression efficiency.
2024-01-02 09:03:24 +00:00
[[package]]
name = "color-backtrace"
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "150fd80a270c0671379f388c8204deb6a746bb4eac8a6c03fe2460b2c0127ea0"
dependencies = [
"backtrace",
"termcolor",
]
2022-11-23 04:52:46 +00:00
[[package]]
name = "console_error_panic_hook"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc"
dependencies = [
"cfg-if",
"wasm-bindgen",
]
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
[[package]]
name = "core-foundation-sys"
version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
2022-10-31 08:16:44 +00:00
[[package]]
name = "crc32fast"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.3.2"
2022-10-31 08:16:44 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
2022-10-31 08:16:44 +00:00
dependencies = [
"cfg-if",
]
2022-10-27 08:36:04 +00:00
[[package]]
name = "criterion"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
dependencies = [
"anes",
"atty",
"cast",
"ciborium",
"clap 3.2.23",
2022-10-27 08:36:04 +00:00
"criterion-plot",
2023-09-08 00:21:46 +00:00
"itertools 0.10.5",
2022-10-27 08:36:04 +00:00
"lazy_static",
"num-traits",
"oorandom",
"plotters",
"rayon",
"regex",
"serde",
"serde_derive",
"serde_json",
"tinytemplate",
"walkdir",
]
[[package]]
name = "criterion"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f"
dependencies = [
"anes",
"cast",
"ciborium",
"clap 4.5.4",
"criterion-plot",
"is-terminal",
"itertools 0.10.5",
"num-traits",
"once_cell",
"oorandom",
"plotters",
"rayon",
"regex",
"serde",
"serde_derive",
"serde_json",
"tinytemplate",
"walkdir",
]
2022-10-27 08:36:04 +00:00
[[package]]
name = "criterion-plot"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
dependencies = [
"cast",
2023-09-08 00:21:46 +00:00
"itertools 0.10.5",
2022-10-27 08:36:04 +00:00
]
[[package]]
name = "critical-section"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6548a0ad5d2549e111e1f6a11a6c2e2d00ce6a3dafe22948d67c2b443f775e52"
2022-10-27 08:36:04 +00:00
[[package]]
name = "crossbeam-deque"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.8.2"
2022-10-27 08:36:04 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc"
2022-10-27 08:36:04 +00:00
dependencies = [
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"cfg-if",
2022-10-27 08:36:04 +00:00
"crossbeam-epoch",
"crossbeam-utils",
]
[[package]]
name = "crossbeam-epoch"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.9.13"
2022-10-27 08:36:04 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a"
2022-10-27 08:36:04 +00:00
dependencies = [
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"autocfg",
"cfg-if",
2022-10-27 08:36:04 +00:00
"crossbeam-utils",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"memoffset",
"scopeguard",
2022-10-27 08:36:04 +00:00
]
[[package]]
name = "crossbeam-utils"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.8.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f"
dependencies = [
"cfg-if",
]
2022-10-27 08:36:04 +00:00
[[package]]
name = "ctor"
2022-10-26 15:35:21 +00:00
version = "0.1.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
2022-10-26 15:35:21 +00:00
checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096"
dependencies = [
"quote 1.0.35",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"syn 1.0.107",
]
feat: stabilizing encoding (#219) This PR implements a new encode schema that is more extendible and more compact. It’s also simpler and takes less binary size and maintaining effort. It is inspired by the [Automerge Encoding Format](https://automerge.org/automerge-binary-format-spec/). The main motivation is the extensibility. When we integrate a new CRDT algorithm, we don’t want to make a breaking change to the encoding or keep multiple versions of the encoding schema in the code, as it will make our WASM size much larger. We need a stable and extendible encoding schema for our v1.0 version. This PR also exposes the ops that compose the current container state. For example, now you can make a query about which operation a certain character quickly. This behavior is required in the new snapshot encoding, so it’s included in this PR. # Encoding Schema ## Header The header has 22 bytes. - (0-4 bytes) Magic Bytes: The encoding starts with `loro` as magic bytes. - (4-20 bytes) Checksum: MD5 checksum of the encoded data, including the header starting from 20th bytes. The checksum is encoded as a 16-byte array. The `checksum` and `magic bytes` fields are trimmed when calculating the checksum. - (20-21 bytes) Encoding Method (2 bytes, big endian): Multiple encoding methods are available for a specific encoding version. ## Encode Mode: Updates In this approach, only ops, specifically their historical record, are encoded, while document states are excluded. Like Automerge's format, we employ columnar encoding for operations and changes. Previously, operations were ordered by their Operation ID (OpId) before columnar encoding. However, sorting operations based on their respective containers initially enhance compression potential. ## Encode Mode: Snapshot This mode simultaneously captures document state and historical data. Upon importing a snapshot into a new document, initialization occurs directly from the snapshot, bypassing the need for CRDT-based recalculations. Unlike previous snapshot encoding methods, the current binary output in snapshot mode is compatible with the updates mode. This enhances the efficiency of importing snapshots into non-empty documents, where initialization via snapshot is infeasible. Additionally, when feasible, we leverage the sequence of operations to construct state snapshots. In CRDTs, deducing the specific ops constituting the current container state is feasible. These ops are tagged in relation to the container, facilitating direct state reconstruction from them. This approach, pioneered by Automerge, significantly improves compression efficiency.
2024-01-02 09:03:24 +00:00
[[package]]
name = "ctor"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.2.6"
feat: stabilizing encoding (#219) This PR implements a new encode schema that is more extendible and more compact. It’s also simpler and takes less binary size and maintaining effort. It is inspired by the [Automerge Encoding Format](https://automerge.org/automerge-binary-format-spec/). The main motivation is the extensibility. When we integrate a new CRDT algorithm, we don’t want to make a breaking change to the encoding or keep multiple versions of the encoding schema in the code, as it will make our WASM size much larger. We need a stable and extendible encoding schema for our v1.0 version. This PR also exposes the ops that compose the current container state. For example, now you can make a query about which operation a certain character quickly. This behavior is required in the new snapshot encoding, so it’s included in this PR. # Encoding Schema ## Header The header has 22 bytes. - (0-4 bytes) Magic Bytes: The encoding starts with `loro` as magic bytes. - (4-20 bytes) Checksum: MD5 checksum of the encoded data, including the header starting from 20th bytes. The checksum is encoded as a 16-byte array. The `checksum` and `magic bytes` fields are trimmed when calculating the checksum. - (20-21 bytes) Encoding Method (2 bytes, big endian): Multiple encoding methods are available for a specific encoding version. ## Encode Mode: Updates In this approach, only ops, specifically their historical record, are encoded, while document states are excluded. Like Automerge's format, we employ columnar encoding for operations and changes. Previously, operations were ordered by their Operation ID (OpId) before columnar encoding. However, sorting operations based on their respective containers initially enhance compression potential. ## Encode Mode: Snapshot This mode simultaneously captures document state and historical data. Upon importing a snapshot into a new document, initialization occurs directly from the snapshot, bypassing the need for CRDT-based recalculations. Unlike previous snapshot encoding methods, the current binary output in snapshot mode is compatible with the updates mode. This enhances the efficiency of importing snapshots into non-empty documents, where initialization via snapshot is infeasible. Additionally, when feasible, we leverage the sequence of operations to construct state snapshots. In CRDTs, deducing the specific ops constituting the current container state is feasible. These ops are tagged in relation to the container, facilitating direct state reconstruction from them. This approach, pioneered by Automerge, significantly improves compression efficiency.
2024-01-02 09:03:24 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "30d2b3721e861707777e3195b0158f950ae6dc4a27e4d02ff9f67e3eb3de199e"
feat: stabilizing encoding (#219) This PR implements a new encode schema that is more extendible and more compact. It’s also simpler and takes less binary size and maintaining effort. It is inspired by the [Automerge Encoding Format](https://automerge.org/automerge-binary-format-spec/). The main motivation is the extensibility. When we integrate a new CRDT algorithm, we don’t want to make a breaking change to the encoding or keep multiple versions of the encoding schema in the code, as it will make our WASM size much larger. We need a stable and extendible encoding schema for our v1.0 version. This PR also exposes the ops that compose the current container state. For example, now you can make a query about which operation a certain character quickly. This behavior is required in the new snapshot encoding, so it’s included in this PR. # Encoding Schema ## Header The header has 22 bytes. - (0-4 bytes) Magic Bytes: The encoding starts with `loro` as magic bytes. - (4-20 bytes) Checksum: MD5 checksum of the encoded data, including the header starting from 20th bytes. The checksum is encoded as a 16-byte array. The `checksum` and `magic bytes` fields are trimmed when calculating the checksum. - (20-21 bytes) Encoding Method (2 bytes, big endian): Multiple encoding methods are available for a specific encoding version. ## Encode Mode: Updates In this approach, only ops, specifically their historical record, are encoded, while document states are excluded. Like Automerge's format, we employ columnar encoding for operations and changes. Previously, operations were ordered by their Operation ID (OpId) before columnar encoding. However, sorting operations based on their respective containers initially enhance compression potential. ## Encode Mode: Snapshot This mode simultaneously captures document state and historical data. Upon importing a snapshot into a new document, initialization occurs directly from the snapshot, bypassing the need for CRDT-based recalculations. Unlike previous snapshot encoding methods, the current binary output in snapshot mode is compatible with the updates mode. This enhances the efficiency of importing snapshots into non-empty documents, where initialization via snapshot is infeasible. Additionally, when feasible, we leverage the sequence of operations to construct state snapshots. In CRDTs, deducing the specific ops constituting the current container state is feasible. These ops are tagged in relation to the container, facilitating direct state reconstruction from them. This approach, pioneered by Automerge, significantly improves compression efficiency.
2024-01-02 09:03:24 +00:00
dependencies = [
"quote 1.0.35",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"syn 2.0.48",
feat: stabilizing encoding (#219) This PR implements a new encode schema that is more extendible and more compact. It’s also simpler and takes less binary size and maintaining effort. It is inspired by the [Automerge Encoding Format](https://automerge.org/automerge-binary-format-spec/). The main motivation is the extensibility. When we integrate a new CRDT algorithm, we don’t want to make a breaking change to the encoding or keep multiple versions of the encoding schema in the code, as it will make our WASM size much larger. We need a stable and extendible encoding schema for our v1.0 version. This PR also exposes the ops that compose the current container state. For example, now you can make a query about which operation a certain character quickly. This behavior is required in the new snapshot encoding, so it’s included in this PR. # Encoding Schema ## Header The header has 22 bytes. - (0-4 bytes) Magic Bytes: The encoding starts with `loro` as magic bytes. - (4-20 bytes) Checksum: MD5 checksum of the encoded data, including the header starting from 20th bytes. The checksum is encoded as a 16-byte array. The `checksum` and `magic bytes` fields are trimmed when calculating the checksum. - (20-21 bytes) Encoding Method (2 bytes, big endian): Multiple encoding methods are available for a specific encoding version. ## Encode Mode: Updates In this approach, only ops, specifically their historical record, are encoded, while document states are excluded. Like Automerge's format, we employ columnar encoding for operations and changes. Previously, operations were ordered by their Operation ID (OpId) before columnar encoding. However, sorting operations based on their respective containers initially enhance compression potential. ## Encode Mode: Snapshot This mode simultaneously captures document state and historical data. Upon importing a snapshot into a new document, initialization occurs directly from the snapshot, bypassing the need for CRDT-based recalculations. Unlike previous snapshot encoding methods, the current binary output in snapshot mode is compatible with the updates mode. This enhances the efficiency of importing snapshots into non-empty documents, where initialization via snapshot is infeasible. Additionally, when feasible, we leverage the sequence of operations to construct state snapshots. In CRDTs, deducing the specific ops constituting the current container state is feasible. These ops are tagged in relation to the container, facilitating direct state reconstruction from them. This approach, pioneered by Automerge, significantly improves compression efficiency.
2024-01-02 09:03:24 +00:00
]
2023-09-08 00:21:46 +00:00
[[package]]
name = "darling"
version = "0.20.10"
2023-09-08 00:21:46 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989"
2023-09-08 00:21:46 +00:00
dependencies = [
Feat: Peritext-like rich text support (#123) * feat: richtext wip * feat: add insert to style range map wip * feat: richtext state * fix: fix style state inserting and style map * fix: tiny vec merge err * fix: comment err * refactor: use new generic-btree & refine impl * feat: fugue tracker * feat: tracker * feat: tracker * fix: fix a few err in impl * feat: init richtext content state * feat: refactor arena * feat: extract anchor_type info out of style flag * refactor: state apply op more efficiently we can now reuse the repr in state and op * fix: new clippy errors * refactor: use state chunk as delta item * refactor: use two op to insert style start and style end * feat: diff calc * feat: handler * fix: tracker checkout err * fix: pass basic richtext handler tests * fix: pass handler basic marking tests * fix: pass all peritext criteria * feat: snapshot encoding for richtext init * refactor: replace Text with Richtext * refacotr: rm text code * fix: richtext checkout err * refactor: diff of text and map * refactor: del span * refactor: event * fix: fuzz err * fix: pass all tests * fix: fuzz err * fix: list child cache err * chore: rm debug code * fix: encode enhanced err * fix: encode enchanced * fix: fix several richtext issue * fix: richtext anchor err * chore: rm debug code * fix: richtext fuzz err * feat: speedup text snapshot decode * perf: optimize snapshot encoding * perf: speed up decode & insert * fix: fugue span merge err * perf: speedup delete & id cursor map * fix: fugue merge err * chore: update utils * perf: speedup text insert / del * fix: cursor cache * perf: reduce conversion by introducing InsertText * perf: speed up by refined cursor cache * chore: update gbtree dep * refactor(wasm): use quill delta format * chore: fix warnings
2023-10-29 06:02:13 +00:00
"darling_core",
"darling_macro",
]
2023-09-08 00:21:46 +00:00
[[package]]
name = "darling_core"
version = "0.20.10"
2023-09-08 00:21:46 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5"
2023-09-08 00:21:46 +00:00
dependencies = [
"fnv",
"ident_case",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"proc-macro2 1.0.75",
"quote 1.0.35",
2023-09-08 00:21:46 +00:00
"strsim",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"syn 2.0.48",
2023-09-08 00:21:46 +00:00
]
[[package]]
name = "darling_macro"
version = "0.20.10"
2023-09-08 00:21:46 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
2023-09-08 00:21:46 +00:00
dependencies = [
Feat: Peritext-like rich text support (#123) * feat: richtext wip * feat: add insert to style range map wip * feat: richtext state * fix: fix style state inserting and style map * fix: tiny vec merge err * fix: comment err * refactor: use new generic-btree & refine impl * feat: fugue tracker * feat: tracker * feat: tracker * fix: fix a few err in impl * feat: init richtext content state * feat: refactor arena * feat: extract anchor_type info out of style flag * refactor: state apply op more efficiently we can now reuse the repr in state and op * fix: new clippy errors * refactor: use state chunk as delta item * refactor: use two op to insert style start and style end * feat: diff calc * feat: handler * fix: tracker checkout err * fix: pass basic richtext handler tests * fix: pass handler basic marking tests * fix: pass all peritext criteria * feat: snapshot encoding for richtext init * refactor: replace Text with Richtext * refacotr: rm text code * fix: richtext checkout err * refactor: diff of text and map * refactor: del span * refactor: event * fix: fuzz err * fix: pass all tests * fix: fuzz err * fix: list child cache err * chore: rm debug code * fix: encode enhanced err * fix: encode enchanced * fix: fix several richtext issue * fix: richtext anchor err * chore: rm debug code * fix: richtext fuzz err * feat: speedup text snapshot decode * perf: optimize snapshot encoding * perf: speed up decode & insert * fix: fugue span merge err * perf: speedup delete & id cursor map * fix: fugue merge err * chore: update utils * perf: speedup text insert / del * fix: cursor cache * perf: reduce conversion by introducing InsertText * perf: speed up by refined cursor cache * chore: update gbtree dep * refactor(wasm): use quill delta format * chore: fix warnings
2023-10-29 06:02:13 +00:00
"darling_core",
"quote 1.0.35",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"syn 2.0.48",
2023-09-08 00:21:46 +00:00
]
[[package]]
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
name = "derive_arbitrary"
version = "1.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "53e0efad4403bfc52dc201159c4b842a246a14b98c64b55dfd0f2d89729dfeb8"
dependencies = [
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"proc-macro2 1.0.75",
"quote 1.0.35",
"syn 2.0.48",
]
2022-10-08 18:04:41 +00:00
[[package]]
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
name = "dev-utils"
version = "0.1.0"
2022-10-08 18:04:41 +00:00
dependencies = [
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"chrono",
"color-backtrace",
"rand",
"tracing",
"tracing-chrome",
"tracing-subscriber",
"tracing-tree",
2022-10-08 18:04:41 +00:00
]
2022-10-26 14:20:09 +00:00
[[package]]
name = "dhat"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.3.2"
2022-10-26 14:20:09 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "4f2aaf837aaf456f6706cb46386ba8dffd4013a757e36f4ea05c20dd46b209a3"
2022-10-26 14:20:09 +00:00
dependencies = [
"backtrace",
"lazy_static",
2022-12-07 12:56:10 +00:00
"mintex",
2022-10-26 14:20:09 +00:00
"parking_lot",
"rustc-hash",
"serde",
"serde_json",
"thousands",
]
2024-09-13 10:39:44 +00:00
[[package]]
name = "diff"
version = "0.1.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
2022-10-27 08:36:04 +00:00
[[package]]
name = "either"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.9.0"
2022-10-27 08:36:04 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
2022-10-27 08:36:04 +00:00
2024-06-13 04:13:30 +00:00
[[package]]
name = "embedded-io"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced"
[[package]]
name = "ensure-cov"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33753185802e107b8fa907192af1f0eca13b1fb33327a59266d650fef29b2b4e"
[[package]]
name = "enum-as-inner"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116"
dependencies = [
"heck",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"proc-macro2 1.0.75",
"quote 1.0.35",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"syn 1.0.107",
]
[[package]]
name = "enum-as-inner"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a"
dependencies = [
"heck",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"proc-macro2 1.0.75",
"quote 1.0.35",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"syn 2.0.48",
]
2023-07-02 15:24:17 +00:00
[[package]]
name = "enum_dispatch"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.3.11"
2023-07-02 15:24:17 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "11f36e95862220b211a6e2aa5eca09b4fa391b13cd52ceb8035a24bf65a79de2"
2023-07-02 15:24:17 +00:00
dependencies = [
"once_cell",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"proc-macro2 1.0.75",
"quote 1.0.35",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"syn 1.0.107",
2023-07-02 15:24:17 +00:00
]
feat: memkv export import all (#422) * feat: sstable * fix: add magic number version * feat: new mem kv store based sstable * feat: binary_search * fix: sstable iter scan * fix: new mem kv * feat: add cache for sstable * fix: encode schema comment * fix: sstable iter scan * chore: clean * fix: export all * fix: sstable scan bound * fix: sstable iter scan next==prev * fix: merge iter next_back * fix: mem kv export * chore: clean * fix: prev to key * fix: prev find block * fix: get prev block idx * refactor: kv store * fix: checksum when import * fix: meta first last key * Revert "fix: meta first last key" This reverts commit a069c1ed37f89f04e1b7a51c3a91f562819a72f5. * fix: skip empty iter * fix: remove key from large block * chore: comment * feat: compress block * fix: remove key in large block * chore: const * doc: intro sstable encode * test: add kv store fuzz * style: format file * feat: add fuzz to kv store (#428) * fix: kv fuzzer * fix: debug * bk * fix: block iter next back * fix: block prev iter left = next idx * feat: move kv store a crate * fix: remove value len from normal block * doc: sstable format * test: add more test * test: add test * feat: new merge iter * chore: revert * fix: rename next back * fix: rename mem sstable * fix: rename to mem * fix: use Bytes as key * fix: use simple merge iter * feat: compress option * fix: remove empty iter * style: refine some impl details * fix: large block compress * feat: use write read for encode * doc: refine doc * fix: simplify the first chunk * feat: import many times * refactor: refine styles * test: fuzz merge iter * fix: rename peek_xxx() * fix: better sstable iter inner * fix: use mem kv store * pref: mem kv store * perf: export mem kv * chore: clean --------- Co-authored-by: Zixuan Chen <remch183@outlook.com>
2024-08-30 03:44:34 +00:00
[[package]]
name = "equivalent"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
feat: stabilizing encoding (#219) This PR implements a new encode schema that is more extendible and more compact. It’s also simpler and takes less binary size and maintaining effort. It is inspired by the [Automerge Encoding Format](https://automerge.org/automerge-binary-format-spec/). The main motivation is the extensibility. When we integrate a new CRDT algorithm, we don’t want to make a breaking change to the encoding or keep multiple versions of the encoding schema in the code, as it will make our WASM size much larger. We need a stable and extendible encoding schema for our v1.0 version. This PR also exposes the ops that compose the current container state. For example, now you can make a query about which operation a certain character quickly. This behavior is required in the new snapshot encoding, so it’s included in this PR. # Encoding Schema ## Header The header has 22 bytes. - (0-4 bytes) Magic Bytes: The encoding starts with `loro` as magic bytes. - (4-20 bytes) Checksum: MD5 checksum of the encoded data, including the header starting from 20th bytes. The checksum is encoded as a 16-byte array. The `checksum` and `magic bytes` fields are trimmed when calculating the checksum. - (20-21 bytes) Encoding Method (2 bytes, big endian): Multiple encoding methods are available for a specific encoding version. ## Encode Mode: Updates In this approach, only ops, specifically their historical record, are encoded, while document states are excluded. Like Automerge's format, we employ columnar encoding for operations and changes. Previously, operations were ordered by their Operation ID (OpId) before columnar encoding. However, sorting operations based on their respective containers initially enhance compression potential. ## Encode Mode: Snapshot This mode simultaneously captures document state and historical data. Upon importing a snapshot into a new document, initialization occurs directly from the snapshot, bypassing the need for CRDT-based recalculations. Unlike previous snapshot encoding methods, the current binary output in snapshot mode is compatible with the updates mode. This enhances the efficiency of importing snapshots into non-empty documents, where initialization via snapshot is infeasible. Additionally, when feasible, we leverage the sequence of operations to construct state snapshots. In CRDTs, deducing the specific ops constituting the current container state is feasible. These ops are tagged in relation to the container, facilitating direct state reconstruction from them. This approach, pioneered by Automerge, significantly improves compression efficiency.
2024-01-02 09:03:24 +00:00
[[package]]
name = "examples"
version = "0.1.0"
dependencies = [
"arbitrary",
"bench-utils",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"color-backtrace",
"criterion 0.4.0",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"ctor 0.2.6",
"dev-utils",
"flate2",
2024-09-07 12:01:33 +00:00
"loro 0.16.12",
"rand",
"serde_json",
feat: stabilizing encoding (#219) This PR implements a new encode schema that is more extendible and more compact. It’s also simpler and takes less binary size and maintaining effort. It is inspired by the [Automerge Encoding Format](https://automerge.org/automerge-binary-format-spec/). The main motivation is the extensibility. When we integrate a new CRDT algorithm, we don’t want to make a breaking change to the encoding or keep multiple versions of the encoding schema in the code, as it will make our WASM size much larger. We need a stable and extendible encoding schema for our v1.0 version. This PR also exposes the ops that compose the current container state. For example, now you can make a query about which operation a certain character quickly. This behavior is required in the new snapshot encoding, so it’s included in this PR. # Encoding Schema ## Header The header has 22 bytes. - (0-4 bytes) Magic Bytes: The encoding starts with `loro` as magic bytes. - (4-20 bytes) Checksum: MD5 checksum of the encoded data, including the header starting from 20th bytes. The checksum is encoded as a 16-byte array. The `checksum` and `magic bytes` fields are trimmed when calculating the checksum. - (20-21 bytes) Encoding Method (2 bytes, big endian): Multiple encoding methods are available for a specific encoding version. ## Encode Mode: Updates In this approach, only ops, specifically their historical record, are encoded, while document states are excluded. Like Automerge's format, we employ columnar encoding for operations and changes. Previously, operations were ordered by their Operation ID (OpId) before columnar encoding. However, sorting operations based on their respective containers initially enhance compression potential. ## Encode Mode: Snapshot This mode simultaneously captures document state and historical data. Upon importing a snapshot into a new document, initialization occurs directly from the snapshot, bypassing the need for CRDT-based recalculations. Unlike previous snapshot encoding methods, the current binary output in snapshot mode is compatible with the updates mode. This enhances the efficiency of importing snapshots into non-empty documents, where initialization via snapshot is infeasible. Additionally, when feasible, we leverage the sequence of operations to construct state snapshots. In CRDTs, deducing the specific ops constituting the current container state is feasible. These ops are tagged in relation to the container, facilitating direct state reconstruction from them. This approach, pioneered by Automerge, significantly improves compression efficiency.
2024-01-02 09:03:24 +00:00
"tabled 0.15.0",
"tracing",
"zstd",
feat: stabilizing encoding (#219) This PR implements a new encode schema that is more extendible and more compact. It’s also simpler and takes less binary size and maintaining effort. It is inspired by the [Automerge Encoding Format](https://automerge.org/automerge-binary-format-spec/). The main motivation is the extensibility. When we integrate a new CRDT algorithm, we don’t want to make a breaking change to the encoding or keep multiple versions of the encoding schema in the code, as it will make our WASM size much larger. We need a stable and extendible encoding schema for our v1.0 version. This PR also exposes the ops that compose the current container state. For example, now you can make a query about which operation a certain character quickly. This behavior is required in the new snapshot encoding, so it’s included in this PR. # Encoding Schema ## Header The header has 22 bytes. - (0-4 bytes) Magic Bytes: The encoding starts with `loro` as magic bytes. - (4-20 bytes) Checksum: MD5 checksum of the encoded data, including the header starting from 20th bytes. The checksum is encoded as a 16-byte array. The `checksum` and `magic bytes` fields are trimmed when calculating the checksum. - (20-21 bytes) Encoding Method (2 bytes, big endian): Multiple encoding methods are available for a specific encoding version. ## Encode Mode: Updates In this approach, only ops, specifically their historical record, are encoded, while document states are excluded. Like Automerge's format, we employ columnar encoding for operations and changes. Previously, operations were ordered by their Operation ID (OpId) before columnar encoding. However, sorting operations based on their respective containers initially enhance compression potential. ## Encode Mode: Snapshot This mode simultaneously captures document state and historical data. Upon importing a snapshot into a new document, initialization occurs directly from the snapshot, bypassing the need for CRDT-based recalculations. Unlike previous snapshot encoding methods, the current binary output in snapshot mode is compatible with the updates mode. This enhances the efficiency of importing snapshots into non-empty documents, where initialization via snapshot is infeasible. Additionally, when feasible, we leverage the sequence of operations to construct state snapshots. In CRDTs, deducing the specific ops constituting the current container state is feasible. These ops are tagged in relation to the container, facilitating direct state reconstruction from them. This approach, pioneered by Automerge, significantly improves compression efficiency.
2024-01-02 09:03:24 +00:00
]
[[package]]
name = "fastrand"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499"
dependencies = [
"instant",
]
2022-10-31 08:16:44 +00:00
[[package]]
name = "flate2"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.0.25"
2022-10-31 08:16:44 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841"
2022-10-31 08:16:44 +00:00
dependencies = [
"crc32fast",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"miniz_oxide 0.6.2",
2022-10-31 08:16:44 +00:00
]
[[package]]
name = "fnv"
version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
[[package]]
name = "fractional_index"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1151a9f3ec0f115ddf899dd5baf57532c29b424ef4c63fb2f5636ba789dcbc4"
dependencies = [
"serde",
]
[[package]]
name = "fuzz"
version = "0.1.0"
dependencies = [
"arbitrary",
"arbtest",
feat: memkv export import all (#422) * feat: sstable * fix: add magic number version * feat: new mem kv store based sstable * feat: binary_search * fix: sstable iter scan * fix: new mem kv * feat: add cache for sstable * fix: encode schema comment * fix: sstable iter scan * chore: clean * fix: export all * fix: sstable scan bound * fix: sstable iter scan next==prev * fix: merge iter next_back * fix: mem kv export * chore: clean * fix: prev to key * fix: prev find block * fix: get prev block idx * refactor: kv store * fix: checksum when import * fix: meta first last key * Revert "fix: meta first last key" This reverts commit a069c1ed37f89f04e1b7a51c3a91f562819a72f5. * fix: skip empty iter * fix: remove key from large block * chore: comment * feat: compress block * fix: remove key in large block * chore: const * doc: intro sstable encode * test: add kv store fuzz * style: format file * feat: add fuzz to kv store (#428) * fix: kv fuzzer * fix: debug * bk * fix: block iter next back * fix: block prev iter left = next idx * feat: move kv store a crate * fix: remove value len from normal block * doc: sstable format * test: add more test * test: add test * feat: new merge iter * chore: revert * fix: rename next back * fix: rename mem sstable * fix: rename to mem * fix: use Bytes as key * fix: use simple merge iter * feat: compress option * fix: remove empty iter * style: refine some impl details * fix: large block compress * feat: use write read for encode * doc: refine doc * fix: simplify the first chunk * feat: import many times * refactor: refine styles * test: fuzz merge iter * fix: rename peek_xxx() * fix: better sstable iter inner * fix: use mem kv store * pref: mem kv store * perf: export mem kv * chore: clean --------- Co-authored-by: Zixuan Chen <remch183@outlook.com>
2024-08-30 03:44:34 +00:00
"bytes",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"color-backtrace",
"ctor 0.2.6",
"dev-utils",
"ensure-cov",
"enum-as-inner 0.5.1",
"enum_dispatch",
"fxhash",
2024-05-07 11:39:38 +00:00
"itertools 0.12.1",
2024-09-07 12:01:33 +00:00
"loro 0.16.12",
"loro 0.16.2 (git+https://github.com/loro-dev/loro.git?tag=loro-crdt@0.16.7)",
2024-07-12 08:15:54 +00:00
"loro 0.16.2 (git+https://github.com/loro-dev/loro.git?rev=90470658435ec4c62b5af59ebb82fe9e1f5aa761)",
"num_cpus",
2024-09-13 10:39:44 +00:00
"pretty_assertions",
"rand",
"rayon",
"serde_json",
"tabled 0.10.0",
"tracing",
"tracing-chrome",
"tracing-subscriber",
]
[[package]]
name = "fxhash"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c"
dependencies = [
"byteorder",
]
2023-07-04 03:27:09 +00:00
[[package]]
name = "generic-btree"
version = "0.10.5"
2023-07-04 03:27:09 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "210507e6dec78bb1304e52a174bd99efdd83894219bf20d656a066a0ce2fedc5"
2023-07-04 03:27:09 +00:00
dependencies = [
"arref",
2023-07-04 03:27:09 +00:00
"fxhash",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"heapless 0.7.16",
Feat: Peritext-like rich text support (#123) * feat: richtext wip * feat: add insert to style range map wip * feat: richtext state * fix: fix style state inserting and style map * fix: tiny vec merge err * fix: comment err * refactor: use new generic-btree & refine impl * feat: fugue tracker * feat: tracker * feat: tracker * fix: fix a few err in impl * feat: init richtext content state * feat: refactor arena * feat: extract anchor_type info out of style flag * refactor: state apply op more efficiently we can now reuse the repr in state and op * fix: new clippy errors * refactor: use state chunk as delta item * refactor: use two op to insert style start and style end * feat: diff calc * feat: handler * fix: tracker checkout err * fix: pass basic richtext handler tests * fix: pass handler basic marking tests * fix: pass all peritext criteria * feat: snapshot encoding for richtext init * refactor: replace Text with Richtext * refacotr: rm text code * fix: richtext checkout err * refactor: diff of text and map * refactor: del span * refactor: event * fix: fuzz err * fix: pass all tests * fix: fuzz err * fix: list child cache err * chore: rm debug code * fix: encode enhanced err * fix: encode enchanced * fix: fix several richtext issue * fix: richtext anchor err * chore: rm debug code * fix: richtext fuzz err * feat: speedup text snapshot decode * perf: optimize snapshot encoding * perf: speed up decode & insert * fix: fugue span merge err * perf: speedup delete & id cursor map * fix: fugue merge err * chore: update utils * perf: speedup text insert / del * fix: cursor cache * perf: reduce conversion by introducing InsertText * perf: speed up by refined cursor cache * chore: update gbtree dep * refactor(wasm): use quill delta format * chore: fix warnings
2023-10-29 06:02:13 +00:00
"itertools 0.11.0",
"loro-thunderdome",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"proc-macro2 1.0.75",
2023-07-04 03:27:09 +00:00
]
[[package]]
name = "getrandom"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
dependencies = [
"cfg-if",
2023-07-28 18:03:51 +00:00
"js-sys",
"libc",
"wasi",
2023-07-28 18:03:51 +00:00
"wasm-bindgen",
]
[[package]]
name = "gimli"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.27.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "dec7af912d60cdbd3677c1af9352ebae6fb8394d165568a2234df0fa00f87793"
2022-10-27 08:36:04 +00:00
[[package]]
name = "half"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.8.2"
2022-10-27 08:36:04 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
2022-10-27 08:36:04 +00:00
[[package]]
name = "hash32"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67"
dependencies = [
"byteorder",
]
[[package]]
name = "hash32"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606"
dependencies = [
"byteorder",
]
2022-10-27 08:36:04 +00:00
[[package]]
name = "hashbrown"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
feat: memkv export import all (#422) * feat: sstable * fix: add magic number version * feat: new mem kv store based sstable * feat: binary_search * fix: sstable iter scan * fix: new mem kv * feat: add cache for sstable * fix: encode schema comment * fix: sstable iter scan * chore: clean * fix: export all * fix: sstable scan bound * fix: sstable iter scan next==prev * fix: merge iter next_back * fix: mem kv export * chore: clean * fix: prev to key * fix: prev find block * fix: get prev block idx * refactor: kv store * fix: checksum when import * fix: meta first last key * Revert "fix: meta first last key" This reverts commit a069c1ed37f89f04e1b7a51c3a91f562819a72f5. * fix: skip empty iter * fix: remove key from large block * chore: comment * feat: compress block * fix: remove key in large block * chore: const * doc: intro sstable encode * test: add kv store fuzz * style: format file * feat: add fuzz to kv store (#428) * fix: kv fuzzer * fix: debug * bk * fix: block iter next back * fix: block prev iter left = next idx * feat: move kv store a crate * fix: remove value len from normal block * doc: sstable format * test: add more test * test: add test * feat: new merge iter * chore: revert * fix: rename next back * fix: rename mem sstable * fix: rename to mem * fix: use Bytes as key * fix: use simple merge iter * feat: compress option * fix: remove empty iter * style: refine some impl details * fix: large block compress * feat: use write read for encode * doc: refine doc * fix: simplify the first chunk * feat: import many times * refactor: refine styles * test: fuzz merge iter * fix: rename peek_xxx() * fix: better sstable iter inner * fix: use mem kv store * pref: mem kv store * perf: export mem kv * chore: clean --------- Co-authored-by: Zixuan Chen <remch183@outlook.com>
2024-08-30 03:44:34 +00:00
[[package]]
name = "hashbrown"
version = "0.14.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
[[package]]
name = "heapless"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.7.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "db04bc24a18b9ea980628ecf00e6c0264f3c1426dac36c00cb49b6fbad8b0743"
dependencies = [
"atomic-polyfill",
"hash32 0.2.1",
2022-12-13 15:01:17 +00:00
"rustc_version",
"serde",
2023-10-29 14:13:59 +00:00
"spin",
"stable_deref_trait",
]
[[package]]
name = "heapless"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad"
dependencies = [
"hash32 0.3.1",
"stable_deref_trait",
]
[[package]]
name = "heck"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
[[package]]
name = "hermit-abi"
version = "0.1.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
dependencies = [
"libc",
]
[[package]]
name = "hermit-abi"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
[[package]]
name = "iana-time-zone"
version = "0.1.60"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
dependencies = [
"android_system_properties",
"core-foundation-sys",
"iana-time-zone-haiku",
"js-sys",
"wasm-bindgen",
"windows-core",
]
[[package]]
name = "iana-time-zone-haiku"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
dependencies = [
"cc",
]
[[package]]
name = "ident_case"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
2023-07-02 16:40:05 +00:00
[[package]]
name = "im"
version = "15.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d0acd33ff0285af998aaf9b57342af478078f53492322fafc47450e09397e0e9"
dependencies = [
"bitmaps 2.1.0",
2023-07-02 16:40:05 +00:00
"rand_core",
"rand_xoshiro",
2024-08-15 00:28:11 +00:00
"serde",
2023-07-02 16:40:05 +00:00
"sized-chunks",
"typenum",
"version_check",
]
[[package]]
name = "imbl"
version = "3.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bc3be8d8cd36f33a46b1849f31f837c44d9fa87223baee3b4bd96b8f11df81eb"
dependencies = [
"bitmaps 3.2.1",
"imbl-sized-chunks",
"rand_core",
"rand_xoshiro",
"version_check",
]
[[package]]
name = "imbl-sized-chunks"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "144006fb58ed787dcae3f54575ff4349755b00ccc99f4b4873860b654be1ed63"
dependencies = [
"bitmaps 3.2.1",
]
2022-10-27 08:36:04 +00:00
[[package]]
name = "indexmap"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.9.2"
2022-10-27 08:36:04 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
2022-10-27 08:36:04 +00:00
dependencies = [
"autocfg",
feat: memkv export import all (#422) * feat: sstable * fix: add magic number version * feat: new mem kv store based sstable * feat: binary_search * fix: sstable iter scan * fix: new mem kv * feat: add cache for sstable * fix: encode schema comment * fix: sstable iter scan * chore: clean * fix: export all * fix: sstable scan bound * fix: sstable iter scan next==prev * fix: merge iter next_back * fix: mem kv export * chore: clean * fix: prev to key * fix: prev find block * fix: get prev block idx * refactor: kv store * fix: checksum when import * fix: meta first last key * Revert "fix: meta first last key" This reverts commit a069c1ed37f89f04e1b7a51c3a91f562819a72f5. * fix: skip empty iter * fix: remove key from large block * chore: comment * feat: compress block * fix: remove key in large block * chore: const * doc: intro sstable encode * test: add kv store fuzz * style: format file * feat: add fuzz to kv store (#428) * fix: kv fuzzer * fix: debug * bk * fix: block iter next back * fix: block prev iter left = next idx * feat: move kv store a crate * fix: remove value len from normal block * doc: sstable format * test: add more test * test: add test * feat: new merge iter * chore: revert * fix: rename next back * fix: rename mem sstable * fix: rename to mem * fix: use Bytes as key * fix: use simple merge iter * feat: compress option * fix: remove empty iter * style: refine some impl details * fix: large block compress * feat: use write read for encode * doc: refine doc * fix: simplify the first chunk * feat: import many times * refactor: refine styles * test: fuzz merge iter * fix: rename peek_xxx() * fix: better sstable iter inner * fix: use mem kv store * pref: mem kv store * perf: export mem kv * chore: clean --------- Co-authored-by: Zixuan Chen <remch183@outlook.com>
2024-08-30 03:44:34 +00:00
"hashbrown 0.12.3",
2022-10-27 08:36:04 +00:00
]
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
[[package]]
name = "instant"
version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
dependencies = [
"cfg-if",
]
[[package]]
name = "is-terminal"
version = "0.4.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b"
dependencies = [
"hermit-abi 0.3.9",
"libc",
"windows-sys 0.52.0",
]
2022-10-27 08:36:04 +00:00
[[package]]
name = "itertools"
version = "0.10.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
dependencies = [
"either",
]
2023-09-08 00:21:46 +00:00
[[package]]
name = "itertools"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
dependencies = [
"either",
]
2024-05-07 11:39:38 +00:00
[[package]]
name = "itertools"
version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
dependencies = [
"either",
]
2022-10-26 14:20:09 +00:00
[[package]]
name = "itoa"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.0.5"
2022-10-26 14:20:09 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440"
2022-10-26 14:20:09 +00:00
[[package]]
name = "jobserver"
version = "0.1.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6"
dependencies = [
"libc",
]
[[package]]
name = "js-sys"
version = "0.3.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
dependencies = [
"wasm-bindgen",
]
[[package]]
name = "lazy_static"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
feat: stabilizing encoding (#219) This PR implements a new encode schema that is more extendible and more compact. It’s also simpler and takes less binary size and maintaining effort. It is inspired by the [Automerge Encoding Format](https://automerge.org/automerge-binary-format-spec/). The main motivation is the extensibility. When we integrate a new CRDT algorithm, we don’t want to make a breaking change to the encoding or keep multiple versions of the encoding schema in the code, as it will make our WASM size much larger. We need a stable and extendible encoding schema for our v1.0 version. This PR also exposes the ops that compose the current container state. For example, now you can make a query about which operation a certain character quickly. This behavior is required in the new snapshot encoding, so it’s included in this PR. # Encoding Schema ## Header The header has 22 bytes. - (0-4 bytes) Magic Bytes: The encoding starts with `loro` as magic bytes. - (4-20 bytes) Checksum: MD5 checksum of the encoded data, including the header starting from 20th bytes. The checksum is encoded as a 16-byte array. The `checksum` and `magic bytes` fields are trimmed when calculating the checksum. - (20-21 bytes) Encoding Method (2 bytes, big endian): Multiple encoding methods are available for a specific encoding version. ## Encode Mode: Updates In this approach, only ops, specifically their historical record, are encoded, while document states are excluded. Like Automerge's format, we employ columnar encoding for operations and changes. Previously, operations were ordered by their Operation ID (OpId) before columnar encoding. However, sorting operations based on their respective containers initially enhance compression potential. ## Encode Mode: Snapshot This mode simultaneously captures document state and historical data. Upon importing a snapshot into a new document, initialization occurs directly from the snapshot, bypassing the need for CRDT-based recalculations. Unlike previous snapshot encoding methods, the current binary output in snapshot mode is compatible with the updates mode. This enhances the efficiency of importing snapshots into non-empty documents, where initialization via snapshot is infeasible. Additionally, when feasible, we leverage the sequence of operations to construct state snapshots. In CRDTs, deducing the specific ops constituting the current container state is feasible. These ops are tagged in relation to the container, facilitating direct state reconstruction from them. This approach, pioneered by Automerge, significantly improves compression efficiency.
2024-01-02 09:03:24 +00:00
[[package]]
name = "leb128"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67"
[[package]]
name = "libc"
version = "0.2.158"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439"
[[package]]
name = "lock_api"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
dependencies = [
"autocfg",
"scopeguard",
]
[[package]]
name = "log"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.4.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
dependencies = [
"cfg-if",
]
2023-11-28 08:22:43 +00:00
[[package]]
name = "loro"
version = "0.16.2"
2024-09-12 14:30:42 +00:00
source = "git+https://github.com/loro-dev/loro.git?tag=loro-crdt@0.16.7#d2b0520f8633f96146a49ec205bd5e7056880f1a"
2023-11-28 08:22:43 +00:00
dependencies = [
2023-11-28 15:20:57 +00:00
"either",
2023-11-28 08:22:43 +00:00
"enum-as-inner 0.6.0",
"generic-btree",
2024-09-12 14:30:42 +00:00
"loro-delta 0.16.2 (git+https://github.com/loro-dev/loro.git?tag=loro-crdt@0.16.7)",
"loro-internal 0.16.2 (git+https://github.com/loro-dev/loro.git?tag=loro-crdt@0.16.7)",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"tracing",
2023-11-28 08:22:43 +00:00
]
[[package]]
name = "loro"
version = "0.16.2"
2024-08-29 15:02:03 +00:00
source = "git+https://github.com/loro-dev/loro.git?rev=90470658435ec4c62b5af59ebb82fe9e1f5aa761#90470658435ec4c62b5af59ebb82fe9e1f5aa761"
dependencies = [
"either",
"enum-as-inner 0.6.0",
"generic-btree",
2024-09-12 14:30:42 +00:00
"loro-delta 0.16.2 (git+https://github.com/loro-dev/loro.git?rev=90470658435ec4c62b5af59ebb82fe9e1f5aa761)",
"loro-internal 0.16.2 (git+https://github.com/loro-dev/loro.git?rev=90470658435ec4c62b5af59ebb82fe9e1f5aa761)",
"tracing",
]
[[package]]
name = "loro"
2024-09-07 12:01:33 +00:00
version = "0.16.12"
dependencies = [
2024-08-29 15:02:03 +00:00
"anyhow",
"ctor 0.2.6",
"dev-utils",
"either",
"enum-as-inner 0.6.0",
"generic-btree",
2024-09-07 12:01:33 +00:00
"loro-delta 0.16.12",
"loro-internal 0.16.12",
2024-09-12 14:30:42 +00:00
"loro-kv-store",
"rand",
2024-08-29 15:02:03 +00:00
"serde_json",
"tracing",
]
[[package]]
name = "loro-common"
version = "0.16.2"
2024-09-12 14:30:42 +00:00
source = "git+https://github.com/loro-dev/loro.git?tag=loro-crdt@0.16.7#d2b0520f8633f96146a49ec205bd5e7056880f1a"
dependencies = [
"arbitrary",
"enum-as-inner 0.6.0",
"fxhash",
2024-09-12 14:30:42 +00:00
"loro-rle 0.16.2 (git+https://github.com/loro-dev/loro.git?tag=loro-crdt@0.16.7)",
"nonmax",
"serde",
feat: stabilizing encoding (#219) This PR implements a new encode schema that is more extendible and more compact. It’s also simpler and takes less binary size and maintaining effort. It is inspired by the [Automerge Encoding Format](https://automerge.org/automerge-binary-format-spec/). The main motivation is the extensibility. When we integrate a new CRDT algorithm, we don’t want to make a breaking change to the encoding or keep multiple versions of the encoding schema in the code, as it will make our WASM size much larger. We need a stable and extendible encoding schema for our v1.0 version. This PR also exposes the ops that compose the current container state. For example, now you can make a query about which operation a certain character quickly. This behavior is required in the new snapshot encoding, so it’s included in this PR. # Encoding Schema ## Header The header has 22 bytes. - (0-4 bytes) Magic Bytes: The encoding starts with `loro` as magic bytes. - (4-20 bytes) Checksum: MD5 checksum of the encoded data, including the header starting from 20th bytes. The checksum is encoded as a 16-byte array. The `checksum` and `magic bytes` fields are trimmed when calculating the checksum. - (20-21 bytes) Encoding Method (2 bytes, big endian): Multiple encoding methods are available for a specific encoding version. ## Encode Mode: Updates In this approach, only ops, specifically their historical record, are encoded, while document states are excluded. Like Automerge's format, we employ columnar encoding for operations and changes. Previously, operations were ordered by their Operation ID (OpId) before columnar encoding. However, sorting operations based on their respective containers initially enhance compression potential. ## Encode Mode: Snapshot This mode simultaneously captures document state and historical data. Upon importing a snapshot into a new document, initialization occurs directly from the snapshot, bypassing the need for CRDT-based recalculations. Unlike previous snapshot encoding methods, the current binary output in snapshot mode is compatible with the updates mode. This enhances the efficiency of importing snapshots into non-empty documents, where initialization via snapshot is infeasible. Additionally, when feasible, we leverage the sequence of operations to construct state snapshots. In CRDTs, deducing the specific ops constituting the current container state is feasible. These ops are tagged in relation to the container, facilitating direct state reconstruction from them. This approach, pioneered by Automerge, significantly improves compression efficiency.
2024-01-02 09:03:24 +00:00
"serde_columnar",
"string_cache",
"thiserror",
]
[[package]]
name = "loro-common"
version = "0.16.2"
2024-08-29 15:02:03 +00:00
source = "git+https://github.com/loro-dev/loro.git?rev=90470658435ec4c62b5af59ebb82fe9e1f5aa761#90470658435ec4c62b5af59ebb82fe9e1f5aa761"
dependencies = [
"arbitrary",
"enum-as-inner 0.6.0",
"fxhash",
2024-09-12 14:30:42 +00:00
"loro-rle 0.16.2 (git+https://github.com/loro-dev/loro.git?rev=90470658435ec4c62b5af59ebb82fe9e1f5aa761)",
"nonmax",
"serde",
"serde_columnar",
"string_cache",
"thiserror",
]
[[package]]
name = "loro-common"
2024-09-07 12:01:33 +00:00
version = "0.16.12"
dependencies = [
"arbitrary",
"enum-as-inner 0.6.0",
"fxhash",
2024-08-29 15:02:03 +00:00
"js-sys",
2024-09-12 14:30:42 +00:00
"leb128",
2024-09-07 12:01:33 +00:00
"loro-rle 0.16.12",
"nonmax",
"serde",
"serde_columnar",
"string_cache",
"thiserror",
2024-08-29 15:02:03 +00:00
"wasm-bindgen",
]
[[package]]
name = "loro-delta"
version = "0.16.2"
2024-09-12 14:30:42 +00:00
source = "git+https://github.com/loro-dev/loro.git?tag=loro-crdt@0.16.7#d2b0520f8633f96146a49ec205bd5e7056880f1a"
dependencies = [
"arrayvec",
"enum-as-inner 0.5.1",
"generic-btree",
"heapless 0.8.0",
"tracing",
]
[[package]]
name = "loro-delta"
version = "0.16.2"
2024-08-29 15:02:03 +00:00
source = "git+https://github.com/loro-dev/loro.git?rev=90470658435ec4c62b5af59ebb82fe9e1f5aa761#90470658435ec4c62b5af59ebb82fe9e1f5aa761"
dependencies = [
"arrayvec",
"enum-as-inner 0.5.1",
"generic-btree",
"heapless 0.8.0",
"tracing",
]
[[package]]
name = "loro-delta"
2024-09-07 12:01:33 +00:00
version = "0.16.12"
dependencies = [
"arrayvec",
2024-08-29 15:02:03 +00:00
"color-backtrace",
"criterion 0.4.0",
"ctor 0.2.6",
"enum-as-inner 0.5.1",
"generic-btree",
"heapless 0.8.0",
2024-08-29 15:02:03 +00:00
"rand",
"tracing",
2024-08-29 15:02:03 +00:00
"tracing-subscriber",
]
[[package]]
name = "loro-internal"
version = "0.16.2"
2024-09-12 14:30:42 +00:00
source = "git+https://github.com/loro-dev/loro.git?tag=loro-crdt@0.16.7#d2b0520f8633f96146a49ec205bd5e7056880f1a"
dependencies = [
"append-only-bytes",
2022-11-17 02:22:28 +00:00
"arref",
"either",
"enum-as-inner 0.5.1",
2023-07-02 15:24:17 +00:00
"enum_dispatch",
"fxhash",
2023-07-04 03:27:09 +00:00
"generic-btree",
2023-07-28 18:03:51 +00:00
"getrandom",
2023-07-02 16:40:05 +00:00
"im",
2024-05-07 11:39:38 +00:00
"itertools 0.12.1",
feat: stabilizing encoding (#219) This PR implements a new encode schema that is more extendible and more compact. It’s also simpler and takes less binary size and maintaining effort. It is inspired by the [Automerge Encoding Format](https://automerge.org/automerge-binary-format-spec/). The main motivation is the extensibility. When we integrate a new CRDT algorithm, we don’t want to make a breaking change to the encoding or keep multiple versions of the encoding schema in the code, as it will make our WASM size much larger. We need a stable and extendible encoding schema for our v1.0 version. This PR also exposes the ops that compose the current container state. For example, now you can make a query about which operation a certain character quickly. This behavior is required in the new snapshot encoding, so it’s included in this PR. # Encoding Schema ## Header The header has 22 bytes. - (0-4 bytes) Magic Bytes: The encoding starts with `loro` as magic bytes. - (4-20 bytes) Checksum: MD5 checksum of the encoded data, including the header starting from 20th bytes. The checksum is encoded as a 16-byte array. The `checksum` and `magic bytes` fields are trimmed when calculating the checksum. - (20-21 bytes) Encoding Method (2 bytes, big endian): Multiple encoding methods are available for a specific encoding version. ## Encode Mode: Updates In this approach, only ops, specifically their historical record, are encoded, while document states are excluded. Like Automerge's format, we employ columnar encoding for operations and changes. Previously, operations were ordered by their Operation ID (OpId) before columnar encoding. However, sorting operations based on their respective containers initially enhance compression potential. ## Encode Mode: Snapshot This mode simultaneously captures document state and historical data. Upon importing a snapshot into a new document, initialization occurs directly from the snapshot, bypassing the need for CRDT-based recalculations. Unlike previous snapshot encoding methods, the current binary output in snapshot mode is compatible with the updates mode. This enhances the efficiency of importing snapshots into non-empty documents, where initialization via snapshot is infeasible. Additionally, when feasible, we leverage the sequence of operations to construct state snapshots. In CRDTs, deducing the specific ops constituting the current container state is feasible. These ops are tagged in relation to the container, facilitating direct state reconstruction from them. This approach, pioneered by Automerge, significantly improves compression efficiency.
2024-01-02 09:03:24 +00:00
"leb128",
2024-09-12 14:30:42 +00:00
"loro-common 0.16.2 (git+https://github.com/loro-dev/loro.git?tag=loro-crdt@0.16.7)",
"loro-delta 0.16.2 (git+https://github.com/loro-dev/loro.git?tag=loro-crdt@0.16.7)",
"loro-rle 0.16.2 (git+https://github.com/loro-dev/loro.git?tag=loro-crdt@0.16.7)",
"loro_fractional_index 0.16.2 (git+https://github.com/loro-dev/loro.git?tag=loro-crdt@0.16.7)",
feat: stabilizing encoding (#219) This PR implements a new encode schema that is more extendible and more compact. It’s also simpler and takes less binary size and maintaining effort. It is inspired by the [Automerge Encoding Format](https://automerge.org/automerge-binary-format-spec/). The main motivation is the extensibility. When we integrate a new CRDT algorithm, we don’t want to make a breaking change to the encoding or keep multiple versions of the encoding schema in the code, as it will make our WASM size much larger. We need a stable and extendible encoding schema for our v1.0 version. This PR also exposes the ops that compose the current container state. For example, now you can make a query about which operation a certain character quickly. This behavior is required in the new snapshot encoding, so it’s included in this PR. # Encoding Schema ## Header The header has 22 bytes. - (0-4 bytes) Magic Bytes: The encoding starts with `loro` as magic bytes. - (4-20 bytes) Checksum: MD5 checksum of the encoded data, including the header starting from 20th bytes. The checksum is encoded as a 16-byte array. The `checksum` and `magic bytes` fields are trimmed when calculating the checksum. - (20-21 bytes) Encoding Method (2 bytes, big endian): Multiple encoding methods are available for a specific encoding version. ## Encode Mode: Updates In this approach, only ops, specifically their historical record, are encoded, while document states are excluded. Like Automerge's format, we employ columnar encoding for operations and changes. Previously, operations were ordered by their Operation ID (OpId) before columnar encoding. However, sorting operations based on their respective containers initially enhance compression potential. ## Encode Mode: Snapshot This mode simultaneously captures document state and historical data. Upon importing a snapshot into a new document, initialization occurs directly from the snapshot, bypassing the need for CRDT-based recalculations. Unlike previous snapshot encoding methods, the current binary output in snapshot mode is compatible with the updates mode. This enhances the efficiency of importing snapshots into non-empty documents, where initialization via snapshot is infeasible. Additionally, when feasible, we leverage the sequence of operations to construct state snapshots. In CRDTs, deducing the specific ops constituting the current container state is feasible. These ops are tagged in relation to the container, facilitating direct state reconstruction from them. This approach, pioneered by Automerge, significantly improves compression efficiency.
2024-01-02 09:03:24 +00:00
"md5",
"num",
feat: stabilizing encoding (#219) This PR implements a new encode schema that is more extendible and more compact. It’s also simpler and takes less binary size and maintaining effort. It is inspired by the [Automerge Encoding Format](https://automerge.org/automerge-binary-format-spec/). The main motivation is the extensibility. When we integrate a new CRDT algorithm, we don’t want to make a breaking change to the encoding or keep multiple versions of the encoding schema in the code, as it will make our WASM size much larger. We need a stable and extendible encoding schema for our v1.0 version. This PR also exposes the ops that compose the current container state. For example, now you can make a query about which operation a certain character quickly. This behavior is required in the new snapshot encoding, so it’s included in this PR. # Encoding Schema ## Header The header has 22 bytes. - (0-4 bytes) Magic Bytes: The encoding starts with `loro` as magic bytes. - (4-20 bytes) Checksum: MD5 checksum of the encoded data, including the header starting from 20th bytes. The checksum is encoded as a 16-byte array. The `checksum` and `magic bytes` fields are trimmed when calculating the checksum. - (20-21 bytes) Encoding Method (2 bytes, big endian): Multiple encoding methods are available for a specific encoding version. ## Encode Mode: Updates In this approach, only ops, specifically their historical record, are encoded, while document states are excluded. Like Automerge's format, we employ columnar encoding for operations and changes. Previously, operations were ordered by their Operation ID (OpId) before columnar encoding. However, sorting operations based on their respective containers initially enhance compression potential. ## Encode Mode: Snapshot This mode simultaneously captures document state and historical data. Upon importing a snapshot into a new document, initialization occurs directly from the snapshot, bypassing the need for CRDT-based recalculations. Unlike previous snapshot encoding methods, the current binary output in snapshot mode is compatible with the updates mode. This enhances the efficiency of importing snapshots into non-empty documents, where initialization via snapshot is infeasible. Additionally, when feasible, we leverage the sequence of operations to construct state snapshots. In CRDTs, deducing the specific ops constituting the current container state is feasible. These ops are tagged in relation to the container, facilitating direct state reconstruction from them. This approach, pioneered by Automerge, significantly improves compression efficiency.
2024-01-02 09:03:24 +00:00
"num-derive",
"num-traits",
Feat: Peritext-like rich text support (#123) * feat: richtext wip * feat: add insert to style range map wip * feat: richtext state * fix: fix style state inserting and style map * fix: tiny vec merge err * fix: comment err * refactor: use new generic-btree & refine impl * feat: fugue tracker * feat: tracker * feat: tracker * fix: fix a few err in impl * feat: init richtext content state * feat: refactor arena * feat: extract anchor_type info out of style flag * refactor: state apply op more efficiently we can now reuse the repr in state and op * fix: new clippy errors * refactor: use state chunk as delta item * refactor: use two op to insert style start and style end * feat: diff calc * feat: handler * fix: tracker checkout err * fix: pass basic richtext handler tests * fix: pass handler basic marking tests * fix: pass all peritext criteria * feat: snapshot encoding for richtext init * refactor: replace Text with Richtext * refacotr: rm text code * fix: richtext checkout err * refactor: diff of text and map * refactor: del span * refactor: event * fix: fuzz err * fix: pass all tests * fix: fuzz err * fix: list child cache err * chore: rm debug code * fix: encode enhanced err * fix: encode enchanced * fix: fix several richtext issue * fix: richtext anchor err * chore: rm debug code * fix: richtext fuzz err * feat: speedup text snapshot decode * perf: optimize snapshot encoding * perf: speed up decode & insert * fix: fugue span merge err * perf: speedup delete & id cursor map * fix: fugue merge err * chore: update utils * perf: speedup text insert / del * fix: cursor cache * perf: reduce conversion by introducing InsertText * perf: speed up by refined cursor cache * chore: update gbtree dep * refactor(wasm): use quill delta format * chore: fix warnings
2023-10-29 06:02:13 +00:00
"once_cell",
2022-11-29 10:31:57 +00:00
"postcard",
"rand",
"serde",
Feat: Peritext-like rich text support (#123) * feat: richtext wip * feat: add insert to style range map wip * feat: richtext state * fix: fix style state inserting and style map * fix: tiny vec merge err * fix: comment err * refactor: use new generic-btree & refine impl * feat: fugue tracker * feat: tracker * feat: tracker * fix: fix a few err in impl * feat: init richtext content state * feat: refactor arena * feat: extract anchor_type info out of style flag * refactor: state apply op more efficiently we can now reuse the repr in state and op * fix: new clippy errors * refactor: use state chunk as delta item * refactor: use two op to insert style start and style end * feat: diff calc * feat: handler * fix: tracker checkout err * fix: pass basic richtext handler tests * fix: pass handler basic marking tests * fix: pass all peritext criteria * feat: snapshot encoding for richtext init * refactor: replace Text with Richtext * refacotr: rm text code * fix: richtext checkout err * refactor: diff of text and map * refactor: del span * refactor: event * fix: fuzz err * fix: pass all tests * fix: fuzz err * fix: list child cache err * chore: rm debug code * fix: encode enhanced err * fix: encode enchanced * fix: fix several richtext issue * fix: richtext anchor err * chore: rm debug code * fix: richtext fuzz err * feat: speedup text snapshot decode * perf: optimize snapshot encoding * perf: speed up decode & insert * fix: fugue span merge err * perf: speedup delete & id cursor map * fix: fugue merge err * chore: update utils * perf: speedup text insert / del * fix: cursor cache * perf: reduce conversion by introducing InsertText * perf: speed up by refined cursor cache * chore: update gbtree dep * refactor(wasm): use quill delta format * chore: fix warnings
2023-10-29 06:02:13 +00:00
"serde_columnar",
2022-10-31 08:16:44 +00:00
"serde_json",
"smallvec",
"thiserror",
"tracing",
]
[[package]]
name = "loro-internal"
version = "0.16.2"
2024-08-29 15:02:03 +00:00
source = "git+https://github.com/loro-dev/loro.git?rev=90470658435ec4c62b5af59ebb82fe9e1f5aa761#90470658435ec4c62b5af59ebb82fe9e1f5aa761"
dependencies = [
"append-only-bytes",
"arref",
"either",
"enum-as-inner 0.5.1",
"enum_dispatch",
"fxhash",
"generic-btree",
"getrandom",
"im",
"itertools 0.12.1",
"leb128",
2024-09-12 14:30:42 +00:00
"loro-common 0.16.2 (git+https://github.com/loro-dev/loro.git?rev=90470658435ec4c62b5af59ebb82fe9e1f5aa761)",
"loro-delta 0.16.2 (git+https://github.com/loro-dev/loro.git?rev=90470658435ec4c62b5af59ebb82fe9e1f5aa761)",
"loro-rle 0.16.2 (git+https://github.com/loro-dev/loro.git?rev=90470658435ec4c62b5af59ebb82fe9e1f5aa761)",
"loro_fractional_index 0.16.2 (git+https://github.com/loro-dev/loro.git?rev=90470658435ec4c62b5af59ebb82fe9e1f5aa761)",
"md5",
"num",
"num-derive",
"num-traits",
"once_cell",
"postcard",
"rand",
"serde",
"serde_columnar",
"serde_json",
"smallvec",
"thiserror",
"tracing",
]
[[package]]
name = "loro-internal"
2024-09-07 12:01:33 +00:00
version = "0.16.12"
dependencies = [
"append-only-bytes",
2024-08-29 15:02:03 +00:00
"arbitrary",
"arbtest",
"arref",
2024-08-29 15:02:03 +00:00
"base64",
"bench-utils",
2024-09-12 14:30:42 +00:00
"bytes",
2024-08-29 15:02:03 +00:00
"criterion 0.5.1",
"ctor 0.1.26",
"dev-utils",
"dhat",
"either",
2024-09-12 14:30:42 +00:00
"ensure-cov",
"enum-as-inner 0.5.1",
"enum_dispatch",
"fxhash",
"generic-btree",
"getrandom",
"im",
"itertools 0.12.1",
2024-08-29 15:02:03 +00:00
"js-sys",
"leb128",
2024-09-07 12:01:33 +00:00
"loro-common 0.16.12",
"loro-delta 0.16.12",
2024-09-12 14:30:42 +00:00
"loro-kv-store",
2024-09-07 12:01:33 +00:00
"loro-rle 0.16.12",
"loro_fractional_index 0.16.12",
"md5",
2024-08-29 15:02:03 +00:00
"miniz_oxide 0.7.1",
2024-09-12 14:30:42 +00:00
"nonmax",
"num",
"num-derive",
"num-traits",
"once_cell",
"postcard",
2024-08-29 15:02:03 +00:00
"proptest",
"proptest-derive",
"rand",
"serde",
2024-08-29 15:02:03 +00:00
"serde-wasm-bindgen 0.5.0",
"serde_columnar",
"serde_json",
"smallvec",
2024-08-29 15:02:03 +00:00
"static_assertions",
"tabled 0.10.0",
"thiserror",
"tracing",
2024-08-29 15:02:03 +00:00
"wasm-bindgen",
2024-09-12 14:30:42 +00:00
"xxhash-rust",
2024-08-29 15:02:03 +00:00
"zstd",
]
feat: memkv export import all (#422) * feat: sstable * fix: add magic number version * feat: new mem kv store based sstable * feat: binary_search * fix: sstable iter scan * fix: new mem kv * feat: add cache for sstable * fix: encode schema comment * fix: sstable iter scan * chore: clean * fix: export all * fix: sstable scan bound * fix: sstable iter scan next==prev * fix: merge iter next_back * fix: mem kv export * chore: clean * fix: prev to key * fix: prev find block * fix: get prev block idx * refactor: kv store * fix: checksum when import * fix: meta first last key * Revert "fix: meta first last key" This reverts commit a069c1ed37f89f04e1b7a51c3a91f562819a72f5. * fix: skip empty iter * fix: remove key from large block * chore: comment * feat: compress block * fix: remove key in large block * chore: const * doc: intro sstable encode * test: add kv store fuzz * style: format file * feat: add fuzz to kv store (#428) * fix: kv fuzzer * fix: debug * bk * fix: block iter next back * fix: block prev iter left = next idx * feat: move kv store a crate * fix: remove value len from normal block * doc: sstable format * test: add more test * test: add test * feat: new merge iter * chore: revert * fix: rename next back * fix: rename mem sstable * fix: rename to mem * fix: use Bytes as key * fix: use simple merge iter * feat: compress option * fix: remove empty iter * style: refine some impl details * fix: large block compress * feat: use write read for encode * doc: refine doc * fix: simplify the first chunk * feat: import many times * refactor: refine styles * test: fuzz merge iter * fix: rename peek_xxx() * fix: better sstable iter inner * fix: use mem kv store * pref: mem kv store * perf: export mem kv * chore: clean --------- Co-authored-by: Zixuan Chen <remch183@outlook.com>
2024-08-30 03:44:34 +00:00
[[package]]
name = "loro-kv-store"
version = "0.16.2"
dependencies = [
"bytes",
"ensure-cov",
feat: memkv export import all (#422) * feat: sstable * fix: add magic number version * feat: new mem kv store based sstable * feat: binary_search * fix: sstable iter scan * fix: new mem kv * feat: add cache for sstable * fix: encode schema comment * fix: sstable iter scan * chore: clean * fix: export all * fix: sstable scan bound * fix: sstable iter scan next==prev * fix: merge iter next_back * fix: mem kv export * chore: clean * fix: prev to key * fix: prev find block * fix: get prev block idx * refactor: kv store * fix: checksum when import * fix: meta first last key * Revert "fix: meta first last key" This reverts commit a069c1ed37f89f04e1b7a51c3a91f562819a72f5. * fix: skip empty iter * fix: remove key from large block * chore: comment * feat: compress block * fix: remove key in large block * chore: const * doc: intro sstable encode * test: add kv store fuzz * style: format file * feat: add fuzz to kv store (#428) * fix: kv fuzzer * fix: debug * bk * fix: block iter next back * fix: block prev iter left = next idx * feat: move kv store a crate * fix: remove value len from normal block * doc: sstable format * test: add more test * test: add test * feat: new merge iter * chore: revert * fix: rename next back * fix: rename mem sstable * fix: rename to mem * fix: use Bytes as key * fix: use simple merge iter * feat: compress option * fix: remove empty iter * style: refine some impl details * fix: large block compress * feat: use write read for encode * doc: refine doc * fix: simplify the first chunk * feat: import many times * refactor: refine styles * test: fuzz merge iter * fix: rename peek_xxx() * fix: better sstable iter inner * fix: use mem kv store * pref: mem kv store * perf: export mem kv * chore: clean --------- Co-authored-by: Zixuan Chen <remch183@outlook.com>
2024-08-30 03:44:34 +00:00
"fxhash",
2024-09-12 14:30:42 +00:00
"loro-common 0.16.12",
feat: memkv export import all (#422) * feat: sstable * fix: add magic number version * feat: new mem kv store based sstable * feat: binary_search * fix: sstable iter scan * fix: new mem kv * feat: add cache for sstable * fix: encode schema comment * fix: sstable iter scan * chore: clean * fix: export all * fix: sstable scan bound * fix: sstable iter scan next==prev * fix: merge iter next_back * fix: mem kv export * chore: clean * fix: prev to key * fix: prev find block * fix: get prev block idx * refactor: kv store * fix: checksum when import * fix: meta first last key * Revert "fix: meta first last key" This reverts commit a069c1ed37f89f04e1b7a51c3a91f562819a72f5. * fix: skip empty iter * fix: remove key from large block * chore: comment * feat: compress block * fix: remove key in large block * chore: const * doc: intro sstable encode * test: add kv store fuzz * style: format file * feat: add fuzz to kv store (#428) * fix: kv fuzzer * fix: debug * bk * fix: block iter next back * fix: block prev iter left = next idx * feat: move kv store a crate * fix: remove value len from normal block * doc: sstable format * test: add more test * test: add test * feat: new merge iter * chore: revert * fix: rename next back * fix: rename mem sstable * fix: rename to mem * fix: use Bytes as key * fix: use simple merge iter * feat: compress option * fix: remove empty iter * style: refine some impl details * fix: large block compress * feat: use write read for encode * doc: refine doc * fix: simplify the first chunk * feat: import many times * refactor: refine styles * test: fuzz merge iter * fix: rename peek_xxx() * fix: better sstable iter inner * fix: use mem kv store * pref: mem kv store * perf: export mem kv * chore: clean --------- Co-authored-by: Zixuan Chen <remch183@outlook.com>
2024-08-30 03:44:34 +00:00
"lz4_flex",
"once_cell",
"quick_cache",
"rand",
feat: memkv export import all (#422) * feat: sstable * fix: add magic number version * feat: new mem kv store based sstable * feat: binary_search * fix: sstable iter scan * fix: new mem kv * feat: add cache for sstable * fix: encode schema comment * fix: sstable iter scan * chore: clean * fix: export all * fix: sstable scan bound * fix: sstable iter scan next==prev * fix: merge iter next_back * fix: mem kv export * chore: clean * fix: prev to key * fix: prev find block * fix: get prev block idx * refactor: kv store * fix: checksum when import * fix: meta first last key * Revert "fix: meta first last key" This reverts commit a069c1ed37f89f04e1b7a51c3a91f562819a72f5. * fix: skip empty iter * fix: remove key from large block * chore: comment * feat: compress block * fix: remove key in large block * chore: const * doc: intro sstable encode * test: add kv store fuzz * style: format file * feat: add fuzz to kv store (#428) * fix: kv fuzzer * fix: debug * bk * fix: block iter next back * fix: block prev iter left = next idx * feat: move kv store a crate * fix: remove value len from normal block * doc: sstable format * test: add more test * test: add test * feat: new merge iter * chore: revert * fix: rename next back * fix: rename mem sstable * fix: rename to mem * fix: use Bytes as key * fix: use simple merge iter * feat: compress option * fix: remove empty iter * style: refine some impl details * fix: large block compress * feat: use write read for encode * doc: refine doc * fix: simplify the first chunk * feat: import many times * refactor: refine styles * test: fuzz merge iter * fix: rename peek_xxx() * fix: better sstable iter inner * fix: use mem kv store * pref: mem kv store * perf: export mem kv * chore: clean --------- Co-authored-by: Zixuan Chen <remch183@outlook.com>
2024-08-30 03:44:34 +00:00
"xxhash-rust",
]
2023-11-28 13:25:58 +00:00
[[package]]
name = "loro-rle"
version = "0.16.2"
2024-09-12 14:30:42 +00:00
source = "git+https://github.com/loro-dev/loro.git?tag=loro-crdt@0.16.7#d2b0520f8633f96146a49ec205bd5e7056880f1a"
2023-11-28 13:25:58 +00:00
dependencies = [
"append-only-bytes",
"arref",
2023-11-29 05:59:39 +00:00
"enum-as-inner 0.6.0",
2023-11-28 13:25:58 +00:00
"fxhash",
"num",
"smallvec",
]
[[package]]
name = "loro-rle"
version = "0.16.2"
2024-08-29 15:02:03 +00:00
source = "git+https://github.com/loro-dev/loro.git?rev=90470658435ec4c62b5af59ebb82fe9e1f5aa761#90470658435ec4c62b5af59ebb82fe9e1f5aa761"
dependencies = [
"append-only-bytes",
"arref",
"enum-as-inner 0.6.0",
"fxhash",
"num",
"smallvec",
]
[[package]]
name = "loro-rle"
2024-09-07 12:01:33 +00:00
version = "0.16.12"
dependencies = [
"append-only-bytes",
"arref",
2024-08-29 15:02:03 +00:00
"ctor 0.1.26",
"enum-as-inner 0.6.0",
"fxhash",
"num",
2024-08-29 15:02:03 +00:00
"proptest",
"rand",
"smallvec",
2024-08-29 15:02:03 +00:00
"smartstring",
"static_assertions",
]
Feat: Peritext-like rich text support (#123) * feat: richtext wip * feat: add insert to style range map wip * feat: richtext state * fix: fix style state inserting and style map * fix: tiny vec merge err * fix: comment err * refactor: use new generic-btree & refine impl * feat: fugue tracker * feat: tracker * feat: tracker * fix: fix a few err in impl * feat: init richtext content state * feat: refactor arena * feat: extract anchor_type info out of style flag * refactor: state apply op more efficiently we can now reuse the repr in state and op * fix: new clippy errors * refactor: use state chunk as delta item * refactor: use two op to insert style start and style end * feat: diff calc * feat: handler * fix: tracker checkout err * fix: pass basic richtext handler tests * fix: pass handler basic marking tests * fix: pass all peritext criteria * feat: snapshot encoding for richtext init * refactor: replace Text with Richtext * refacotr: rm text code * fix: richtext checkout err * refactor: diff of text and map * refactor: del span * refactor: event * fix: fuzz err * fix: pass all tests * fix: fuzz err * fix: list child cache err * chore: rm debug code * fix: encode enhanced err * fix: encode enchanced * fix: fix several richtext issue * fix: richtext anchor err * chore: rm debug code * fix: richtext fuzz err * feat: speedup text snapshot decode * perf: optimize snapshot encoding * perf: speed up decode & insert * fix: fugue span merge err * perf: speedup delete & id cursor map * fix: fugue merge err * chore: update utils * perf: speedup text insert / del * fix: cursor cache * perf: reduce conversion by introducing InsertText * perf: speed up by refined cursor cache * chore: update gbtree dep * refactor(wasm): use quill delta format * chore: fix warnings
2023-10-29 06:02:13 +00:00
[[package]]
name = "loro-thunderdome"
version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f3d053a135388e6b1df14e8af1212af5064746e9b87a06a345a7a779ee9695a"
2022-10-28 09:19:58 +00:00
[[package]]
name = "loro-wasm"
version = "0.1.0"
dependencies = [
2022-11-23 04:52:46 +00:00
"console_error_panic_hook",
2023-07-28 18:03:51 +00:00
"getrandom",
2022-10-28 09:19:58 +00:00
"js-sys",
2024-09-07 12:01:33 +00:00
"loro-internal 0.16.12",
"loro-rle 0.16.12",
"serde",
"serde-wasm-bindgen 0.6.5",
"serde_json",
Cursors (#290) This PR introduces support for retrieving and querying cursors. ## Motivation Using "index" to denote cursor positions can be unstable, as positions may shift with document edits. To reliably represent a position or range within a document, it is more effective to leverage the unique ID of each item/character in a List CRDT or Text CRDT. ## Updating Cursors Loro optimizes State metadata by not storing the IDs of deleted elements. This approach, while efficient, complicates tracking cursor positions since they rely on these IDs for precise locations within the document. The solution recalculates position by replaying relevant history to update stable positions accurately. To minimize the performance impact of history replay, the system updates cursor info to reference only the IDs of currently present elements, thereby reducing the need for replay. Each position has a "Side" information, indicating the actual cursor position is on the left, right, or directly in the center of the target ID. Note: In JavaScript, the offset returned when querying a Stable Position is based on the UTF-16 index. # Example ```ts const loro = new Loro(); const list = loro.getList("list"); list.insert(0, "a"); const pos0 = list.getStablePos(0); list.insert(1, "b"); { const ans = loro.queryStablePos(pos0!); expect(ans.offset).toEqual(0); expect(ans.side).toEqual(0); expect(ans.update).toBeUndefined(); } list.insert(0, "c"); { const ans = loro.queryStablePos(pos0!); expect(ans.offset).toEqual(1); expect(ans.side).toEqual(0); expect(ans.update).toBeUndefined(); } list.delete(1, 1); { const ans = loro.queryStablePos(pos0!); expect(ans.offset).toEqual(1); expect(ans.side).toEqual(-1); expect(ans.update).toBeDefined(); } ```
2024-04-09 08:01:37 +00:00
"tracing",
"tracing-wasm",
2022-10-28 09:19:58 +00:00
"wasm-bindgen",
"wasm-bindgen-derive",
2022-10-28 09:19:58 +00:00
]
[[package]]
name = "loro_fractional_index"
version = "0.16.2"
2024-09-12 14:30:42 +00:00
source = "git+https://github.com/loro-dev/loro.git?tag=loro-crdt@0.16.7#d2b0520f8633f96146a49ec205bd5e7056880f1a"
dependencies = [
"imbl",
"rand",
"serde",
"smallvec",
]
[[package]]
name = "loro_fractional_index"
version = "0.16.2"
2024-08-29 15:02:03 +00:00
source = "git+https://github.com/loro-dev/loro.git?rev=90470658435ec4c62b5af59ebb82fe9e1f5aa761#90470658435ec4c62b5af59ebb82fe9e1f5aa761"
dependencies = [
"imbl",
"rand",
"serde",
"smallvec",
]
[[package]]
name = "loro_fractional_index"
2024-09-07 12:01:33 +00:00
version = "0.16.12"
dependencies = [
2024-08-29 15:02:03 +00:00
"criterion 0.5.1",
"fractional_index",
"imbl",
2024-09-12 14:30:42 +00:00
"once_cell",
"rand",
"serde",
"smallvec",
]
feat: memkv export import all (#422) * feat: sstable * fix: add magic number version * feat: new mem kv store based sstable * feat: binary_search * fix: sstable iter scan * fix: new mem kv * feat: add cache for sstable * fix: encode schema comment * fix: sstable iter scan * chore: clean * fix: export all * fix: sstable scan bound * fix: sstable iter scan next==prev * fix: merge iter next_back * fix: mem kv export * chore: clean * fix: prev to key * fix: prev find block * fix: get prev block idx * refactor: kv store * fix: checksum when import * fix: meta first last key * Revert "fix: meta first last key" This reverts commit a069c1ed37f89f04e1b7a51c3a91f562819a72f5. * fix: skip empty iter * fix: remove key from large block * chore: comment * feat: compress block * fix: remove key in large block * chore: const * doc: intro sstable encode * test: add kv store fuzz * style: format file * feat: add fuzz to kv store (#428) * fix: kv fuzzer * fix: debug * bk * fix: block iter next back * fix: block prev iter left = next idx * feat: move kv store a crate * fix: remove value len from normal block * doc: sstable format * test: add more test * test: add test * feat: new merge iter * chore: revert * fix: rename next back * fix: rename mem sstable * fix: rename to mem * fix: use Bytes as key * fix: use simple merge iter * feat: compress option * fix: remove empty iter * style: refine some impl details * fix: large block compress * feat: use write read for encode * doc: refine doc * fix: simplify the first chunk * feat: import many times * refactor: refine styles * test: fuzz merge iter * fix: rename peek_xxx() * fix: better sstable iter inner * fix: use mem kv store * pref: mem kv store * perf: export mem kv * chore: clean --------- Co-authored-by: Zixuan Chen <remch183@outlook.com>
2024-08-30 03:44:34 +00:00
[[package]]
name = "lz4_flex"
version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75761162ae2b0e580d7e7c390558127e5f01b4194debd6221fd8c207fc80e3f5"
dependencies = [
"twox-hash",
]
[[package]]
feat: stabilizing encoding (#219) This PR implements a new encode schema that is more extendible and more compact. It’s also simpler and takes less binary size and maintaining effort. It is inspired by the [Automerge Encoding Format](https://automerge.org/automerge-binary-format-spec/). The main motivation is the extensibility. When we integrate a new CRDT algorithm, we don’t want to make a breaking change to the encoding or keep multiple versions of the encoding schema in the code, as it will make our WASM size much larger. We need a stable and extendible encoding schema for our v1.0 version. This PR also exposes the ops that compose the current container state. For example, now you can make a query about which operation a certain character quickly. This behavior is required in the new snapshot encoding, so it’s included in this PR. # Encoding Schema ## Header The header has 22 bytes. - (0-4 bytes) Magic Bytes: The encoding starts with `loro` as magic bytes. - (4-20 bytes) Checksum: MD5 checksum of the encoded data, including the header starting from 20th bytes. The checksum is encoded as a 16-byte array. The `checksum` and `magic bytes` fields are trimmed when calculating the checksum. - (20-21 bytes) Encoding Method (2 bytes, big endian): Multiple encoding methods are available for a specific encoding version. ## Encode Mode: Updates In this approach, only ops, specifically their historical record, are encoded, while document states are excluded. Like Automerge's format, we employ columnar encoding for operations and changes. Previously, operations were ordered by their Operation ID (OpId) before columnar encoding. However, sorting operations based on their respective containers initially enhance compression potential. ## Encode Mode: Snapshot This mode simultaneously captures document state and historical data. Upon importing a snapshot into a new document, initialization occurs directly from the snapshot, bypassing the need for CRDT-based recalculations. Unlike previous snapshot encoding methods, the current binary output in snapshot mode is compatible with the updates mode. This enhances the efficiency of importing snapshots into non-empty documents, where initialization via snapshot is infeasible. Additionally, when feasible, we leverage the sequence of operations to construct state snapshots. In CRDTs, deducing the specific ops constituting the current container state is feasible. These ops are tagged in relation to the container, facilitating direct state reconstruction from them. This approach, pioneered by Automerge, significantly improves compression efficiency.
2024-01-02 09:03:24 +00:00
name = "md5"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
feat: stabilizing encoding (#219) This PR implements a new encode schema that is more extendible and more compact. It’s also simpler and takes less binary size and maintaining effort. It is inspired by the [Automerge Encoding Format](https://automerge.org/automerge-binary-format-spec/). The main motivation is the extensibility. When we integrate a new CRDT algorithm, we don’t want to make a breaking change to the encoding or keep multiple versions of the encoding schema in the code, as it will make our WASM size much larger. We need a stable and extendible encoding schema for our v1.0 version. This PR also exposes the ops that compose the current container state. For example, now you can make a query about which operation a certain character quickly. This behavior is required in the new snapshot encoding, so it’s included in this PR. # Encoding Schema ## Header The header has 22 bytes. - (0-4 bytes) Magic Bytes: The encoding starts with `loro` as magic bytes. - (4-20 bytes) Checksum: MD5 checksum of the encoded data, including the header starting from 20th bytes. The checksum is encoded as a 16-byte array. The `checksum` and `magic bytes` fields are trimmed when calculating the checksum. - (20-21 bytes) Encoding Method (2 bytes, big endian): Multiple encoding methods are available for a specific encoding version. ## Encode Mode: Updates In this approach, only ops, specifically their historical record, are encoded, while document states are excluded. Like Automerge's format, we employ columnar encoding for operations and changes. Previously, operations were ordered by their Operation ID (OpId) before columnar encoding. However, sorting operations based on their respective containers initially enhance compression potential. ## Encode Mode: Snapshot This mode simultaneously captures document state and historical data. Upon importing a snapshot into a new document, initialization occurs directly from the snapshot, bypassing the need for CRDT-based recalculations. Unlike previous snapshot encoding methods, the current binary output in snapshot mode is compatible with the updates mode. This enhances the efficiency of importing snapshots into non-empty documents, where initialization via snapshot is infeasible. Additionally, when feasible, we leverage the sequence of operations to construct state snapshots. In CRDTs, deducing the specific ops constituting the current container state is feasible. These ops are tagged in relation to the container, facilitating direct state reconstruction from them. This approach, pioneered by Automerge, significantly improves compression efficiency.
2024-01-02 09:03:24 +00:00
checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771"
2023-01-28 11:59:37 +00:00
[[package]]
feat: stabilizing encoding (#219) This PR implements a new encode schema that is more extendible and more compact. It’s also simpler and takes less binary size and maintaining effort. It is inspired by the [Automerge Encoding Format](https://automerge.org/automerge-binary-format-spec/). The main motivation is the extensibility. When we integrate a new CRDT algorithm, we don’t want to make a breaking change to the encoding or keep multiple versions of the encoding schema in the code, as it will make our WASM size much larger. We need a stable and extendible encoding schema for our v1.0 version. This PR also exposes the ops that compose the current container state. For example, now you can make a query about which operation a certain character quickly. This behavior is required in the new snapshot encoding, so it’s included in this PR. # Encoding Schema ## Header The header has 22 bytes. - (0-4 bytes) Magic Bytes: The encoding starts with `loro` as magic bytes. - (4-20 bytes) Checksum: MD5 checksum of the encoded data, including the header starting from 20th bytes. The checksum is encoded as a 16-byte array. The `checksum` and `magic bytes` fields are trimmed when calculating the checksum. - (20-21 bytes) Encoding Method (2 bytes, big endian): Multiple encoding methods are available for a specific encoding version. ## Encode Mode: Updates In this approach, only ops, specifically their historical record, are encoded, while document states are excluded. Like Automerge's format, we employ columnar encoding for operations and changes. Previously, operations were ordered by their Operation ID (OpId) before columnar encoding. However, sorting operations based on their respective containers initially enhance compression potential. ## Encode Mode: Snapshot This mode simultaneously captures document state and historical data. Upon importing a snapshot into a new document, initialization occurs directly from the snapshot, bypassing the need for CRDT-based recalculations. Unlike previous snapshot encoding methods, the current binary output in snapshot mode is compatible with the updates mode. This enhances the efficiency of importing snapshots into non-empty documents, where initialization via snapshot is infeasible. Additionally, when feasible, we leverage the sequence of operations to construct state snapshots. In CRDTs, deducing the specific ops constituting the current container state is feasible. These ops are tagged in relation to the container, facilitating direct state reconstruction from them. This approach, pioneered by Automerge, significantly improves compression efficiency.
2024-01-02 09:03:24 +00:00
name = "memchr"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
[[package]]
name = "memoffset"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
dependencies = [
"autocfg",
]
[[package]]
name = "miniz_oxide"
version = "0.6.2"
2022-10-27 08:36:04 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa"
dependencies = [
"adler",
]
2022-10-27 08:36:04 +00:00
2022-12-07 12:56:10 +00:00
[[package]]
name = "miniz_oxide"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.7.1"
2022-12-07 12:56:10 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
2023-07-17 15:18:18 +00:00
dependencies = [
"adler",
]
2022-12-07 12:56:10 +00:00
[[package]]
name = "mintex"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.1.2"
2022-12-07 12:56:10 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "fd7c5ba1c3b5a23418d7bbf98c71c3d4946a0125002129231da8d6b723d559cb"
dependencies = [
"once_cell",
"sys-info",
]
2022-12-07 12:56:10 +00:00
[[package]]
name = "new_debug_unreachable"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
[[package]]
name = "nonmax"
version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51"
[[package]]
name = "nu-ansi-term"
version = "0.46.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
dependencies = [
"overload",
"winapi",
]
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
[[package]]
name = "nu-ansi-term"
version = "0.49.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c073d3c1930d0751774acf49e66653acecb416c3a54c6ec095a9b11caddb5a68"
dependencies = [
"windows-sys 0.48.0",
]
[[package]]
name = "num"
feat: stabilizing encoding (#219) This PR implements a new encode schema that is more extendible and more compact. It’s also simpler and takes less binary size and maintaining effort. It is inspired by the [Automerge Encoding Format](https://automerge.org/automerge-binary-format-spec/). The main motivation is the extensibility. When we integrate a new CRDT algorithm, we don’t want to make a breaking change to the encoding or keep multiple versions of the encoding schema in the code, as it will make our WASM size much larger. We need a stable and extendible encoding schema for our v1.0 version. This PR also exposes the ops that compose the current container state. For example, now you can make a query about which operation a certain character quickly. This behavior is required in the new snapshot encoding, so it’s included in this PR. # Encoding Schema ## Header The header has 22 bytes. - (0-4 bytes) Magic Bytes: The encoding starts with `loro` as magic bytes. - (4-20 bytes) Checksum: MD5 checksum of the encoded data, including the header starting from 20th bytes. The checksum is encoded as a 16-byte array. The `checksum` and `magic bytes` fields are trimmed when calculating the checksum. - (20-21 bytes) Encoding Method (2 bytes, big endian): Multiple encoding methods are available for a specific encoding version. ## Encode Mode: Updates In this approach, only ops, specifically their historical record, are encoded, while document states are excluded. Like Automerge's format, we employ columnar encoding for operations and changes. Previously, operations were ordered by their Operation ID (OpId) before columnar encoding. However, sorting operations based on their respective containers initially enhance compression potential. ## Encode Mode: Snapshot This mode simultaneously captures document state and historical data. Upon importing a snapshot into a new document, initialization occurs directly from the snapshot, bypassing the need for CRDT-based recalculations. Unlike previous snapshot encoding methods, the current binary output in snapshot mode is compatible with the updates mode. This enhances the efficiency of importing snapshots into non-empty documents, where initialization via snapshot is infeasible. Additionally, when feasible, we leverage the sequence of operations to construct state snapshots. In CRDTs, deducing the specific ops constituting the current container state is feasible. These ops are tagged in relation to the container, facilitating direct state reconstruction from them. This approach, pioneered by Automerge, significantly improves compression efficiency.
2024-01-02 09:03:24 +00:00
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
feat: stabilizing encoding (#219) This PR implements a new encode schema that is more extendible and more compact. It’s also simpler and takes less binary size and maintaining effort. It is inspired by the [Automerge Encoding Format](https://automerge.org/automerge-binary-format-spec/). The main motivation is the extensibility. When we integrate a new CRDT algorithm, we don’t want to make a breaking change to the encoding or keep multiple versions of the encoding schema in the code, as it will make our WASM size much larger. We need a stable and extendible encoding schema for our v1.0 version. This PR also exposes the ops that compose the current container state. For example, now you can make a query about which operation a certain character quickly. This behavior is required in the new snapshot encoding, so it’s included in this PR. # Encoding Schema ## Header The header has 22 bytes. - (0-4 bytes) Magic Bytes: The encoding starts with `loro` as magic bytes. - (4-20 bytes) Checksum: MD5 checksum of the encoded data, including the header starting from 20th bytes. The checksum is encoded as a 16-byte array. The `checksum` and `magic bytes` fields are trimmed when calculating the checksum. - (20-21 bytes) Encoding Method (2 bytes, big endian): Multiple encoding methods are available for a specific encoding version. ## Encode Mode: Updates In this approach, only ops, specifically their historical record, are encoded, while document states are excluded. Like Automerge's format, we employ columnar encoding for operations and changes. Previously, operations were ordered by their Operation ID (OpId) before columnar encoding. However, sorting operations based on their respective containers initially enhance compression potential. ## Encode Mode: Snapshot This mode simultaneously captures document state and historical data. Upon importing a snapshot into a new document, initialization occurs directly from the snapshot, bypassing the need for CRDT-based recalculations. Unlike previous snapshot encoding methods, the current binary output in snapshot mode is compatible with the updates mode. This enhances the efficiency of importing snapshots into non-empty documents, where initialization via snapshot is infeasible. Additionally, when feasible, we leverage the sequence of operations to construct state snapshots. In CRDTs, deducing the specific ops constituting the current container state is feasible. These ops are tagged in relation to the container, facilitating direct state reconstruction from them. This approach, pioneered by Automerge, significantly improves compression efficiency.
2024-01-02 09:03:24 +00:00
checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af"
dependencies = [
"num-bigint",
"num-complex",
"num-integer",
"num-iter",
"num-rational",
"num-traits",
]
[[package]]
name = "num-bigint"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f"
dependencies = [
"autocfg",
"num-integer",
"num-traits",
]
[[package]]
name = "num-complex"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214"
dependencies = [
"num-traits",
]
feat: stabilizing encoding (#219) This PR implements a new encode schema that is more extendible and more compact. It’s also simpler and takes less binary size and maintaining effort. It is inspired by the [Automerge Encoding Format](https://automerge.org/automerge-binary-format-spec/). The main motivation is the extensibility. When we integrate a new CRDT algorithm, we don’t want to make a breaking change to the encoding or keep multiple versions of the encoding schema in the code, as it will make our WASM size much larger. We need a stable and extendible encoding schema for our v1.0 version. This PR also exposes the ops that compose the current container state. For example, now you can make a query about which operation a certain character quickly. This behavior is required in the new snapshot encoding, so it’s included in this PR. # Encoding Schema ## Header The header has 22 bytes. - (0-4 bytes) Magic Bytes: The encoding starts with `loro` as magic bytes. - (4-20 bytes) Checksum: MD5 checksum of the encoded data, including the header starting from 20th bytes. The checksum is encoded as a 16-byte array. The `checksum` and `magic bytes` fields are trimmed when calculating the checksum. - (20-21 bytes) Encoding Method (2 bytes, big endian): Multiple encoding methods are available for a specific encoding version. ## Encode Mode: Updates In this approach, only ops, specifically their historical record, are encoded, while document states are excluded. Like Automerge's format, we employ columnar encoding for operations and changes. Previously, operations were ordered by their Operation ID (OpId) before columnar encoding. However, sorting operations based on their respective containers initially enhance compression potential. ## Encode Mode: Snapshot This mode simultaneously captures document state and historical data. Upon importing a snapshot into a new document, initialization occurs directly from the snapshot, bypassing the need for CRDT-based recalculations. Unlike previous snapshot encoding methods, the current binary output in snapshot mode is compatible with the updates mode. This enhances the efficiency of importing snapshots into non-empty documents, where initialization via snapshot is infeasible. Additionally, when feasible, we leverage the sequence of operations to construct state snapshots. In CRDTs, deducing the specific ops constituting the current container state is feasible. These ops are tagged in relation to the container, facilitating direct state reconstruction from them. This approach, pioneered by Automerge, significantly improves compression efficiency.
2024-01-02 09:03:24 +00:00
[[package]]
name = "num-derive"
version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d"
dependencies = [
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"proc-macro2 1.0.75",
"quote 1.0.35",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"syn 1.0.107",
feat: stabilizing encoding (#219) This PR implements a new encode schema that is more extendible and more compact. It’s also simpler and takes less binary size and maintaining effort. It is inspired by the [Automerge Encoding Format](https://automerge.org/automerge-binary-format-spec/). The main motivation is the extensibility. When we integrate a new CRDT algorithm, we don’t want to make a breaking change to the encoding or keep multiple versions of the encoding schema in the code, as it will make our WASM size much larger. We need a stable and extendible encoding schema for our v1.0 version. This PR also exposes the ops that compose the current container state. For example, now you can make a query about which operation a certain character quickly. This behavior is required in the new snapshot encoding, so it’s included in this PR. # Encoding Schema ## Header The header has 22 bytes. - (0-4 bytes) Magic Bytes: The encoding starts with `loro` as magic bytes. - (4-20 bytes) Checksum: MD5 checksum of the encoded data, including the header starting from 20th bytes. The checksum is encoded as a 16-byte array. The `checksum` and `magic bytes` fields are trimmed when calculating the checksum. - (20-21 bytes) Encoding Method (2 bytes, big endian): Multiple encoding methods are available for a specific encoding version. ## Encode Mode: Updates In this approach, only ops, specifically their historical record, are encoded, while document states are excluded. Like Automerge's format, we employ columnar encoding for operations and changes. Previously, operations were ordered by their Operation ID (OpId) before columnar encoding. However, sorting operations based on their respective containers initially enhance compression potential. ## Encode Mode: Snapshot This mode simultaneously captures document state and historical data. Upon importing a snapshot into a new document, initialization occurs directly from the snapshot, bypassing the need for CRDT-based recalculations. Unlike previous snapshot encoding methods, the current binary output in snapshot mode is compatible with the updates mode. This enhances the efficiency of importing snapshots into non-empty documents, where initialization via snapshot is infeasible. Additionally, when feasible, we leverage the sequence of operations to construct state snapshots. In CRDTs, deducing the specific ops constituting the current container state is feasible. These ops are tagged in relation to the container, facilitating direct state reconstruction from them. This approach, pioneered by Automerge, significantly improves compression efficiency.
2024-01-02 09:03:24 +00:00
]
[[package]]
name = "num-integer"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.1.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
dependencies = [
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"autocfg",
"num-traits",
]
[[package]]
name = "num-iter"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.1.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252"
dependencies = [
"autocfg",
"num-integer",
"num-traits",
]
[[package]]
name = "num-rational"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
dependencies = [
"autocfg",
"num-bigint",
"num-integer",
"num-traits",
]
[[package]]
name = "num-traits"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
dependencies = [
"autocfg",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
]
[[package]]
name = "num_cpus"
version = "1.16.0"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
dependencies = [
"hermit-abi 0.3.9",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"libc",
2022-10-27 08:36:04 +00:00
]
[[package]]
name = "object"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.30.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "2b8c786513eb403643f2a88c244c2aaa270ef2153f55094587d0c48a3cf22a83"
dependencies = [
"memchr",
]
[[package]]
name = "once_cell"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
2022-10-27 08:36:04 +00:00
[[package]]
name = "oorandom"
version = "11.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
[[package]]
name = "os_str_bytes"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "6.4.1"
2022-10-27 08:36:04 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee"
2022-10-27 08:36:04 +00:00
[[package]]
name = "overload"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
2022-10-15 16:26:29 +00:00
[[package]]
name = "papergrid"
2022-10-20 11:19:43 +00:00
version = "0.7.1"
2022-10-15 16:26:29 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
2022-10-20 11:19:43 +00:00
checksum = "1526bb6aa9f10ec339fb10360f22c57edf81d5678d0278e93bc12a47ffbe4b01"
2022-10-15 16:26:29 +00:00
dependencies = [
"bytecount",
"fnv",
"unicode-width",
]
[[package]]
name = "papergrid"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ad43c07024ef767f9160710b3a6773976194758c7919b17e63b863db0bdf7fb"
dependencies = [
"bytecount",
"fnv",
"unicode-width",
]
[[package]]
name = "parking_lot"
version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
dependencies = [
"lock_api",
"parking_lot_core",
]
[[package]]
name = "parking_lot_core"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.9.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "ba1ef8814b5c993410bb3adfad7a5ed269563e4a2f90c41f5d85be7fb47133bf"
dependencies = [
"cfg-if",
"libc",
"redox_syscall",
"smallvec",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"windows-sys 0.42.0",
]
[[package]]
name = "phf_shared"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096"
dependencies = [
"siphasher",
]
[[package]]
name = "pin-project-lite"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.2.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
[[package]]
name = "pkg-config"
version = "0.3.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
2022-10-27 08:36:04 +00:00
[[package]]
name = "plotters"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.3.4"
2022-10-27 08:36:04 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
2022-10-27 08:36:04 +00:00
dependencies = [
"num-traits",
"plotters-backend",
"plotters-svg",
"wasm-bindgen",
"web-sys",
]
[[package]]
name = "plotters-backend"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.3.4"
2022-10-27 08:36:04 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
2022-10-27 08:36:04 +00:00
[[package]]
name = "plotters-svg"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.3.3"
2022-10-27 08:36:04 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
2022-10-27 08:36:04 +00:00
dependencies = [
"plotters-backend",
]
[[package]]
name = "postcard"
2024-06-13 04:13:30 +00:00
version = "1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
2024-06-13 04:13:30 +00:00
checksum = "a55c51ee6c0db07e68448e336cf8ea4131a620edefebf9893e759b2d793420f8"
dependencies = [
"cobs",
2024-06-13 04:13:30 +00:00
"embedded-io",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"heapless 0.7.16",
"serde",
]
[[package]]
name = "ppv-lite86"
2022-12-07 12:56:10 +00:00
version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
2022-12-07 12:56:10 +00:00
checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
[[package]]
name = "precomputed-hash"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
2024-09-13 10:39:44 +00:00
[[package]]
name = "pretty_assertions"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66"
dependencies = [
"diff",
"yansi",
]
[[package]]
name = "proc-macro-error"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
dependencies = [
"proc-macro-error-attr",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"proc-macro2 1.0.75",
"quote 1.0.35",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"syn 1.0.107",
"version_check",
]
[[package]]
name = "proc-macro-error-attr"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
dependencies = [
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"proc-macro2 1.0.75",
"quote 1.0.35",
"version_check",
]
[[package]]
name = "proc-macro2"
version = "0.4.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759"
dependencies = [
2023-11-28 13:01:01 +00:00
"unicode-xid",
]
[[package]]
name = "proc-macro2"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.0.75"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "907a61bd0f64c2f29cd1cf1dc34d05176426a3f504a78010f08416ddb7b13708"
dependencies = [
"unicode-ident",
]
[[package]]
name = "proptest"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "1e0d9cc07f18492d879586c92b485def06bc850da3118075cd45d50e9c95b0e5"
dependencies = [
"bit-set",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"bitflags",
"byteorder",
"lazy_static",
"num-traits",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"quick-error 2.0.1",
"rand",
"rand_chacha",
"rand_xorshift",
"regex-syntax",
"rusty-fork",
"tempfile",
]
[[package]]
name = "proptest-derive"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90b46295382dc76166cb7cf2bb4a97952464e4b7ed5a43e6cd34e1fec3349ddc"
dependencies = [
"proc-macro2 0.4.30",
"quote 0.6.13",
"syn 0.15.44",
]
[[package]]
name = "quick-error"
version = "1.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
[[package]]
name = "quick-error"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
feat: memkv export import all (#422) * feat: sstable * fix: add magic number version * feat: new mem kv store based sstable * feat: binary_search * fix: sstable iter scan * fix: new mem kv * feat: add cache for sstable * fix: encode schema comment * fix: sstable iter scan * chore: clean * fix: export all * fix: sstable scan bound * fix: sstable iter scan next==prev * fix: merge iter next_back * fix: mem kv export * chore: clean * fix: prev to key * fix: prev find block * fix: get prev block idx * refactor: kv store * fix: checksum when import * fix: meta first last key * Revert "fix: meta first last key" This reverts commit a069c1ed37f89f04e1b7a51c3a91f562819a72f5. * fix: skip empty iter * fix: remove key from large block * chore: comment * feat: compress block * fix: remove key in large block * chore: const * doc: intro sstable encode * test: add kv store fuzz * style: format file * feat: add fuzz to kv store (#428) * fix: kv fuzzer * fix: debug * bk * fix: block iter next back * fix: block prev iter left = next idx * feat: move kv store a crate * fix: remove value len from normal block * doc: sstable format * test: add more test * test: add test * feat: new merge iter * chore: revert * fix: rename next back * fix: rename mem sstable * fix: rename to mem * fix: use Bytes as key * fix: use simple merge iter * feat: compress option * fix: remove empty iter * style: refine some impl details * fix: large block compress * feat: use write read for encode * doc: refine doc * fix: simplify the first chunk * feat: import many times * refactor: refine styles * test: fuzz merge iter * fix: rename peek_xxx() * fix: better sstable iter inner * fix: use mem kv store * pref: mem kv store * perf: export mem kv * chore: clean --------- Co-authored-by: Zixuan Chen <remch183@outlook.com>
2024-08-30 03:44:34 +00:00
[[package]]
name = "quick_cache"
version = "0.6.5"
feat: memkv export import all (#422) * feat: sstable * fix: add magic number version * feat: new mem kv store based sstable * feat: binary_search * fix: sstable iter scan * fix: new mem kv * feat: add cache for sstable * fix: encode schema comment * fix: sstable iter scan * chore: clean * fix: export all * fix: sstable scan bound * fix: sstable iter scan next==prev * fix: merge iter next_back * fix: mem kv export * chore: clean * fix: prev to key * fix: prev find block * fix: get prev block idx * refactor: kv store * fix: checksum when import * fix: meta first last key * Revert "fix: meta first last key" This reverts commit a069c1ed37f89f04e1b7a51c3a91f562819a72f5. * fix: skip empty iter * fix: remove key from large block * chore: comment * feat: compress block * fix: remove key in large block * chore: const * doc: intro sstable encode * test: add kv store fuzz * style: format file * feat: add fuzz to kv store (#428) * fix: kv fuzzer * fix: debug * bk * fix: block iter next back * fix: block prev iter left = next idx * feat: move kv store a crate * fix: remove value len from normal block * doc: sstable format * test: add more test * test: add test * feat: new merge iter * chore: revert * fix: rename next back * fix: rename mem sstable * fix: rename to mem * fix: use Bytes as key * fix: use simple merge iter * feat: compress option * fix: remove empty iter * style: refine some impl details * fix: large block compress * feat: use write read for encode * doc: refine doc * fix: simplify the first chunk * feat: import many times * refactor: refine styles * test: fuzz merge iter * fix: rename peek_xxx() * fix: better sstable iter inner * fix: use mem kv store * pref: mem kv store * perf: export mem kv * chore: clean --------- Co-authored-by: Zixuan Chen <remch183@outlook.com>
2024-08-30 03:44:34 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "27a893a83255c587d31137bc7e350387b49267b0deac44120fd8fa8bd0d61645"
feat: memkv export import all (#422) * feat: sstable * fix: add magic number version * feat: new mem kv store based sstable * feat: binary_search * fix: sstable iter scan * fix: new mem kv * feat: add cache for sstable * fix: encode schema comment * fix: sstable iter scan * chore: clean * fix: export all * fix: sstable scan bound * fix: sstable iter scan next==prev * fix: merge iter next_back * fix: mem kv export * chore: clean * fix: prev to key * fix: prev find block * fix: get prev block idx * refactor: kv store * fix: checksum when import * fix: meta first last key * Revert "fix: meta first last key" This reverts commit a069c1ed37f89f04e1b7a51c3a91f562819a72f5. * fix: skip empty iter * fix: remove key from large block * chore: comment * feat: compress block * fix: remove key in large block * chore: const * doc: intro sstable encode * test: add kv store fuzz * style: format file * feat: add fuzz to kv store (#428) * fix: kv fuzzer * fix: debug * bk * fix: block iter next back * fix: block prev iter left = next idx * feat: move kv store a crate * fix: remove value len from normal block * doc: sstable format * test: add more test * test: add test * feat: new merge iter * chore: revert * fix: rename next back * fix: rename mem sstable * fix: rename to mem * fix: use Bytes as key * fix: use simple merge iter * feat: compress option * fix: remove empty iter * style: refine some impl details * fix: large block compress * feat: use write read for encode * doc: refine doc * fix: simplify the first chunk * feat: import many times * refactor: refine styles * test: fuzz merge iter * fix: rename peek_xxx() * fix: better sstable iter inner * fix: use mem kv store * pref: mem kv store * perf: export mem kv * chore: clean --------- Co-authored-by: Zixuan Chen <remch183@outlook.com>
2024-08-30 03:44:34 +00:00
dependencies = [
"ahash",
"equivalent",
"hashbrown 0.14.5",
"parking_lot",
]
[[package]]
name = "quote"
version = "0.6.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1"
dependencies = [
"proc-macro2 0.4.30",
]
[[package]]
name = "quote"
version = "1.0.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
dependencies = [
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"proc-macro2 1.0.75",
]
[[package]]
name = "rand"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
dependencies = [
"libc",
"rand_chacha",
"rand_core",
]
[[package]]
name = "rand_chacha"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
dependencies = [
"ppv-lite86",
"rand_core",
]
[[package]]
name = "rand_core"
version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
dependencies = [
"getrandom",
]
[[package]]
name = "rand_xorshift"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f"
dependencies = [
"rand_core",
]
2023-07-02 16:40:05 +00:00
[[package]]
name = "rand_xoshiro"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa"
dependencies = [
"rand_core",
]
2022-10-27 08:36:04 +00:00
[[package]]
name = "rayon"
version = "1.10.0"
2022-10-27 08:36:04 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
2022-10-27 08:36:04 +00:00
dependencies = [
"either",
"rayon-core",
]
[[package]]
name = "rayon-core"
version = "1.12.1"
2022-10-27 08:36:04 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
2022-10-27 08:36:04 +00:00
dependencies = [
"crossbeam-deque",
"crossbeam-utils",
]
[[package]]
name = "redox_syscall"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
dependencies = [
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"bitflags",
]
2022-10-27 08:36:04 +00:00
[[package]]
name = "regex"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.7.1"
2022-10-27 08:36:04 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733"
2022-10-27 08:36:04 +00:00
dependencies = [
"regex-syntax",
]
[[package]]
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
name = "regex-syntax"
version = "0.6.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"
[[package]]
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
name = "remove_dir_all"
version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
dependencies = [
"winapi",
]
[[package]]
name = "rustc-demangle"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.1.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342"
2022-10-26 14:20:09 +00:00
[[package]]
name = "rustc-hash"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
[[package]]
name = "rustc_version"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
dependencies = [
2022-12-13 15:01:17 +00:00
"semver",
]
[[package]]
name = "rusty-fork"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f"
dependencies = [
"fnv",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"quick-error 1.2.3",
"tempfile",
"wait-timeout",
]
2022-10-26 14:20:09 +00:00
[[package]]
name = "ryu"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.0.12"
2022-10-26 14:20:09 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde"
2022-10-26 14:20:09 +00:00
2022-10-27 08:36:04 +00:00
[[package]]
name = "same-file"
version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
dependencies = [
"winapi-util",
]
[[package]]
name = "scopeguard"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
[[package]]
name = "semver"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.0.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2a"
[[package]]
name = "serde"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.0.194"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "0b114498256798c94a0689e1a15fec6005dee8ac1f41de56404b67afc2a4b773"
dependencies = [
"serde_derive",
]
2022-11-22 02:39:43 +00:00
[[package]]
name = "serde-wasm-bindgen"
2023-03-20 03:27:59 +00:00
version = "0.5.0"
2022-11-22 02:39:43 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
2023-03-20 03:27:59 +00:00
checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e"
2022-11-22 02:39:43 +00:00
dependencies = [
"js-sys",
"serde",
"wasm-bindgen",
]
[[package]]
name = "serde-wasm-bindgen"
version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8302e169f0eddcc139c70f139d19d6467353af16f9fce27e8c30158036a1e16b"
dependencies = [
"js-sys",
"serde",
"wasm-bindgen",
]
2023-09-08 00:21:46 +00:00
[[package]]
name = "serde_columnar"
version = "0.3.10"
2023-09-11 03:12:18 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6d4e3c0e46450edf7da174b610b9143eb8ca22059ace5016741fc9e20b88d1e7"
2022-11-17 08:26:53 +00:00
dependencies = [
2023-09-08 00:21:46 +00:00
"itertools 0.11.0",
2022-11-17 08:26:53 +00:00
"postcard",
"serde",
Feat: Peritext-like rich text support (#123) * feat: richtext wip * feat: add insert to style range map wip * feat: richtext state * fix: fix style state inserting and style map * fix: tiny vec merge err * fix: comment err * refactor: use new generic-btree & refine impl * feat: fugue tracker * feat: tracker * feat: tracker * fix: fix a few err in impl * feat: init richtext content state * feat: refactor arena * feat: extract anchor_type info out of style flag * refactor: state apply op more efficiently we can now reuse the repr in state and op * fix: new clippy errors * refactor: use state chunk as delta item * refactor: use two op to insert style start and style end * feat: diff calc * feat: handler * fix: tracker checkout err * fix: pass basic richtext handler tests * fix: pass handler basic marking tests * fix: pass all peritext criteria * feat: snapshot encoding for richtext init * refactor: replace Text with Richtext * refacotr: rm text code * fix: richtext checkout err * refactor: diff of text and map * refactor: del span * refactor: event * fix: fuzz err * fix: pass all tests * fix: fuzz err * fix: list child cache err * chore: rm debug code * fix: encode enhanced err * fix: encode enchanced * fix: fix several richtext issue * fix: richtext anchor err * chore: rm debug code * fix: richtext fuzz err * feat: speedup text snapshot decode * perf: optimize snapshot encoding * perf: speed up decode & insert * fix: fugue span merge err * perf: speedup delete & id cursor map * fix: fugue merge err * chore: update utils * perf: speedup text insert / del * fix: cursor cache * perf: reduce conversion by introducing InsertText * perf: speed up by refined cursor cache * chore: update gbtree dep * refactor(wasm): use quill delta format * chore: fix warnings
2023-10-29 06:02:13 +00:00
"serde_columnar_derive",
2022-11-17 08:26:53 +00:00
"thiserror",
]
2023-09-08 00:21:46 +00:00
[[package]]
name = "serde_columnar_derive"
version = "0.3.5"
2023-09-11 03:12:18 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42c5d47942b2a7e76118b697fc0f94516a5d8366a3c0fee8d0e2b713e952e306"
2023-09-08 00:21:46 +00:00
dependencies = [
Feat: Peritext-like rich text support (#123) * feat: richtext wip * feat: add insert to style range map wip * feat: richtext state * fix: fix style state inserting and style map * fix: tiny vec merge err * fix: comment err * refactor: use new generic-btree & refine impl * feat: fugue tracker * feat: tracker * feat: tracker * fix: fix a few err in impl * feat: init richtext content state * feat: refactor arena * feat: extract anchor_type info out of style flag * refactor: state apply op more efficiently we can now reuse the repr in state and op * fix: new clippy errors * refactor: use state chunk as delta item * refactor: use two op to insert style start and style end * feat: diff calc * feat: handler * fix: tracker checkout err * fix: pass basic richtext handler tests * fix: pass handler basic marking tests * fix: pass all peritext criteria * feat: snapshot encoding for richtext init * refactor: replace Text with Richtext * refacotr: rm text code * fix: richtext checkout err * refactor: diff of text and map * refactor: del span * refactor: event * fix: fuzz err * fix: pass all tests * fix: fuzz err * fix: list child cache err * chore: rm debug code * fix: encode enhanced err * fix: encode enchanced * fix: fix several richtext issue * fix: richtext anchor err * chore: rm debug code * fix: richtext fuzz err * feat: speedup text snapshot decode * perf: optimize snapshot encoding * perf: speed up decode & insert * fix: fugue span merge err * perf: speedup delete & id cursor map * fix: fugue merge err * chore: update utils * perf: speedup text insert / del * fix: cursor cache * perf: reduce conversion by introducing InsertText * perf: speed up by refined cursor cache * chore: update gbtree dep * refactor(wasm): use quill delta format * chore: fix warnings
2023-10-29 06:02:13 +00:00
"darling",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"proc-macro2 1.0.75",
"quote 1.0.35",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"syn 2.0.48",
2023-09-08 00:21:46 +00:00
]
[[package]]
name = "serde_derive"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.0.194"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "a3385e45322e8f9931410f01b3031ec534c3947d0e94c18049af4d9f9907d4e0"
dependencies = [
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"proc-macro2 1.0.75",
"quote 1.0.35",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"syn 2.0.48",
]
2022-10-26 14:20:09 +00:00
[[package]]
name = "serde_json"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.0.111"
2022-10-26 14:20:09 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4"
2022-10-26 14:20:09 +00:00
dependencies = [
"itoa",
"ryu",
"serde",
]
[[package]]
name = "sharded-slab"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
dependencies = [
"lazy_static",
]
[[package]]
name = "siphasher"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.3.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de"
2023-07-02 16:40:05 +00:00
[[package]]
name = "sized-chunks"
version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e"
dependencies = [
"bitmaps 2.1.0",
2023-07-02 16:40:05 +00:00
"typenum",
]
[[package]]
name = "smallvec"
version = "1.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
2023-01-11 13:40:16 +00:00
dependencies = [
"serde",
]
[[package]]
name = "smartstring"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fb72c633efbaa2dd666986505016c32c3044395ceaf881518399d2f4127ee29"
dependencies = [
"autocfg",
"static_assertions",
"version_check",
]
[[package]]
name = "spin"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "7f6002a767bff9e83f8eeecf883ecb8011875a21ae8da43bffb817a57e78cc09"
dependencies = [
"lock_api",
]
[[package]]
name = "stable_deref_trait"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
[[package]]
name = "static_assertions"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
[[package]]
name = "string_cache"
version = "0.8.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b"
dependencies = [
"new_debug_unreachable",
"once_cell",
"parking_lot",
"phf_shared",
"precomputed-hash",
"serde",
]
[[package]]
name = "strsim"
version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
[[package]]
name = "syn"
version = "0.15.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5"
dependencies = [
"proc-macro2 0.4.30",
"quote 0.6.13",
2023-11-28 13:01:01 +00:00
"unicode-xid",
]
[[package]]
name = "syn"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.0.107"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"
dependencies = [
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"proc-macro2 1.0.75",
"quote 1.0.35",
"unicode-ident",
]
2023-07-11 16:29:23 +00:00
[[package]]
name = "syn"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "2.0.48"
2023-07-11 16:29:23 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f"
2023-07-11 16:29:23 +00:00
dependencies = [
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"proc-macro2 1.0.75",
"quote 1.0.35",
2023-07-11 16:29:23 +00:00
"unicode-ident",
]
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
[[package]]
name = "sys-info"
version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b3a0d0aba8bf96a0e1ddfdc352fc53b3df7f39318c71854910c3c4b024ae52c"
dependencies = [
"cc",
"libc",
]
2022-10-15 16:26:29 +00:00
[[package]]
name = "tabled"
2022-10-20 11:19:43 +00:00
version = "0.10.0"
2022-10-15 16:26:29 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
2022-10-20 11:19:43 +00:00
checksum = "56c3ee73732ffceaea7b8f6b719ce3bb17f253fa27461ffeaf568ebd0cdb4b85"
2022-10-15 16:26:29 +00:00
dependencies = [
"papergrid 0.7.1",
"tabled_derive 0.5.0",
"unicode-width",
]
[[package]]
name = "tabled"
version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c998b0c8b921495196a48aabaf1901ff28be0760136e31604f7967b0792050e"
dependencies = [
"papergrid 0.11.0",
"tabled_derive 0.7.0",
2022-10-15 16:26:29 +00:00
"unicode-width",
]
[[package]]
name = "tabled_derive"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "beca1b4eaceb4f2755df858b88d9b9315b7ccfd1ffd0d7a48a52602301f01a57"
dependencies = [
"heck",
"proc-macro-error",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"proc-macro2 1.0.75",
"quote 1.0.35",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"syn 1.0.107",
2022-10-15 16:26:29 +00:00
]
[[package]]
name = "tabled_derive"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c138f99377e5d653a371cdad263615634cfc8467685dfe8e73e2b8e98f44b17"
dependencies = [
"heck",
"proc-macro-error",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"proc-macro2 1.0.75",
"quote 1.0.35",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"syn 1.0.107",
]
[[package]]
name = "tempfile"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "3.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4"
dependencies = [
"cfg-if",
"fastrand",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"libc",
"redox_syscall",
"remove_dir_all",
"winapi",
]
[[package]]
name = "termcolor"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
dependencies = [
"winapi-util",
]
2022-10-27 08:36:04 +00:00
[[package]]
name = "textwrap"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.16.0"
2022-10-27 08:36:04 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
2022-10-27 08:36:04 +00:00
[[package]]
name = "thiserror"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.0.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "a35fc5b8971143ca348fa6df4f024d4d55264f3468c71ad1c2f365b0a4d58c42"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.0.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "463fe12d7993d3b327787537ce8dd4dfa058de32fc2b195ef3cde03dc4771e8f"
dependencies = [
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"proc-macro2 1.0.75",
"quote 1.0.35",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"syn 2.0.48",
]
2022-10-26 14:20:09 +00:00
[[package]]
name = "thousands"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3bf63baf9f5039dadc247375c29eb13706706cfde997d0330d05aa63a77d8820"
[[package]]
name = "thread_local"
version = "1.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
dependencies = [
"cfg-if",
"once_cell",
]
2022-10-27 08:36:04 +00:00
[[package]]
name = "tinytemplate"
version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
dependencies = [
"serde",
"serde_json",
]
[[package]]
name = "tracing"
version = "0.1.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
dependencies = [
"pin-project-lite",
"tracing-attributes",
"tracing-core",
]
[[package]]
name = "tracing-attributes"
version = "0.1.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
dependencies = [
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"proc-macro2 1.0.75",
"quote 1.0.35",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"syn 2.0.48",
]
[[package]]
name = "tracing-chrome"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "496b3cd5447f7ff527bbbf19b071ad542a000adf297d4127078b4dfdb931f41a"
dependencies = [
"serde_json",
"tracing-core",
"tracing-subscriber",
]
[[package]]
name = "tracing-core"
version = "0.1.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
dependencies = [
"once_cell",
"valuable",
]
[[package]]
name = "tracing-log"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
dependencies = [
"log",
"once_cell",
"tracing-core",
]
[[package]]
name = "tracing-subscriber"
version = "0.3.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
dependencies = [
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"nu-ansi-term 0.46.0",
"sharded-slab",
"smallvec",
"thread_local",
"tracing-core",
"tracing-log",
]
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
[[package]]
name = "tracing-tree"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "65139ecd2c3f6484c3b99bc01c77afe21e95473630747c7aca525e78b0666675"
dependencies = [
"nu-ansi-term 0.49.0",
"tracing-core",
"tracing-log",
"tracing-subscriber",
]
[[package]]
name = "tracing-wasm"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4575c663a174420fa2d78f4108ff68f65bf2fbb7dd89f33749b6e826b3626e07"
dependencies = [
"tracing",
"tracing-subscriber",
"wasm-bindgen",
]
feat: memkv export import all (#422) * feat: sstable * fix: add magic number version * feat: new mem kv store based sstable * feat: binary_search * fix: sstable iter scan * fix: new mem kv * feat: add cache for sstable * fix: encode schema comment * fix: sstable iter scan * chore: clean * fix: export all * fix: sstable scan bound * fix: sstable iter scan next==prev * fix: merge iter next_back * fix: mem kv export * chore: clean * fix: prev to key * fix: prev find block * fix: get prev block idx * refactor: kv store * fix: checksum when import * fix: meta first last key * Revert "fix: meta first last key" This reverts commit a069c1ed37f89f04e1b7a51c3a91f562819a72f5. * fix: skip empty iter * fix: remove key from large block * chore: comment * feat: compress block * fix: remove key in large block * chore: const * doc: intro sstable encode * test: add kv store fuzz * style: format file * feat: add fuzz to kv store (#428) * fix: kv fuzzer * fix: debug * bk * fix: block iter next back * fix: block prev iter left = next idx * feat: move kv store a crate * fix: remove value len from normal block * doc: sstable format * test: add more test * test: add test * feat: new merge iter * chore: revert * fix: rename next back * fix: rename mem sstable * fix: rename to mem * fix: use Bytes as key * fix: use simple merge iter * feat: compress option * fix: remove empty iter * style: refine some impl details * fix: large block compress * feat: use write read for encode * doc: refine doc * fix: simplify the first chunk * feat: import many times * refactor: refine styles * test: fuzz merge iter * fix: rename peek_xxx() * fix: better sstable iter inner * fix: use mem kv store * pref: mem kv store * perf: export mem kv * chore: clean --------- Co-authored-by: Zixuan Chen <remch183@outlook.com>
2024-08-30 03:44:34 +00:00
[[package]]
name = "twox-hash"
version = "1.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675"
dependencies = [
"cfg-if",
"static_assertions",
]
[[package]]
name = "typenum"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
[[package]]
name = "unicode-ident"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc"
2022-10-15 16:26:29 +00:00
[[package]]
name = "unicode-width"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.1.10"
2022-10-15 16:26:29 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
2022-10-15 16:26:29 +00:00
[[package]]
name = "unicode-xid"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
[[package]]
name = "valuable"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
[[package]]
name = "version_check"
version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
[[package]]
name = "wait-timeout"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6"
dependencies = [
"libc",
]
2022-10-27 08:36:04 +00:00
[[package]]
name = "walkdir"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "2.3.2"
2022-10-27 08:36:04 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
2022-10-27 08:36:04 +00:00
dependencies = [
"same-file",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"winapi",
2022-10-27 08:36:04 +00:00
"winapi-util",
]
[[package]]
name = "wasi"
version = "0.11.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wasm-bindgen"
version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
dependencies = [
"cfg-if",
"wasm-bindgen-macro",
]
[[package]]
name = "wasm-bindgen-backend"
version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
dependencies = [
"bumpalo",
"log",
"once_cell",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"proc-macro2 1.0.75",
"quote 1.0.35",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"syn 2.0.48",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-derive"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1ab6c8bffb3f89584781211283fb57337d6902faab6eaee38f336977bdf177d"
dependencies = [
"js-sys",
"wasm-bindgen",
"wasm-bindgen-derive-macro",
]
[[package]]
name = "wasm-bindgen-derive-macro"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b87c28b31d27616bc69a891700ef0445d2cbaa0340fdacb145145256d5f5fcbb"
dependencies = [
"proc-macro2 1.0.75",
"quote 1.0.35",
"syn 1.0.107",
]
[[package]]
name = "wasm-bindgen-macro"
version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
dependencies = [
"quote 1.0.35",
"wasm-bindgen-macro-support",
]
[[package]]
name = "wasm-bindgen-macro-support"
version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
dependencies = [
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"proc-macro2 1.0.75",
"quote 1.0.35",
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
"syn 2.0.48",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-shared"
version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
[[package]]
name = "web-sys"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.3.61"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
dependencies = [
"js-sys",
"wasm-bindgen",
]
[[package]]
name = "winapi"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
dependencies = [
"winapi-i686-pc-windows-gnu",
"winapi-x86_64-pc-windows-gnu",
]
[[package]]
name = "winapi-i686-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-util"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
dependencies = [
"winapi",
]
[[package]]
name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
name = "windows-core"
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
dependencies = [
"windows-targets 0.52.4",
]
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
[[package]]
name = "windows-sys"
version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
dependencies = [
"windows_aarch64_gnullvm 0.42.2",
"windows_aarch64_msvc 0.42.2",
"windows_i686_gnu 0.42.2",
"windows_i686_msvc 0.42.2",
"windows_x86_64_gnu 0.42.2",
"windows_x86_64_gnullvm 0.42.2",
"windows_x86_64_msvc 0.42.2",
]
[[package]]
name = "windows-sys"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
dependencies = [
"windows-targets 0.48.5",
]
[[package]]
name = "windows-sys"
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
dependencies = [
"windows-targets 0.52.4",
]
[[package]]
name = "windows-targets"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
dependencies = [
"windows_aarch64_gnullvm 0.48.5",
"windows_aarch64_msvc 0.48.5",
"windows_i686_gnu 0.48.5",
"windows_i686_msvc 0.48.5",
"windows_x86_64_gnu 0.48.5",
"windows_x86_64_gnullvm 0.48.5",
"windows_x86_64_msvc 0.48.5",
]
[[package]]
name = "windows-targets"
version = "0.52.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b"
dependencies = [
"windows_aarch64_gnullvm 0.52.4",
"windows_aarch64_msvc 0.52.4",
"windows_i686_gnu 0.52.4",
"windows_i686_msvc 0.52.4",
"windows_x86_64_gnu 0.52.4",
"windows_x86_64_gnullvm 0.52.4",
"windows_x86_64_msvc 0.52.4",
]
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
2022-10-26 15:35:21 +00:00
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.48.5"
2022-10-26 15:35:21 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.52.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
[[package]]
name = "windows_aarch64_msvc"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
[[package]]
name = "windows_aarch64_msvc"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
2022-10-26 15:35:21 +00:00
[[package]]
name = "windows_aarch64_msvc"
version = "0.52.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
[[package]]
name = "windows_i686_gnu"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
[[package]]
name = "windows_i686_gnu"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
[[package]]
name = "windows_i686_gnu"
version = "0.52.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
[[package]]
name = "windows_i686_msvc"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
[[package]]
name = "windows_i686_msvc"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
[[package]]
name = "windows_i686_msvc"
version = "0.52.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
[[package]]
name = "windows_x86_64_gnu"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
[[package]]
name = "windows_x86_64_gnu"
version = "0.48.5"
2022-10-26 15:35:21 +00:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
[[package]]
name = "windows_x86_64_gnu"
version = "0.52.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03"
2022-10-26 15:35:21 +00:00
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
2022-10-26 15:35:21 +00:00
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.52.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177"
Movable List (#293) * bk: add move op content * bk: add inner_movable_list diff and related stuff * perf: high perf state * fix: update old list item cache * fix: should use id in del * feat: two kinds of len for movable list state * bk: add op index to movable list * bk: make basic handler test pass * refactor: add move_from to list event * fix: make all existing tests pass * bk: list move event hint into event * bk: convert inner event into user event Co-authored-by: Leon <leeeon233@gmail.com> * fix: convert issue when inserting new value * feat: add op group for movable list * feat: diff calc * feat: add mov support to tracker * fix: when applying diff, state should be force update * feat: encoded op * feat: snapshot encode * fix: pass basic sync * fix: snapshot encode/decode * fix: warnings * feat: expose mov list to loro crate * test: fuzz movable list * test: fix fuzz integration * fix: movable list basic move sync * fix: movable list events * fix: movable event err * fix: register child container on movable list * fix: should not return child index if the value is already overwritten * fix: local event err in movable list * fix: get elem at pos * refactor: extract mut op that could break invariants * fix: event err * fix: child container to elem err * fix: bringback event issue * fix: event err * fix: event emit * fix: id to cursor iter issue * chore: fix a few warnings * fix: warnings * fix: fix move in tracker * test: add consistency check * test: fix tracker * refactor: simplify event conversion in docstate * refactor: refine move event * refactor: simplify the maintain of parent child links * fix: revive err * fix: warnings * fix: it's possible that pos change but cannot find the respective list item * fix: elem may be dropped after snapshot * fix: warnings * fix: richtext time travel issue * fix: move op used wrong delete id on tracker * fix: handle events created by concurrent moves correctly * fix: event hint error, used op index for list event * fix: move_from flag err * fix: id to cursor get err * test: add mov fuzz target * fix: the pos of inserting new container * fix: used wrong event hint index * fix: del event hint * fix: warnings * fix: internal diff to event err * fix: event's move flag error This "move" flag does not actually mean that the insertion is caused by the move op. 就算是 move 造成的它不一定就能是 true 它得是下游真的能在“前一个版本的 array 里找到“,才能是 true * fix: remove redundant elements from the movable list The Movable List is currently flawed; an element may not exist on the movable list state, yet there are operations that revive its corresponding list item. In such cases, the diff calculation does not send back the corresponding element state (this occurs when tracing back, which fuzz testing currently does not cover. It might only be exposed by randomly switching to a version and then checking for consistency; otherwise, as long as all elements are in memory, this problem does not arise). Moreover, there is no need to store elements in the state that do not have a corresponding list item. They will be deleted during the Snapshot, and relying on "them still being in the state" is incorrect behavior. Such adjustments also eliminate the need to maintain the `pending_elements` field. By allowing the opgroup to record the mapping from pos id to state id, we can ensure that the events sent to the movable list state will include the corresponding state. Movable List 现在是有错的,elem 可能不存在 movable list state 上,但是又有操作把它对应的 list item 复活了,此时 diff calc 不会把对应 element 状态发送回来(往前回溯的时候会出现,fuzz 现在没覆盖到。得有随意切换一个版本然后 check consistency 才可能会暴露;否则现在大家 elements 都在内存,就没这个问题) 而且我们没有必要在状态中存储没有对应 list item 的 element。在 Snapshot 的时候它们都会被删掉,如果依赖了“它们还会在 state 内”就是错误的行为。这样的调整也让我们不需要去维护 pending_elements 这个 field 了 通过让 opgroup 记录了 pos id → state id 的映射,可以保证发给 movable list state 的事件中会带上对应的 state * test: make fuzzer stricter * test: test expectation error * refactor: rename stable pos to cursor * tests: chore list bench init * test: add bench * bench: add mov & set bench * feat(wasm): movable list js api * fix: make movablelist able to attach even if it's already attached & refine the type of subscribe * fix: remove the loro doc param in .unsub * refactor: refine ts types and export setContainer api * chore: fix warnings * chore: rm debug logs * perf: reduce mem usage of opgroup * bench: add list criterion bench --------- Co-authored-by: Leon <leeeon233@gmail.com>
2024-04-26 04:08:53 +00:00
[[package]]
name = "windows_x86_64_msvc"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
[[package]]
name = "windows_x86_64_msvc"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
[[package]]
name = "windows_x86_64_msvc"
version = "0.52.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
[[package]]
name = "xxhash-rust"
version = "0.8.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a5cbf750400958819fb6178eaa83bee5cd9c29a26a40cc241df8c70fdd46984"
2024-09-13 10:39:44 +00:00
[[package]]
name = "yansi"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
feat: memkv export import all (#422) * feat: sstable * fix: add magic number version * feat: new mem kv store based sstable * feat: binary_search * fix: sstable iter scan * fix: new mem kv * feat: add cache for sstable * fix: encode schema comment * fix: sstable iter scan * chore: clean * fix: export all * fix: sstable scan bound * fix: sstable iter scan next==prev * fix: merge iter next_back * fix: mem kv export * chore: clean * fix: prev to key * fix: prev find block * fix: get prev block idx * refactor: kv store * fix: checksum when import * fix: meta first last key * Revert "fix: meta first last key" This reverts commit a069c1ed37f89f04e1b7a51c3a91f562819a72f5. * fix: skip empty iter * fix: remove key from large block * chore: comment * feat: compress block * fix: remove key in large block * chore: const * doc: intro sstable encode * test: add kv store fuzz * style: format file * feat: add fuzz to kv store (#428) * fix: kv fuzzer * fix: debug * bk * fix: block iter next back * fix: block prev iter left = next idx * feat: move kv store a crate * fix: remove value len from normal block * doc: sstable format * test: add more test * test: add test * feat: new merge iter * chore: revert * fix: rename next back * fix: rename mem sstable * fix: rename to mem * fix: use Bytes as key * fix: use simple merge iter * feat: compress option * fix: remove empty iter * style: refine some impl details * fix: large block compress * feat: use write read for encode * doc: refine doc * fix: simplify the first chunk * feat: import many times * refactor: refine styles * test: fuzz merge iter * fix: rename peek_xxx() * fix: better sstable iter inner * fix: use mem kv store * pref: mem kv store * perf: export mem kv * chore: clean --------- Co-authored-by: Zixuan Chen <remch183@outlook.com>
2024-08-30 03:44:34 +00:00
[[package]]
name = "zerocopy"
version = "0.7.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
version = "0.7.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
dependencies = [
"proc-macro2 1.0.75",
"quote 1.0.35",
"syn 2.0.48",
]
[[package]]
name = "zstd"
version = "0.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9"
dependencies = [
"zstd-safe",
]
[[package]]
name = "zstd-safe"
version = "7.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059"
dependencies = [
"zstd-sys",
]
[[package]]
name = "zstd-sys"
version = "2.0.13+zstd.1.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa"
dependencies = [
"cc",
"pkg-config",
]