금융 기술 기업 Jane Street(제인 스트리트)가 입력 데이터 변경에 따라 복잡한 계산을 효율적으로 갱신하는 라이브러리 ‘Incremental(증분 계산)’을 공개했습니다. 이 라이브러리는 데이터가 바뀔 때마다 전체 계산을 처음부터 다시 하는 대신, 변경된 부분만 식별하여 최소한의 연산으로 결과를 업데이트하는 ‘증분 계산’ 방식을 지원합니다. 이는 Umut Acar(우무트 아카르) 등의 자기 조정 계산(self-adjusting computation) 연구에서 영감을 받아 개발되었습니다.
Incremental은 스프레드시트처럼 대규모 계산이 필요한 환경에서 데이터 변화에 효율적으로 반응하도록 설계되었습니다. 예를 들어, GUI(그래픽 사용자 인터페이스) 애플리케이션에서 새로운 데이터가 들어올 때 화면의 뷰를 빠르게 갱신하거나, 원본 데이터에서 파생된 필터링, 매핑 결과가 원본과 계속 동기화되도록 보장할 수 있습니다. 이는 기존의 반응형 프로그래밍(reactive programming) 패러다임, 특히 JavaScript(자바스크립트) UI 프레임워크에서 시그널(signals)이라는 이름으로 널리 사용되는 개념과 유사합니다. Vue(뷰), SolidJS(솔리드JS), Svelte(스벨트) 등 여러 프레임워크가 이 방식을 채택하고 있으며, Rust(러스트)의 Leptos(렙토스)나 Salsa(살사) 같은 증분 계산 시스템도 존재합니다.
이 라이브러리의 핵심 가치는 복잡한 계산 그래프에서 변경 사항을 정확하고 효율적으로 전파하는 데 있습니다. 단순한 옵저버(observer) 패턴은 계산량이 기하급수적으로 늘어나거나 동시성 문제가 발생할 수 있지만, Incremental은 동적으로 변하는 그래프 구조에서도 최적에 가까운 성능과 정확성을 제공합니다. 이는 개발자가 연구 단계에 머물러 있던 증분 계산의 개념을 실제 애플리케이션에 쉽게 적용할 수 있도록 돕는다는 점에서 중요합니다. 잘 설계된 빌드 시스템과 유사하게, 필요한 부분만 재계산하여 리소스를 절약하고 사용자 경험을 향상시키는 데 기여할 것입니다.