Updates Cesil to .NET 5 and takes advantage of all the new goodies that brings along.
Visible changes
Now targets .NET 5
Support for nint, nuint, and nullable equivalents
Reading and writing record types behaves "as expected"
Casting dynamic rows to records behaves "as expected"
Init only properties are supported by Cesil.SourceGenerators
Internal changes (optional)
Now using C# 9
Various pinning helpers are removed as concepts, as anything that was temporarily pinned is now placed in the pinned object heap
Throw.cs has been greatly refactored to take advantage of improvements in Coverlet and .NET 5
This has removed a ton of code and a good amount of generated IL, so there may be ancillary performance improvements as well
[SkipLocalInit] is now applied to the Cesil module, so extra care is needed around stackalloc'd memory - but that was good practice anyway
The two separate test projects have been merged into one
Commentary
Performance comparisons will be interesting. Just the .NET 5 upgrade probably contributes a lot, but removing pinning and Throw's IL pressure could make serious contributions.
Updates Cesil to .NET 5 and takes advantage of all the new goodies that brings along.
Visible changes
Internal changes (optional)
Commentary
Performance comparisons will be interesting. Just the .NET 5 upgrade probably contributes a lot, but removing pinning and Throw's IL pressure could make serious contributions.