Skip to content
Merged
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
21 changes: 17 additions & 4 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,14 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: actions/setup-dotnet@v4
name: Install Current .NET SDK
name: Install .NET SDK 11.0 (release candidate)
with:
dotnet-version: '11.0.x'
dotnet-quality: 'preview'
- uses: actions/setup-dotnet@v4
name: 'Install .NET SDK 10.0'
with:
dotnet-version: '10.0.x'
- uses: actions/setup-dotnet@v4
name: 'Install .NET SDK 9.0'
with:
Expand All @@ -44,11 +51,14 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
framework: [ 'net8.0', 'net10.0' ]
framework: [ 'net8.0', 'net10.0', 'net11.0' ]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-dotnet@v4
name: Install Current .NET SDK
name: Install .NET SDK 11.0 (release candidate)
with:
dotnet-version: '11.0.x'
dotnet-quality: 'preview'
# Building the analyzers (the code fix projects in particular) for the linux runtime
# results in some super-old System.* packages with vulnerabilities being pulled in.
# Our analyzers don't do anything wrt. trimming and AOT so it's safe to disable them.
Expand All @@ -63,7 +73,10 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: actions/setup-dotnet@v4
name: Install Current .NET SDK
name: Install .NET SDK 11.0 (release candidate)
with:
dotnet-version: '11.0.x'
dotnet-quality: 'preview'
- name: Generate NuGet Packages
run: dotnet pack --configuration Release --output nupkg
- uses: actions/upload-artifact@v4
Expand Down
2 changes: 1 addition & 1 deletion Documentation/src/async.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ The asynchronous APIs have two homes, and which one you use depends only on your
* **Older frameworks** (`netstandard2.0` up to .NET 9): they are in the `Funcky.Async` package, which compiles the same
sources against [System.Linq.Async](https://www.nuget.org/packages/System.Linq.Async) (versions 5 and 6).

The `net10.0` asset of `Funcky.Async` contains nothing but type forwards to `Funcky`. A project that referenced
The `net10.0` and `net11.0` assets of `Funcky.Async` contain nothing but type forwards to `Funcky`. A project that referenced
`Funcky.Async` on .NET 8 and then retargets to .NET 10 therefore keeps the package reference working, and can drop
it whenever convenient. The forwards do not make the two sides source compatible, though: where the base class
library already provides an operator, Funcky defers to it, and two of them differ from the `Funcky.Async` shape.
Expand Down
3 changes: 3 additions & 0 deletions FrameworkFeatureConstants.props
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,7 @@
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net10.0'))">
<DefineConstants>$(DefineConstants);SHUFFLE_EXTENSION;ASYNC_SUPPORTED</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net11.0'))">
<DefineConstants>$(DefineConstants);INDEX_OF_CHAR_COMPARISON_RANGE;INDEX_OF_RUNE</DefineConstants>
</PropertyGroup>
</Project>
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<TargetFramework>net11.0</TargetFramework>

<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
Expand Down
6 changes: 3 additions & 3 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>net10.0;$(FunckyNewestTargetFramework);net8.0;net5.0;netstandard2.1;netstandard2.0</TargetFrameworks>
<TargetFrameworks>net11.0;net10.0;$(FunckyNewestTargetFramework);net8.0;net5.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 @@ -101,8 +101,8 @@
<Import Project="..\Analyzers.props" />
<Import Project="..\GlobalUsings.props" />
<Import Project="..\FrameworkFeatureConstants.props" />
<PropertyGroup Condition="'$(TargetFramework)' != 'net10.0' and '$(TargetFramework)' != 'netstandard2.0'">
<!-- The public API is identical on every target framework except net10.0 (type forwards only) and netstandard2.0 (no System.Index). -->
<PropertyGroup Condition="'$(FunckyAsyncIntegrated)' != 'true' and '$(TargetFramework)' != 'netstandard2.0'">
<!-- The public API is identical on every target framework except net10.0 and newer (type forwards only) and netstandard2.0 (no System.Index). -->
<FunckyPublicApiGroup>common</FunckyPublicApiGroup>
</PropertyGroup>
<Import Project="..\PublicApiAnalyzers.targets" />
Expand Down
Loading
Loading