Make a runtime defined by its associated types, generically rather than by concrete fields.
This epic makes HostState generic over a Components bundle (rewriting the ten impl ... Host for HostState blocks as blanket impls and deduplicating the load_one/reinstantiate_one store construction), then collapses that ad-hoc generic into a RuntimeTypes associated-type lattice with a concrete EthTypes preset. This is the largest single diff in M0; land the generic-HostState step isolated. Depends on the component seam (E2).
Delivery order: generic HostState -> RuntimeTypes lattice + real preset.
Design target (whole M0): a runtime is defined by its associated types (RuntimeTypes), assembled from pluggable component builders, declared by a type-state RuntimeBuilder, and spun up by a separate imperative launcher that returns a RuntimeHandle. Cross-cutting concerns attach as RuntimeAddOns. The library must be embeddable with zero CLI surface; the nexum binary is one consumer of the same builder. Bias every change toward move + add-trait-bound, not rewrite; each sub-issue keeps the tree compiling and tests green.
Make a runtime defined by its associated types, generically rather than by concrete fields.
This epic makes
HostStategeneric over aComponentsbundle (rewriting the tenimpl ... Host for HostStateblocks as blanket impls and deduplicating theload_one/reinstantiate_onestore construction), then collapses that ad-hoc generic into aRuntimeTypesassociated-type lattice with a concreteEthTypespreset. This is the largest single diff in M0; land the generic-HostState step isolated. Depends on the component seam (E2).Delivery order: generic HostState -> RuntimeTypes lattice + real preset.
Design target (whole M0): a runtime is defined by its associated types (
RuntimeTypes), assembled from pluggable component builders, declared by a type-stateRuntimeBuilder, and spun up by a separate imperative launcher that returns aRuntimeHandle. Cross-cutting concerns attach asRuntimeAddOns. The library must be embeddable with zero CLI surface; thenexumbinary is one consumer of the same builder. Bias every change toward move + add-trait-bound, not rewrite; each sub-issue keeps the tree compiling and tests green.