§81's "renderer backends": the §62 registry a backend package registers
into (registerWebglRenderer, registerWebgpuRenderer).
Not revocable — RendererRegistry.register returns the registry and the §62
front door offers no unregister on the shared instance, so a plugin that
registered a backend has no way to take it back.
Application provides this only when the application passed
rendererRegistry (§45's scoped-registry option). With no registry to
scope, there is no RendererRegistry value the application holds — reaching
for the process-wide one would make four name the class in every bundle,
which is precisely the cost resolveRenderer exists to avoid. Applications
whose plugins register backends pass their own registry, or install through
a standalone @fourjs/core plugin host (its name is left unwritten here —
the §96 boundary test's textual ban is blunt on purpose).
§81's "renderer backends": the §62 registry a backend package registers into (
registerWebglRenderer,registerWebgpuRenderer).Not revocable —
RendererRegistry.registerreturns the registry and the §62 front door offers no unregister on the shared instance, so a plugin that registered a backend has no way to take it back.Applicationprovides this only when the application passedrendererRegistry(§45's scoped-registry option). With no registry to scope, there is noRendererRegistryvalue the application holds — reaching for the process-wide one would makefourname the class in every bundle, which is precisely the costresolveRendererexists to avoid. Applications whose plugins register backends pass their own registry, or install through a standalone@fourjs/coreplugin host (its name is left unwritten here — the §96 boundary test's textual ban is blunt on purpose).