{"id":20604218,"url":"https://github.com/y-crdt/y-octo","last_synced_at":"2025-04-13T00:41:53.652Z","repository":{"id":189108640,"uuid":"680061148","full_name":"y-crdt/y-octo","owner":"y-crdt","description":"CRDT implementation which is compatible with https://github.com/yjs/yjs","archived":false,"fork":false,"pushed_at":"2024-12-26T16:14:14.000Z","size":2670,"stargazers_count":235,"open_issues_count":10,"forks_count":8,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-04-04T04:04:24.317Z","etag":null,"topics":["crdt-algorithm","crdt-implementations","crdts","thread-safe"],"latest_commit_sha":null,"homepage":"https://octobase.pro/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/y-crdt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["toeverything"]}},"created_at":"2023-08-18T08:48:55.000Z","updated_at":"2025-03-28T01:42:35.000Z","dependencies_parsed_at":"2023-12-22T08:25:11.857Z","dependency_job_id":"91755bfb-4e97-44ce-bc0e-fb1cbc4320d3","html_url":"https://github.com/y-crdt/y-octo","commit_stats":null,"previous_names":["toeverything/y-octo"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/y-crdt%2Fy-octo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/y-crdt%2Fy-octo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/y-crdt%2Fy-octo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/y-crdt%2Fy-octo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/y-crdt","download_url":"https://codeload.github.com/y-crdt/y-octo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248650417,"owners_count":21139672,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["crdt-algorithm","crdt-implementations","crdts","thread-safe"],"created_at":"2024-11-16T09:21:34.969Z","updated_at":"2025-04-13T00:41:53.632Z","avatar_url":"https://github.com/y-crdt.png","language":"Rust","funding_links":["https://github.com/sponsors/toeverything"],"categories":[],"sub_categories":[],"readme":"# Y-Octo\n\n[![test](https://github.com/toeverything/y-octo/actions/workflows/y-octo.yml/badge.svg)](https://github.com/toeverything/y-octo/actions/workflows/y-octo.yml)\n[![docs]](https://docs.rs/y-octo/latest/y_octo)\n[![crates]](https://crates.io/crates/y-octo)\n[![codecov]](https://codecov.io/gh/toeverything/y-octo)\n\nY-Octo is a high-performance CRDT implementation compatible with [yjs].\n\n## Introduction\n\nY-Octo is a tiny, ultra-fast CRDT collaboration library built for all major platforms. Developers can use Y-Octo as the [Single source of truth](https://en.wikipedia.org/wiki/Single_source_of_truth) for their application state, naturally turning the application into a [local-first](https://www.inkandswitch.com/local-first/) collaborative app.\n\nY-Octo also has interoperability and binary compatibility with [yjs]. Developers can use [yjs] to develop local-first web applications and collaborate with Y-Octo in native apps alongside web apps.\n\n## Who are using\n\n\u003ca href=\"https://affine.pro\"\u003e\u003cimg src=\"./assets/affine.svg\" /\u003e\u003c/a\u003e\n\n[AFFiNE](https://affine.pro) is using y-octo in production. There are [Electron](https://affine.pro/download) app and [Node.js server](https://github.com/toeverything/AFFiNE/tree/canary/packages/backend/native) using y-octo in production.\n\n\u003ca href=\"https://www.mysc.app/\"\u003e\u003cimg src=\"https://www.mysc.app/images/logo_blk.webp\" width=\"120px\" /\u003e\u003c/a\u003e\n\n[Mysc](https://www.mysc.app/) is using y-octo in the Rust server, and the iOS/Android client via the Swift/Kotlin bindings (Official bindings coming soon).\n\n## Features\n\n- ✅ Collaborative Text\n  - ✅ Read and write styled Unicode compatible data.\n  - 🚧 Add, modify and delete text styles.\n  - 🚧 Embedded JS data types and collaborative types.\n  - ✅ Collaborative types of thread-safe.\n- Collaborative Array\n  - ✅ Add, modify, and delete basic JS data types.\n  - ✅ Recursively add, modify, and delete collaborative types.\n  - ✅ Collaborative types of thread-safe.\n  - 🚧 Recursive event subscription\n- Collaborative Map\n  - ✅ Add, modify, and delete basic JS data types.\n  - ✅ Recursively add, modify, and delete collaborative types.\n  - ✅ Collaborative types of thread-safe.\n  - 🚧 Recursive event subscription\n- 🚧 Collaborative Xml (Fragment / Element)\n- ✅ Collaborative Doc Container\n  - ✅ YATA CRDT state apply/diff compatible with [yjs]\n  - ✅ State sync of thread-safe.\n  - ✅ Store all collaborative types and JS data types\n  - ✅ Update event subscription.\n  - 🚧 Sub Document.\n- ✅ Yjs binary encoding\n  - ✅ Awareness encoding.\n  - ✅ Primitive type encoding.\n  - ✅ Sync Protocol encoding.\n  - ✅ Yjs update v1 encoding.\n  - 🚧 Yjs update v2 encoding.\n\n## Testing \u0026 Linting\n\nPut everything to the test! We've established various test suites, but we're continually striving to enhance our coverage：\n\n- Rust Tests\n  - Unit tests\n  - [Loom](https://docs.rs/loom/latest/loom/) multi-threading tests\n  - [Miri](https://github.com/rust-lang/miri) undefined behavior tests\n  - [Address Sanitizer](https://doc.rust-lang.org/beta/unstable-book/compiler-flags/sanitizer.html) memory error detections\n  - [Fuzzing](https://github.com/rust-fuzz/cargo-fuzz) fuzzing tests\n- Node Tests\n- Smoke Tests\n- Eslint, Clippy\n\n## Related projects\n\n- [OctoBase]: The open-source embedded database based on Y-Octo.\n- [yjs]: Shared data types for building collaborative software in web.\n\n## Maintainers\n\n- [DarkSky](https://github.com/darkskygit)\n- [liuyi](https://github.com/forehalo)\n- [LongYinan](https://github.com/Brooooooklyn)\n\n## Why not [yrs](https://github.com/y-crdt/y-crdt/)\n\nSee [Why we're not using yrs](./y-octo-utils/yrs-is-unsafe/README.md)\n\n## License\n\nY-Octo are [MIT licensed].\n\n[codecov]: https://codecov.io/gh/toeverything/y-octo/graph/badge.svg?token=9AQY5Q1BYH\n[crates]: https://img.shields.io/crates/v/y-octo.svg\n[docs]: https://img.shields.io/docsrs/y-octo.svg\n[test]: https://github.com/toeverything/y-octo/actions/workflows/y-octo.yml/badge.svg\n[yjs]: https://github.com/yjs/yjs\n[Address Sanitizer]: https://github.com/toeverything/y-octo/actions/workflows/y-octo-asan.yml/badge.svg\n[Memory Leak Detect]: https://github.com/toeverything/y-octo/actions/workflows/y-octo-memory-test.yml/badge.svg\n[OctoBase]: https://github.com/toeverything/octobase\n[BlockSuite]: https://github.com/toeverything/blocksuite\n[AFFiNE]: https://github.com/toeverything/affine\n[MIT licensed]: ./LICENSE\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fy-crdt%2Fy-octo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fy-crdt%2Fy-octo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fy-crdt%2Fy-octo/lists"}