Skip to content

Releases: PereViader/ManualDi

ManualDi Unity3d v3.3.2

Choose a tag to compare

@github-actions github-actions released this 30 Jun 21:21

feat: Bump version to 3.3.2

feat(unity): make UnityEngine.UI package optional in Sync and Async - Move button, toggle, and slider UI link extensions to BindingUnityEngineUiExtensions in Async. - Wrap UnityEngine.UI extensions in #if USING_PACKAGE_UNITYENGINE_UI. - Add versionDefines for com.unity.ugui Refs: #132

ManualDi Unity3d v3.3.1

Choose a tag to compare

@github-actions github-actions released this 26 Jun 20:07

feat: Bump version to 3.3.1

refactor(#127): fix Rider/Unity background generator crashes and caching issues

  • Convert the Generate method to static in both Sync and Async source generators. This prevents the incremental compilation delegates from capturing the generator instance, which was breaking Rider's background incremental updates.
  • Introduce a 100-iteration depth safety net to all recursive BaseType traversal loops in GetClassData to prevent infinite analyzer hangs and freezes when typing incomplete or cyclic inheritance hierarchies.
  • Add null-safety guards to the GetNonNullableType, FullyQualifyTypeWithoutNullable, and IsNullableTypeSymbol helpers to prevent compiler crashes on unresolved types during background analysis.

ManualDi Unity3d v3.3.0

Choose a tag to compare

@github-actions github-actions released this 26 Jun 18:24

feat: Bump version to 3.3.0

feat(#130): add WithCancellationTokenSource to DiContainerBindings Allows users of DiContainerBindings to provide a custom CancellationTokenSource from the outside instead of instantiating it internally.

tests: cover error paths of Async DiContainerBindings build
Adds missing tests ensuring exceptions within initialization correctly handle and dispose of resources while retaining the correct exceptions inside an AggregateException if both fail.

Refs: #129
refactor: use ThrowHelper pattern for dynamic exception throwing Introduces internal ThrowHelper classes in both ManualDi.Sync and ManualDi.Async containing methods marked with [DoesNotReturn] and [MethodImpl(MethodImplOptions.NoInlining)]. All dynamic exception throwing paths (using string building/interpolation) have been refactored to call the new helpers to reduce calling method footprint and optimize inlining.
Refs: #128

ManualDi Unity3d v3.2.0-preview.3

Pre-release

Choose a tag to compare

@github-actions github-actions released this 07 Jun 21:55

feat: Bump version to 3.2.0-preview.3

feat(generator)!: remove ManualDiGeneratorExtensionAttribute functionality
Remove support for the [ManualDiGeneratorExtension] attribute, the associated
source generator pipeline logic, related tests, and documentation.

BREAKING CHANGE: The ManualDiGeneratorExtensionAttribute has been completely removed.
Any extension methods relying on this attribute for automatic linkage will no longer
compile or be invoked.

fix(generators): simplify extension methods pipeline and improve EquatableArray caching

  • Remove the Select mapping after Collect in both Sync and Async generators, using ImmutableArray directly to simplify the pipeline.
  • Update EquatableArray to treat null and 0-length arrays as equal to prevent false cache invalidations.
  • Implement comparison operators (==, !=) on EquatableArray.

Refs: #127

perf: Optimize ManualDi.Async allocation of BindingContext

perf: Optimize ManualDi.Sync allocations

docs: Fix README format

perf: optimize ManualDi.Async container setup by eliminating temporary HashSet allocation
Removes the temporary HashSet<Binding> and its associated lookup/insertion operations during SetupBindings. Replaces the three-state BindingWiredState enum with a boolean IsWired flag, reducing initialization overhead and heap allocations during container building.

ManualDi Unity3d v3.2.0-preview.2

Pre-release

Choose a tag to compare

@github-actions github-actions released this 24 May 23:20

feat: Bump version to 3.2.0-preview.2

chore: bump minimum unity version to unity 6
Bumps the minimum required Unity version from 2022.3 to 6000.0 (Unity 6)
in both the Sync and Async package manifests, templates, and documentation.

feat(#63): add automatic generator extensions support via ManualDiGeneratorExtensionAttribute
Introduce the [ManualDiGeneratorExtension] attribute to mark static extension methods on Binding.
The source generators for both Sync and Async now detect these extensions, check type constraints against class metadata, and automatically inject matching extension method calls into the generated Default/DefaultImpl methods.

perf: Optimize InvokeDelegateUsingReflexionAsync memory allocations
Replaced LINQ .Select().ToArray() with a manual for loop and pre-allocated array in ResolveParameters of both ManualDi.Sync and ManualDi.Async.

ManualDi Unity3d v3.2.0-preview.1

Pre-release

Choose a tag to compare

@github-actions github-actions released this 23 May 22:15

feat: Bump version to 3.2.0-preview.1

ci(unity3d): replace npm pack with Unity UPM CLI and remove OpenUPM publishing

perf: optimize DiContainer initialization loop by iterating over dictionary values
Avoid the copy overhead of KeyValuePair structs during container initialization by iterating directly on allBindings.Values instead of the dictionary itself. This results in a ~3.7% runtime speedup during setup.

Note: This introduces a minor, one-time 32-byte heap allocation per container initialization due to the lazy instantiation of the Dictionary.ValueCollection wrapper.

fix(#118): Binding methods with more than 2 generic parameters had issues when used together with ResolveAll The Binding operations that had more than one TApparent were registering bindings in a way that could create Binding chanins that could be invalid in some cases

feat(##117): Update Microsoft.CodeAnalysis from 4.1.0 to 4.3.0

ManualDi Unity3d v3.1.1

Choose a tag to compare

@github-actions github-actions released this 21 May 22:15

feat: Bump version to 3.1.1

fix: Source generator sometimes failing on the IDE

test: Source generator equality comparer

feat(#115): Add pull request test workflow

test(#114): Add tests for missing ConstructorDependency exceptions
Add tests for missing ConstructorDependency exceptions in ManualDi.Async
fix(#107): Fix hardcoded git-bash executable path
Replaced hardcoded 'C:/Program Files/Git/git-bash.exe' with a dynamically resolved path using Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) in SyncUtilsCommonDll.cs for both Sync and Async Unity3d projects.

ManualDi Unity3d v3.1.0

Choose a tag to compare

@github-actions github-actions released this 20 May 23:11

feat: Bump version to 3.1.0

fix(#105): Optimization is invalid on netstandard2.0

feat: Optimize ManualDi.Sync by 1% by clearing faster at the root depth

feat(#105): Optimize dictionary insertion in DiContainerBindings
Use TryAdd instead of TryGetValue followed by Add in AddBinding method
to improve performance by reducing the number of lookups for the common
case of a new type registration. This change is applied to both Async
and Sync implementations.

test(#113): Add missing tests for WouldResolveAsync

  • Added TestWouldResolveAsyncWithoutCondition and TestWouldResolveAsyncWithCondition in TestDiContainerWouldResolve.cs.

chore(#112): Remove obsolete QueueInitialization method from DiContainerBindings

  • Remove obsolete QueueInitialization method

The QueueInitialization method in ManualDi.Async/ManualDi.Async/Building/DiContainerBindings.cs was marked as obsolete and forwarded calls to QueueInitialize. It has been removed to improve code health and maintainability.

  • Remove obsolete QueueInitialization method

The QueueInitialization method in ManualDi.Async/ManualDi.Async/Building/DiContainerBindings.cs was marked as obsolete and forwarded calls to QueueInitialize. It has been removed to improve code health and maintainability.
feat(#111): Update the source generator to support partial classes

ManualDi Unity3d v3.0.1

Choose a tag to compare

@github-actions github-actions released this 01 Mar 19:58

feat: Bump version to 3.0.1

fix: Wait for OpenUPM publish to finish before triggering the next one

ManualDi Unity3d v3.0.0

Choose a tag to compare

@github-actions github-actions released this 01 Mar 17:50

feat: Bump version to 3.0.0

feat: Add QueueStartupAsync to ManualDi.Sync