Тема
Kernel, Runtime и Node
Архитектура Raph разделяет владение данными и владение выполнением.
RaphKernel
RaphKernel — source of truth для общих данных. Он владеет:
DataAdapter;- data observers;
- списком подключённых runtime lanes;
- transaction buffer;
- registry и графом derived dependencies;
- доставкой стабилизированного набора событий в runtime.
Несколько runtime одного kernel читают и изменяют одно хранилище, но не разделяют свои ноды, phases и dirty queues.
RaphRuntime
RaphRuntime — один execution lane. Он владеет:
- dependency graph нод;
- parent/children деревом local runtime;
- фазами и phase router;
- scheduler и frame context;
- dirty queues;
- control-flow subscriptions;
- runtime-specific derived registrations и data observers.
Runtime регистрируется в kernel при создании. destroy() снимает его observers и derived registrations, останавливает loop и освобождает ноды.
RaphApp
RaphApp наследует RaphRuntime и по умолчанию создаёт собственный RaphKernel. Это совместимый самостоятельный runtime:
ts
import { RaphApp } from '@endge/raph'
const app = new RaphApp({ id: 'preview' })При необходимости RaphApp можно подключить к уже существующему kernel через параметр kernel.
RaphNode
RaphNode является единицей выполнения. Нода имеет:
- стабильный
idвнутри графа; type,weightиmeta;- зависимости в
DepGraph; - подписки на data paths;
- parent и children для local runtime;
- local values и dirty state по фазам.
Связь parent → child, создаваемая через addChild, одновременно добавляет dependency edge. Но произвольная dependency через addDependency не обязана означать иерархическое владение.
Static facade
Raph лениво создаёт default RaphApp и делегирует ему операции. Static API удобен, но остаётся глобальным process-wide контуром. Для preview, нескольких документов или независимо уничтожаемых runtime предпочтительнее явные instances.