Reimagine state management with CRDTs. Make your app collaborative effortlessly.
Find a file
Zixuan Chen 594b60dafb
Perf store cache in parent node (#36)
* refactor: make internal and leaf use same type of cache

* refactor: add cache update

* test : add normalization to arb test

* test: fuzz

* fix: internal insert bug

* fix: missing utf16

* test: fix test sub overflow

* feat: use heapless for binary heap

* refactor: refine warning

* test: reduce test time

* perf: reduce computation when finding pos

* bench: fix ignore parse time in benching

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

* fix: type err

* fix: fix type err

* fix: cache when merge & borrow

* refactor: simplify code

* fix: cumulated tree trait bug

* fix: a few fatal bugs (still buggy)

* fix: global tree trait

* refactor: rm an unused fn

* fix: insert at cursor bug

* fix: in cursor insert cache may be invalid

strip the checker there

* chore: remove needless check

* refactor: add inline to methods

* test: remove cfg=mem for mem example

* fix: type err
2022-12-06 16:34:46 +08:00
.devcontainer chore: add dev container 2022-11-18 00:48:18 +08:00
.github/workflows refactor: use import context & basic notify 2022-11-24 12:15:25 +08:00
.vscode Perf store cache in parent node (#36) 2022-12-06 16:34:46 +08:00
crates Perf store cache in parent node (#36) 2022-12-06 16:34:46 +08:00
docs docs: add glossary 2022-11-18 21:02:31 +08:00
scripts chore: dev container config 2022-11-18 00:31:11 +08:00
supply-chain chore: update crdt-list dep 2022-10-26 23:35:21 +08:00
.editorconfig
.gitignore fix: reduce heap alloc 2022-10-31 19:27:13 +08:00
Cargo.lock Perf store cache in parent node (#36) 2022-12-06 16:34:46 +08:00
Cargo.toml perf: turn on lto for release mode 2022-12-05 16:34:44 +08:00
deno.jsonc Perf store cache in parent node (#36) 2022-12-06 16:34:46 +08:00
deno.lock test: add wasm test 2022-11-23 19:49:39 +08:00
deny.toml
README.md docs: init readme 2022-11-18 21:02:31 +08:00
rust-toolchain chore: use stable rust as GAT become stable 2022-11-06 23:18:15 +08:00

Loro 🦜

Loro is a fast CRDT framework with built-in end-to-end encryption ability.

It provides a set of data structures that can automatically sync without any conflict. With end-to-end encryption addon, all data can be encrypted without losing the ability to collaborate with the others. It aims to be the engine for building local-first software.

Why Loro

  • 🚀 It is pretty fast
  • 🔒 [WIP] Security built-in
  • 💻 Syncing data made easy
  • 📜 Preserve all history with low overhead
  • 🪐 [WIP] Time travel the history in milliseconds

Loro supports a variety of data structures and CRDT algorithms.

  • It supports the most used List, Map and Text.
  • [TODO] Peritext for fine-grind rich text operations
  • [TODO] Moveable Tree for directory-like moving operations
  • [WIP] Super fast version checkout and undo/redo

Credits

  • Automerge for its columnar encoding algorithm
  • Yjs for the efficient algorithm of merging blocks
  • Diamond-types for its idea of low-overhead merging algorithm
  • Ink & Switch for Local-first Software and Peritext