2.7 KiB
2.7 KiB
Agenda - Break Monolith Runtime
Problema
Partes críticas do runtime cresceram como monólitos:
- dispatcher de syscalls concentrado em um arquivo enorme;
- lógica de VM e testes unitários convivendo no mesmo arquivo gigante;
- fronteiras entre domínio, orquestração e teste cada vez menos nítidas.
Isso hoje é visível principalmente em:
prometeu-vm/src/virtual_machine.rsprometeu-system/src/virtual_machine_runtime.rsprometeu-hal/src/syscalls.rs
Dor
- Evolução fica cara porque qualquer mudança exige navegar arquivos enormes.
- Review perde precisão: comportamento, helper, contrato e teste se misturam no mesmo lugar.
- A chance de regressão cresce porque a coesão está baixa e o isolamento entre domínios está fraco.
- O custo cognitivo para novos contribuidores já está alto demais para o estágio do projeto.
- Testes internos gigantes mascaram ownership ruim de comportamento.
Alvo da Discussao
Definir uma estratégia de modularização do runtime que preserve as invariantes atuais, mas reduza o acoplamento estrutural.
O objetivo não é "fatiar por estética". É:
- extrair dispatcher de syscalls por domínio;
- separar responsabilidades dentro do runtime;
- tirar testes unitários do arquivo monolítico da VM quando fizer sentido;
- manter discoverability e rigor arquitetural.
O Que Precisa Ser Definido
-
Topologia de módulos. Como dividir syscalls por domínio:
systemgfxinputaudiofslogassetbank
-
Dono da orquestração. O que continua no runtime central e o que migra para módulos/serviços especializados.
-
Estratégia para a VM. Quais blocos de
virtual_machine.rsdevem virar módulos dedicados:- execução/opcodes
- loader init
- syscalls
- GC/safepoint hooks
- helpers de testes
-
Estratégia de testes. Quais testes permanecem próximos ao módulo e quais viram integração.
-
Critério de coesão. Como evitar trocar um monólito por vinte arquivos arbitrários sem fronteira real.
O Que Necessita Para Resolver
- mapa atual de responsabilidades por arquivo;
- proposta de topologia modular;
- critério de migração de testes;
- definição clara do que é API interna entre módulos;
- plano incremental de refactor sem quebrar o runtime no meio.
Fora de Escopo
- redesign funcional do comportamento da VM;
- reescrita completa do runtime;
- reorganização cosmética sem ganho de ownership.
Critério de Saida Desta Agenda
Pode virar PR quando houver:
- proposta de módulos aprovada;
- fronteira clara entre dispatcher, domínio e orquestração;
- plano para testes unitários e integração;
- estratégia incremental que preserve o comportamento existente.