Chg: Let afIoc::AutoBuilderHooks.onBuild hooks decorate / replace the built instance.
Bug: Could not remove ordered config with non-string keys.
v3.0.6
New: Added advanced Registry.setActiveScope() and Scope.asActive() methods that allow setting a given scope as the active one in the thread.
New: Added Scope.inheritance() and Scope.isDestroyed().
New: Added RegistryBuilder.silent() to disbale startup and shutdown messages.
Chg: Removed @Deprecated methods that eased the transition from IoC v2 (Potential breaking change.)
Chg: RegistryBuilder.addModule() now accepts null for convenience.
v3.0.4
New: Added Scope.isThreaded().
Chg: RegistryBuilder methods onScopeCreate(), onScopeDestroy(), onServiceBuild(), and decorateService() now all throw an err if a matching scope / service could not be found.
Chg: Refined how active scopes work vs the default scope.
Chg: Updated Scope documentation.
Chg: Renamed Scope.createChildScope() -> Scope.createChild() to retain backwards binary compatibility.
Chg: Scope.createChild() optionally takes a func, and returns the scope should the func be null.
Chg: Jailbroken scopes remain active in thread until destroyed.
v3.0.2
New: Services may now be decorated! See RegistryBuilder.decorateService().
Chg: Rejigged the configuration constraint ordering algorithm.
Bug: Methods marked with @PostInjection weren't being called after scope.inject().
Bug: config.inOrder |->| { ... } wasn't being applied to overriden config.
v3.0.0
New: IoC now availble in Javascript!
New: IoC v3 is a re-write - it's lighter, faster, and more cusomisable than ever before!
v2.0
v2.0.10
Bug: Could not autobuild types that had a List or a Map as the first ctor param - it was clashing with service config.
v2.0.8
New: Factory Functions! Autobuild instances without passing around the Registry.
New: Lazy Functions! An easy way to defer service creation.
Chg: Autobuild and service ctors are now selected on a best fit basis, not just the number of parameters.
Chg: Nullable ctor and method parameters are now deemed optional and don't throw an Err if not found.
Chg: Hardcoded ServiceProvider to be the last dependency provider to simplify config contributions.
Bug: Some combinations of autobuilding and service creation caused IoC to hang indefinitely instead of throwing a service recursion error.
v2.0.6
New: Added RegistryBuilder.dup().
New: Added IocService.options().
Chg: RegistryBuilder is now serializable.
v2.0.4
New: Documentation - lots of it!
Chg: Renamed InjectionCtx.injectingInto --> InjectionCtx.target and InjectionCtx.injectingIntoType --> InjectionCtx.targetType.
Bug: @Autobuild fields could be created twice if an it-block ctor was used.
v2.0.2
Chg: perApplication scoped services can only be created once, even during threaded race conditions.
Chg: Added withCtorArgs() and withFieldVals() to ServiceDefinitions; building custom services is now even easier!
Chg: LocalProvider takes into account @Inject.type when injecting LocalLists and LocalMaps. See ThreadLocalManager.
Chg: RegistryBuilder.addModulesFromPod() now takes a Str (pod name), not a pod instance.
Chg: DependencyProviders is more accessible for efanXtra.
Bug: ServiceDefinitions.withImplId() should not have taken an Id parameter.
v2.0.0
New: All attributes of a service (scope, proxy, etc...) may be overridden.
New: @Override facet for defining service override methods in AppModule.
New: @Autobuild facet for injecting non-service instances.
New: ServiceDefinitions, ServiceDefinitionOptions and ServiceOverrideOptions replaces ServiceBinder et al.
New: Added RegistryBuilder.removeModule().
Chg: Optomised and reduced internal code - now 20% faster!
Chg: Services are not proxied unless they need to be; e.g. it has method advice, or is thread scope being injected into an app scoped service. (Potential breaking change.)
Chg: DependencyProviders are applied to all fields, @Inject facet is no longer required.
Chg: Deleted autobuild from @Inject facet in favour of a new-ish @Autobuild facet. (Breaking change.)
Chg: Default serviceId for @Build methods is now the qualified name of the return Type. (Potential breaking change.)
Chg: Deleted ServiceOverrides service in favour of service @Override methods. (Breaking change.)
Chg: Deleted ServiceStats service in favour of method Registry.serviceDefinitions(). (Breaking change.)
Chg: Deleted all existing @Deprecated classes. (Breaking change.)
Chg: LogProvider service may be overridden to ensure it provides all injected Log instances. (Breaking change.)
Chg: Lower cased the names of the ServiceLifecycle enum. (Breaking change.)
Chg: Merged LocalRefProvider, LocalListProvider and LocalMapProvider into the one LocalProvider.
Bug: IocService methods now more closely follow those of Registry.
v1.7
v1.7.6
New: Added a dedicated IocShutdownErr throw when registry methods are invoked after it has been shutdown.
Chg: Added checked parameter to Registry.serviceById().
Chg: Removed the little used Unwrappable Err mixin.
Bug: RegistryBuilder could potentially throw an Err when adding both modules and pods.
v1.7.4
Bug: Configuration contributions added via set() did not have any implied ordering constraints.
v1.7.2
Chg: Configuration ordering constraints are no longer specified with strings. Use the new Constraints class to pass your Obj keys in. This avoids problems with toStr() and string keys with commas.
v1.7.0
New: All service configuration is done through the uberConfiguration object.
New: Configuration IDs can now be injected by specifying a Map rather than a List.
New: Added @Advise.serviceType for advising a single service.
Chg: Deprecated OrderedConfig and MappedConfig in favour of Configuration.
Chg: Aspect invoker references null instead of an empty list when holding method advice.
Chg: LocalRefProvider, LocalListProvider and LocalMapProvider now use the Type's qualified name as the key
Chg: Deleted all existing @Deprecated classes.
Bug: Could not always contribute empty maps and lists created with shorthand notation, e.g. [,].
v1.6
v1.6.4
New: Methods on proxied services may now have plain default values - Plastic will attempt to guess what they are!
Chg: Removed deprecated classes TypeCoercer, StrategyRegistry and NotFoundErr.
Chg: Changed the default values for some Registry methods to null (from Obj#.emptyList).
Chg: Moved the startup logging to RegistryStartup contributions so they could easily be removed / overridden.
Chg: Removed the RegistryBuilder options logServiceCreation, disableProxies, suppressStartupBanner and suppressStartupServiceList.