FFI boundary: migrate JSON byte buffers to Protobuf #11
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Контекст
Сейчас значения через FFI-границу (Haskell ↔ Rust) передаются как версионированные JSON byte buffers (Aeson на Haskell, serde_json на Rust). JSON читаемый, но медленный — текстовый парсинг на каждом вызове.
Что сделать
Заменить JSON на Protobuf:
.proto-файлы становятся source of truth для контракта между Planner и Rust runtimeproto-lensprostСхемы
Нужны
.proto-определения для:SystemState(input: Rust → Haskell)Plan(output: Haskell → Rust)PlanError(output: Haskell → Rust)Версионирование
Версионирование через proto field numbering +
reservedдля удалённых полей. Убрать ручныеversion-поля из типов после миграции.Что убрать
ToJSON/FromJSONинстансы дляSystemState,Plan,PlanError,PlanStep,UndoизPlanner.Typesaesonизplanner-core(если не нужна для чего-то ещё)Замечания
Actionв IR уже имеет Aeson инстансы — не трогать, это не FFI