Introducing EarlyRuntime to delegate load logic to plugins themselves.
Instead of hard-coded or declarative logic for plugin dependencies and de-duplication, each plugin will decide what it wants to do (if different from default) by implementing an EarlyRuntime. An early runtime has full control over how the plugin wants to be loaded. It can also add a deferred plugins which will be added to the end of the plugin list. This is useful if some plugins have logic that needs to be done after all other plugins (in its view)
Also, renamed a bunch of stuff in plugins. Mostly getting rid of Plugin prefix since there are too many structs/types now
Introducing
EarlyRuntime
to delegate load logic to plugins themselves.Instead of hard-coded or declarative logic for plugin dependencies and de-duplication, each plugin will decide what it wants to do (if different from default) by implementing an
EarlyRuntime
. An early runtime has full control over how the plugin wants to be loaded. It can also add a deferred plugins which will be added to the end of the plugin list. This is useful if some plugins have logic that needs to be done after all other plugins (in its view)Also, renamed a bunch of stuff in plugins. Mostly getting rid of
Plugin
prefix since there are too many structs/types nowCloses #226 Closes #196 Closes #175 Closes #206
TODO