# Loro: 고성능 CRDT 라이브러리로 상태 관리 재구성 하기

> Clean Markdown view of GeekNews topic #11849. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=11849](https://news.hada.io/topic?id=11849)
- GeekNews Markdown: [https://news.hada.io/topic/11849.md](https://news.hada.io/topic/11849.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2023-11-14T10:42:42+09:00
- Updated: 2023-11-14T10:42:42+09:00
- Original source: [loro.dev](https://www.loro.dev/blog/loro-now-open-source)
- Points: 12
- Comments: 1

## Topic Body

- "Local-First" 개발 패러다임을 위한 오픈소스 고성능 CRDT 라이브러리인 Loro에 대한 소개   
- 다양한 CRDT 알고리듬을 지원   
  - 공통 자료 구조: 정렬된 컬렉션을 위한 `List`, 키-밸류 쌍을 위한 LWW(Last Write Win) `Map`, 계층형 데이터를 위한 `Tree`, Rich Text 조작을 위한 `Text`  
  - OT-like CRDTs: Seph Gentle 의 Diamond-type 컨셉에 기초함   
  - Rich Text CRDTs: Ink & Switch의 Peritext 와 Matthew Weidner의 RDT Fugue 알고리듬을 통합   
  - Movable Tree: Martin Kleppman의 논문인 "A Highly-Available Move Operation for Replicated Trees"를 구현   
- Loro의 고급 기능   
  - 편집 기록 보존: 오버헤드가 적은 편집 이력을 기록하여 변경 사항을 손쉽게 추적  
  - History를 통한 시간 여행: 일반적으로 충돌이 발생하면 CRDT가 잘 해결하지만, 필요할 때 사용자가 수동으로 비교하고 병합할 수 있음   
  - 고성능: yjs, automerge 등 보다 빠름   
- 자료 구조   
  - generic-btree 를 오픈소스로 공개. 컴팩트한 메모리 레이아웃 및 캐시 친화적인 설계   
  - 성능이 뛰어나며, 최소한의 코드로 다양한 정보유형을 지원   
  - 내부적으로 문서의 상태와 히스토리(새 탭에서 열기)를 분리  
- 내년 중반까지 1.0을 출시하는 것을 목표로 하고 있음   
  - WASM 인터페이스를 제공할 예정   
  - 문서화 작업도 진행중  
  - Movable Lists 와 글로벌 Undo/Redo 작업등을 지원할 계획

## Comments



### Comment 20570

- Author: xguru
- Created: 2023-11-14T10:42:46+09:00
- Points: 1

- Seph Gentle 의 Diamond-type 컨셉은 [더 빠른 CRDT를 위해 최적화 하기](https://news.hada.io/topic?id=4744) 를 참고  
- Ink & Switch의 [Peritext - Rich Text를 위한 CRDT](https://news.hada.io/topic?id=5451)  
- [제가 틀렸었어요. CRDT가 미래입니다.](https://news.hada.io/topic?id=2962)
