Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Documentation/src/xunit.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ What does change between the xunit versions is the test host and the runner, not
"Verified" means Funcky's own test suite runs green against that version. "Expected to work" means nothing in the
xunit release notes touches what Funcky uses, but the suite is not run against it yet
([#1015](https://github.com/polyadic/funcky/issues/1015) tracks a matrix build). The test host column is xunit's
minimum; Funcky.Xunit.v3 itself targets `netstandard2.0` and `net6.0`.
minimum; Funcky.Xunit.v3 itself targets `netstandard2.0` and `net8.0`.

If `dotnet test` on the .NET 10 SDK stops with "Testing with VSTest target is no longer supported by
Microsoft.Testing.Platform", either opt into Microsoft.Testing.Platform in `global.json`
Expand Down
12 changes: 3 additions & 9 deletions FrameworkFeatureConstants.props
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,13 @@
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'netstandard2.1'))">
<DefineConstants>$(DefineConstants);INDEX_OF_CHAR_COMPARISONTYPE_SUPPORTED;TIMESPAN_MULTIPLY_SUPPORTED;SPLIT_ACCEPTS_STRING_SEPARATOR;LAZY_RETURN_CONSTRUCTOR;QUEUE_TRY_OVERLOADS;OPTIMIZED_ELEMENT_AT;RANGE_SUPPORTED;READ_ONLY_SPAN_SUPPORTED;INDEX_TYPE;JOIN_TO_STRING_CHAR_SEPARATOR;REMOVE_EXTENSION</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'netcoreapp3.0'))">
<!-- net8.0 is the oldest .NET (Core) target framework since Funcky 4.0.0, so the features that arrived between
.NET Core 3.0 and .NET 8 are one group; they are still absent on the netstandard assets. -->
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))">
<DefineConstants>$(DefineConstants);SYSTEM_INDEX_SUPPORTED;IP_END_POINT_TRY_PARSE_SUPPORTED;OPTIMIZED_FIRST_LAST_OR_DEFAULT</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net5.0'))">
<DefineConstants>$(DefineConstants);SET_CURRENT_STACK_TRACE_SUPPORTED;DYNAMICALLY_ACCESSED_MEMBERS_ATTRIBUTE_SUPPORTED</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net6.0'))">
<DefineConstants>$(DefineConstants);STACK_TRACE_HIDDEN_SUPPORTED;RANDOM_SHARED;DATE_ONLY_SUPPORTED;TIME_ONLY_SUPPORTED;PRIORITY_QUEUE;TRY_GET_NON_ENUMERATED_COUNT;HTTP_HEADERS_NON_VALIDATED;ELEMENT_AT_INDEX</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net7.0'))">
<DefineConstants>$(DefineConstants);GENERIC_MATH;GENERIC_PARSABLE;AOT</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))">
<DefineConstants>$(DefineConstants);RANDOM_SHUFFLE;UTF8_SPAN_PARSABLE;JSON_SERIALIZER_OPTIONS_TRY_GET_TYPE_INFO;IP_NETWORK</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0'))">
Expand Down
6 changes: 2 additions & 4 deletions Funcky.Async/Funcky.Async.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
the tests against each version of the range (see the SystemLinqAsyncVersion matrix in build.yml
and Funcky.Async.Test.csproj), which exercises exactly the binary compatibility consumers rely on. -->
<FunckyNewestTargetFramework>net9.0</FunckyNewestTargetFramework>
<TargetFrameworks>net11.0;net10.0;$(FunckyNewestTargetFramework);net8.0;net5.0;netstandard2.1;netstandard2.0</TargetFrameworks>
<TargetFrameworks>net11.0;net10.0;$(FunckyNewestTargetFramework);net8.0;netstandard2.1;netstandard2.0</TargetFrameworks>
<LangVersion>preview</LangVersion>
<Nullable>enable</Nullable>
<!-- The package deliberately keeps targeting frameworks that are out of support, see SupportPolicy.md. -->
Expand Down Expand Up @@ -42,11 +42,9 @@
SYSTEM_LINQ_ASYNC marks the few places where System.Linq.Async differs from the .NET 10 base class library. -->
<DefineConstants>$(DefineConstants);ASYNC_SUPPORTED;SYSTEM_LINQ_ASYNC</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net6.0'))">
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))">
<IsTrimmable>true</IsTrimmable>
<EnableTrimAnalyzer>true</EnableTrimAnalyzer>
</PropertyGroup>
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net7.0'))">
<IsAotCompatible>true</IsAotCompatible>
</PropertyGroup>
<ItemGroup Condition="'$(FunckyAsyncIntegrated)' == 'true'">
Expand Down
4 changes: 2 additions & 2 deletions Funcky.Xunit.v3/Funcky.Xunit.v3.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<FunckyNewestTargetFramework>net6.0</FunckyNewestTargetFramework>
<FunckyNewestTargetFramework>net8.0</FunckyNewestTargetFramework>
<TargetFrameworks>$(FunckyNewestTargetFramework);netstandard2.0</TargetFrameworks>
<LangVersion>preview</LangVersion>
<Nullable>enable</Nullable>
Expand All @@ -21,7 +21,7 @@
<PropertyGroup>
<DefineConstants>$(DefineConstants);XUNIT_V3</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)' == 'net6.0'">
<PropertyGroup Condition="'$(TargetFramework)' == 'net8.0'">
<DefineConstants>$(DefineConstants);STACK_TRACE_HIDDEN_SUPPORTED</DefineConstants>
</PropertyGroup>
<ItemGroup>
Expand Down
4 changes: 2 additions & 2 deletions Funcky.Xunit/Funcky.Xunit.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<FunckyNewestTargetFramework>net6.0</FunckyNewestTargetFramework>
<FunckyNewestTargetFramework>net8.0</FunckyNewestTargetFramework>
<TargetFrameworks>$(FunckyNewestTargetFramework);netstandard2.0</TargetFrameworks>
<LangVersion>preview</LangVersion>
<Nullable>enable</Nullable>
Expand All @@ -19,7 +19,7 @@
<EnablePackageValidation>true</EnablePackageValidation>
<NoWarn>$(NoWarn);NU5104</NoWarn>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)' == 'net6.0'">
<PropertyGroup Condition="'$(TargetFramework)' == 'net8.0'">
<DefineConstants>$(DefineConstants);STACK_TRACE_HIDDEN_SUPPORTED</DefineConstants>
</PropertyGroup>
<ItemGroup>
Expand Down
62 changes: 19 additions & 43 deletions Funcky/CompatibilitySuppressions.xml
Original file line number Diff line number Diff line change
@@ -1,70 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<!-- https://learn.microsoft.com/dotnet/fundamentals/package-validation/diagnostic-ids -->
<Suppressions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Funcky.Extensions.EnumerableExtensions.Shuffle``1(System.Collections.Generic.IEnumerable{``0})</Target>
<Left>lib/net9.0/Funcky.dll</Left>
<Right>lib/net10.0/Funcky.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Funcky.Extensions.EnumerableExtensions.Chunk``1(System.Collections.Generic.IEnumerable{``0},System.Int32)</Target>
<Left>lib/net5.0/Funcky.dll</Left>
<Right>lib/net6.0/Funcky.dll</Right>
<Left>lib/netstandard2.1/Funcky.dll</Left>
<Right>lib/net8.0/Funcky.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Funcky.Extensions.ParseExtensions.&lt;G&gt;$34505F560D9EACF86A87F3ED1F85E448.ParseCacheControlHeaderValueOrNone</Target>
<Left>lib/net6.0/Funcky.dll</Left>
<Right>lib/net7.0/Funcky.dll</Right>
<Left>lib/netstandard2.1/Funcky.dll</Left>
<Right>lib/net8.0/Funcky.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Funcky.Extensions.ParseExtensions.&lt;G&gt;$34505F560D9EACF86A87F3ED1F85E448.ParseEnumOrNone(System.Type,System.Boolean)</Target>
<Left>lib/net6.0/Funcky.dll</Left>
<Right>lib/net7.0/Funcky.dll</Right>
<Left>lib/netstandard2.1/Funcky.dll</Left>
<Right>lib/net8.0/Funcky.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Funcky.Extensions.ParseExtensions.&lt;G&gt;$34505F560D9EACF86A87F3ED1F85E448.ParseEnumOrNone(System.Type)</Target>
<Left>lib/net6.0/Funcky.dll</Left>
<Right>lib/net7.0/Funcky.dll</Right>
<Left>lib/netstandard2.1/Funcky.dll</Left>
<Right>lib/net8.0/Funcky.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Funcky.Extensions.ParseExtensions.&lt;G&gt;$34505F560D9EACF86A87F3ED1F85E448.ParseEnumOrNone``1</Target>
<Left>lib/net6.0/Funcky.dll</Left>
<Right>lib/net7.0/Funcky.dll</Right>
<Left>lib/netstandard2.1/Funcky.dll</Left>
<Right>lib/net8.0/Funcky.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Funcky.Extensions.ParseExtensions.&lt;G&gt;$34505F560D9EACF86A87F3ED1F85E448.ParseEnumOrNone``1(System.Boolean)</Target>
<Left>lib/net6.0/Funcky.dll</Left>
<Right>lib/net7.0/Funcky.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Funcky.Extensions.ParseExtensions.&lt;G&gt;$7E0B8C73485617FC5155886DD83A182C.ParseEnumOrNone(System.Type,System.Boolean)</Target>
<Left>lib/net6.0/Funcky.dll</Left>
<Right>lib/net7.0/Funcky.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Funcky.Extensions.ParseExtensions.&lt;G&gt;$7E0B8C73485617FC5155886DD83A182C.ParseEnumOrNone(System.Type)</Target>
<Left>lib/net6.0/Funcky.dll</Left>
<Right>lib/net7.0/Funcky.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Funcky.Extensions.ParseExtensions.&lt;G&gt;$7E0B8C73485617FC5155886DD83A182C.ParseEnumOrNone``1</Target>
<Left>lib/net6.0/Funcky.dll</Left>
<Right>lib/net7.0/Funcky.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Funcky.Extensions.ParseExtensions.&lt;G&gt;$7E0B8C73485617FC5155886DD83A182C.ParseEnumOrNone``1(System.Boolean)</Target>
<Left>lib/net6.0/Funcky.dll</Left>
<Right>lib/net7.0/Funcky.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Funcky.Extensions.EnumerableExtensions.Shuffle``1(System.Collections.Generic.IEnumerable{``0})</Target>
<Left>lib/net9.0/Funcky.dll</Left>
<Right>lib/net10.0/Funcky.dll</Right>
<Left>lib/netstandard2.1/Funcky.dll</Left>
<Right>lib/net8.0/Funcky.dll</Right>
</Suppression>
</Suppressions>
13 changes: 4 additions & 9 deletions Funcky/Funcky.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<FunckyNewestTargetFramework>net11.0</FunckyNewestTargetFramework>
<TargetFrameworks>$(FunckyNewestTargetFramework);net10.0;net9.0;net8.0;net7.0;net6.0;net5.0;netcoreapp3.1;netstandard2.0;netstandard2.1</TargetFrameworks>
<TargetFrameworks>$(FunckyNewestTargetFramework);net10.0;net9.0;net8.0;netstandard2.0;netstandard2.1</TargetFrameworks>
<LangVersion>preview</LangVersion>
<Nullable>enable</Nullable>
<!-- The package deliberately keeps targeting frameworks that are out of support, see SupportPolicy.md. -->
Expand Down Expand Up @@ -30,20 +30,15 @@
<PackageReference Include="PolySharp" PrivateAssets="all" />
<PackageReference Include="System.Collections.Immutable" Condition="'$(TargetFramework)' == 'netstandard2.0' Or '$(TargetFramework)' == 'netstandard2.1'" />

<!-- .NET Core 3.1 ships with System.Text.Json, but we reference the NuGet version instead, so we always get System.Text.Json >= 5.0.0. It is the first version to never return null converter from CreateConverter(...). -->
<PackageReference Include="System.Text.Json" Condition="'$(TargetFramework)' == 'netstandard2.0' Or '$(TargetFramework)' == 'netstandard2.1' Or '$(TargetFramework)' == 'netcoreapp3.1'" />
<!-- The netstandard assets reference the NuGet System.Text.Json, so they always get System.Text.Json >= 5.0.0. It is the first version to never return null converter from CreateConverter(...). -->
<PackageReference Include="System.Text.Json" Condition="'$(TargetFramework)' == 'netstandard2.0' Or '$(TargetFramework)' == 'netstandard2.1'" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Funcky.SourceGenerator\Funcky.SourceGenerator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" PrivateAssets="all" />
</ItemGroup>
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net6.0'))">
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))">
<IsTrimmable>true</IsTrimmable>
<EnableTrimAnalyzer>true</EnableTrimAnalyzer>
<!-- The ILLink analyzers shipped in the .NET 6 and 7 targeting packs predate C# 14 extension blocks and throw on them (AD0001);
the analyzers of .NET 8 and later check the same sources. -->
<EnableTrimAnalyzer Condition="'$(TargetFramework)' == 'net6.0' Or '$(TargetFramework)' == 'net7.0'">false</EnableTrimAnalyzer>
</PropertyGroup>
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net7.0'))">
<IsAotCompatible>true</IsAotCompatible>
</PropertyGroup>
<ItemGroup>
Expand Down
Loading
Loading