ProxyGen.NET Version History

January 26, 2025 ยท View on GitHub

  • 1.0.0: First non preview release
  • 1.1.0:
    • added: ProxyGenerator accepts interceptors having more than one public constructor
  • 1.1.1:
    • added: Anonymous type support
    • fixed: Malformed assmebly names (in certain circumstances)
    • fixed: Badly identified declaring types (in certain circumstances)
  • 2.0.0:
    • breaking: Dropped netstandard1.6 support
    • breaking: Compilation errors are stored in a single string (instead of string array)
    • breaking: Removed Features class
    • fixed: Misinterpreted "ref" modifier (in certain circumstances)
    • fixed: Proxy generation failed on interface methods having parameter names that were used internally
    • fixed: Proxy generation failed on interface methods having by ref array parameter
    • done: ProxyGenerator tested against all the public interfaces found in mscorlib.dll
  • 2.0.1:
    • done: Remove internal classes that can be referenced from "Solti.Utils.Primitives"
  • 2.0.2:
    • done: Handle unexpected errors on visibility checks
  • 2.0.3:
    • done: Renamed assembly
  • 2.1.0:
    • added: xXxGenerator.CacheDirectory property
  • 2.1.1:
    • done: Small optimization under the hood
  • 3.0.0:
    • breaking: InterfaceInterceptor.CALL_TARGET has been removed
    • breaking: InterfaceInterceptor.Invoke() returns the result of the original method (instead of CALL_TARGET)
  • 3.0.1:
    • fixed: Missing nullable annotation on InterfaceInterceptor.Invoke()
  • 3.0.2:
    • done: Add title and description to the generated assembly
  • 3.0.3:
    • fixed: Missing nullable annotation on InterfaceInterceptor.Invoke() (again)
  • 3.1.0:
    • added: xXxGenerator.GeneratedTypeAsync property
    • obsolete: xXxGenerator.GeneratedType property
  • 3.1.1:
    • fixed: Infinite lock in TypeGenerator.GetGeneratedTypeAsync()
  • 3.1.2:
    • fixed: Missing reference error
  • 3.1.3:
    • done: Reduced reference count in the generated assembly
  • 3.1.4:
    • fixed: Possible stack overflow
  • 4.0.0-preview1:
    • breaking: New Interfaceinterceptor layout (though it affects the internal parts only)
    • breaking: Removed TypeGenerator.References property
    • breaking: New ISyntaxFactory layout
    • introduced: IProxySyntaxFactory interface
    • introduced: ConcurrentInterfaceinterceptor class
    • improved: Generated code
    • done: Enhanced emit process
    • done: Interceptors can modify event and property arguments
  • 4.0.0-preview2:
    • breaking: Removed TypeGenerator.GeneratedType[Async] property. It is substituted by the GetGeneratedType[Async]() method
    • breaking: Assembly cache directory can be set from appname.runtimeconfig.json
    • introduced: Proxy embedding
    • introduced: Cancellable TypeGenerators
    • introduced: Pointer type support
    • introduced: ref readonly support
    • introduced: Source code dumping
    • improved: Generated code
    • improved: Visibility check
    • fixed: InterfaceInterceptor.InvokeTarget cleanup after invocation
  • 4.0.0-preview3:
    • breaking: Removed TypeGenerator.SyntaxFactory property (syntax factories are intended to be private)
    • done: Register ProxyGen as an analyzer
    • fixed: Missing dependencies (in Solti.Utils.Proxy.deps.json)
  • 4.0.0-preview4:
    • breaking: Related property names in appname.runtimeconfig.json should be prefixed with "ProxyGen."
    • introduced: IProxyAccess interface
    • introduced: Source code dumping is available in compile time
  • 4.0.0-preview5:
    • fixed: MSBuild property reading issue
  • 4.0.0-preview6:
    • done: Disable "nullabe annotation context" in generated sources
    • done: Source generator warns on unsupported language version
  • 4.0.0-preview7:
    • breaking: ITypeResolution became internal
    • fixed: Embedded type resolution issue
  • 4.0.0-preview8:
    • fixed: Missing reference issue
    • improved: Syntax factory performance
  • 4.0.0:
    • done: Some code cosmetics
  • 4.0.1:
    • fixed: Hash code generation issue
    • fixed: Invalid qualified metadata name issue
    • fixed: The system could not find generic methods having non-generic counterpart
    • introduced: Native integer support
    • done: Test against .NET5.0
  • 4.0.2:
    • done: Annotate generated classes with GeneratedCodeAttribute
    • done: Suppress all compiler warnings in the generated sources
  • 5.0.0:
    • breaking: New InterfaceInterceptor<>.Invoke() layout
    • breaking: Dropped ConcurrentInterfaceInterceptor<> class
    • done: Simplified generated code
  • 5.0.1:
    • added: Package "readme"
  • 6.0.0-preview1:
    • breaking: Updated Roslyn to v4 (so the source generator feature may not work properly in older VS2019 versions)
    • done: Generator logic has been overhauled
    • introduced: Proxy activator (Generator.Activate()) feature
    • introduced: Untyped API
  • 6.0.0-preview2:
    • fixed: Some ProxyEmbedder related issues
    • fixed: Broken netcoreapp3.0 support
    • done: Code alignments
    • done: Test against netcoreapp3.0, net5.0, net6.0
  • 6.0.0:
    • fixed: Missing validation
    • fixed: Crash on attempt to embed the same generator more than once
  • 6.0.1:
    • fixed: Performance issue of generated proxy
  • 7.0.0-preview1:
    • breaking: Dropped InvocationContext.InvokeTarget property
    • improved: Significantly improved performance
  • 7.0.0-preview2:
    • improved: More performant generated code
    • introduced: MethodContext class
  • 7.0.0-preview3:
    • improved: Proxy activation performance
  • 7.0.0-preview4:
    • fixed: Caching issue
  • 7.0.0-preview5:
    • improved: Reflection
  • 7.0.0-preview6:
    • introduced: ProxyEmbedder uses Roslyn's source generator V2 API
  • 7.0.0:
    • updated: Solti.Utils.Primitives
  • 7.1.0:
    • improved: Proxy activator (now it is part of the generated class, no expression compilation required)
  • 8.0.0-preview1:
    • breaking: InterfaceInterceptor<TInterface>.Member|Method has been renamed to InterfaceMember|InterfaceMethod
    • introduced: InterfaceInterceptor<TInterface, TTarget> class
    • updated: Roslyn to v4.3
    • done: Tested against net7.0
  • 8.0.0:
    • breaking: Dropped GeneratedClass class
    • done: Some minor code alignment
  • 8.0.1:
    • fixed: Typo in MethodContext class (I consider it as a fix instead of breaking change)
  • 8.1.0:
    • introduced: Generic constraint support
    • done: Using static delegates in the generated proxy classes (which involves performance benefits)
  • 8.1.1:
    • fixed: Possible NullReferenceException when trying to initialize configuration
  • 8.2.0:
    • fixed: Couple of reflection related bugs
    • introduced: .NET Framework support
    • introduced: Roslyn v3 (legacy) variant
  • 8.2.1:
    • done: Number of dependencies has been reduced by 2
  • 9.0.0:
    • improved: Cancellation in asnyc Generator methods
    • done: Tested against net8.0, related fixes
    • breaking: Generators are demoted to class
  • 9.1.0:
    • introduced: Partial interface implementation support
  • 9.1.1:
    • done: Tested against net9.0, related fixes