Skip to content

Commit 74b74a3

Browse files
committed
Update changelog
1 parent 2f1001a commit 74b74a3

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Breaking Changes:
77
- Moved `Castle.Core.Logging.DiagnosticsLogger` into a separate NuGet package `Castle.Core-DiagnosticsLogger`, which renders the main package dependency-free for .NET 8+ (@snakefoot, #694)
88

99
Enhancements:
10-
- Minimally improved support for methods having `ref struct` parameter and return types, such as `Span<T>`: Intercepting such methods caused the runtime to throw `InvalidProgramException` and `NullReferenceException` due to forbidden conversions of `ref struct` values when transferring them into & out of `IInvocation` instances. To prevent these exceptions from being thrown, such values now get replaced with `null` in `IInvocation`, and with `default` values in return values and `out` arguments. When proceeding to a target, the target methods likewise receive such nullified values. (@stakx, #665)
10+
- Comprehensive support for proxying methods with byref-like (`ref struct`) parameter and return types, such as `Span<T>`. Until now, any `ref struct` values triggered exceptions during interception because DynamicProxy could not box them to `object` & transfer them into `IInvocation` instances. Now, byref-like values are represented in `IInvocation` instances with new substitute types `SpanReference<T>`, `ReadOnlySpanReference<T>`, and `ByRefLikeReference<TByRefLike>` which grant you indirect access to the actual values. Please [read the documentation for details](docs/dynamicproxy-byref-like-parameters.md). (@stakx, #665, #712)
1111
- Restore ability on .NET 9 and later to save dynamic assemblies to disk using `PersistentProxyBuilder` (@stakx, #718)
1212
- Configure SourceLink & `.snupkg` symbols package format (@Romfos, #722)
1313
- Support for C# `with { ... }` expressions. Cloning a record proxy using `with` now produces another proxy of the same type (instead of an instance of the proxied type, as before). The cloning process can still be changed by intercepting the record class' `<Clone>$` method. (@stakx, #733)

0 commit comments

Comments
 (0)