리액티브 시스템은 데이터 노드 간 의존성 그래프를 형성하며, 변경 시 종속 값의 일관성 유지를 위해 업데이트를 전파합니다. 이는 Observer 패턴 대비 간접성, 실행 순서 보장, 런타임 오버헤드를 유발하여 일부 FRP 구현이 Observer 기반 코드보다 최대 50배 느릴 수 있습니다.
Viering의 논문은 TruffleRuby(Graal VM 기반 Ruby 인터프리터)와 Graal JIT 컴파일러를 활용한 새로운 언어 계층인 Reactive Ruby를 제안합니다. TruffleRuby 내 리액티브 구문 임베딩과 JIT 컴파일을 통해, Reactive Ruby는 최적화된 Observer 기반 코드에 필적하는 성능을 달성하는 중요한 진전을 이루었습니다.
실제 Ruby 적용 예시로 세 가지가 있습니다. ReactiveVar
를 통한 리액티브 변수 전파는 값 변경 시 구독자에게 알림으로써 종속 변수 자동 업데이트를 시뮬레이션합니다. ReactiveNode
를 활용한 의존성 그래프 구축은 노드 간 의존성을 추적하고 효율적으로 업데이트하는 Reactive Ruby의 핵심 메커니즘을 반영합니다. 마지막으로, 글리치 방지는 업데이트의 조기 전파로 인한 일관성 없는 중간 상태를 막기 위해 의존성 그래프의 위상 정렬을 사용하는 기법을 제시합니다.