From 0d5c6cec0ebb7c5f1522b68be787c3be8a957f2c Mon Sep 17 00:00:00 2001 From: Curt Hagenlocher Date: Wed, 26 Nov 2025 09:45:30 -0800 Subject: [PATCH 1/6] Add support for .NET 10 to tests Remove support for .NET 6 --- README.md | 2 +- .../FlightAspServerExample.csproj | 2 +- .../FlightClientExample.csproj | 2 +- .../FluentBuilderExample.csproj | 2 +- .../Apache.Arrow.Flight.AspNetCore.csproj | 2 +- .../Apache.Arrow.Flight.Sql.csproj | 2 +- src/Apache.Arrow/Apache.Arrow.csproj | 2 +- .../Apache.Arrow.Benchmarks.csproj | 2 +- .../Apache.Arrow.Compression.Tests.csproj | 16 +++++++++++++-- .../ArrowStreamReaderTests.cs | 20 ++++++++++++++++++- ...Apache.Arrow.Flight.IntegrationTest.csproj | 3 +-- .../Apache.Arrow.Flight.Sql.Tests.csproj | 2 +- .../Apache.Arrow.Flight.TestWeb.csproj | 2 +- .../Apache.Arrow.Flight.Tests.csproj | 2 +- .../Apache.Arrow.IntegrationTest.csproj | 3 +-- .../Apache.Arrow.Tests.csproj | 4 ++-- 16 files changed, 48 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index a38602cc..78939a7c 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ for currently available features. - Arrow specification 1.0.0. (Support for reading 0.11+.) - C# 11 -- .NET Standard 2.0 and .NET 6.0 +- .NET Standard 2.0 and .NET 8.0 - Asynchronous I/O - Uses modern .NET runtime features such as **Span<T>**, **Memory<T>**, **MemoryManager<T>**, and **System.Buffers** primitives for memory allocation, memory storage, and fast serialization. - Uses **Acyclic Visitor Pattern** for array types and arrays to facilitate serialization, record batch traversal, and format growth. diff --git a/examples/FlightAspServerExample/FlightAspServerExample.csproj b/examples/FlightAspServerExample/FlightAspServerExample.csproj index e6d8e3dc..2af606a6 100644 --- a/examples/FlightAspServerExample/FlightAspServerExample.csproj +++ b/examples/FlightAspServerExample/FlightAspServerExample.csproj @@ -20,7 +20,7 @@ - net8.0 + net8.0;net10.0 enable enable 10 diff --git a/examples/FlightClientExample/FlightClientExample.csproj b/examples/FlightClientExample/FlightClientExample.csproj index ce0ec833..f64142f2 100644 --- a/examples/FlightClientExample/FlightClientExample.csproj +++ b/examples/FlightClientExample/FlightClientExample.csproj @@ -21,7 +21,7 @@ Exe - net8.0 + net8.0;net10.0 diff --git a/examples/FluentBuilderExample/FluentBuilderExample.csproj b/examples/FluentBuilderExample/FluentBuilderExample.csproj index b1d76d4d..cb6aeafa 100644 --- a/examples/FluentBuilderExample/FluentBuilderExample.csproj +++ b/examples/FluentBuilderExample/FluentBuilderExample.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net8.0;net10.0 diff --git a/src/Apache.Arrow.Flight.AspNetCore/Apache.Arrow.Flight.AspNetCore.csproj b/src/Apache.Arrow.Flight.AspNetCore/Apache.Arrow.Flight.AspNetCore.csproj index 6ea0e3ce..2734d2c7 100644 --- a/src/Apache.Arrow.Flight.AspNetCore/Apache.Arrow.Flight.AspNetCore.csproj +++ b/src/Apache.Arrow.Flight.AspNetCore/Apache.Arrow.Flight.AspNetCore.csproj @@ -1,7 +1,7 @@ - net6.0 + net8.0;net10.0 diff --git a/src/Apache.Arrow.Flight.Sql/Apache.Arrow.Flight.Sql.csproj b/src/Apache.Arrow.Flight.Sql/Apache.Arrow.Flight.Sql.csproj index e696fc8d..bd897751 100644 --- a/src/Apache.Arrow.Flight.Sql/Apache.Arrow.Flight.Sql.csproj +++ b/src/Apache.Arrow.Flight.Sql/Apache.Arrow.Flight.Sql.csproj @@ -1,6 +1,6 @@ - netstandard2.1 + netstandard2.1 enable diff --git a/src/Apache.Arrow/Apache.Arrow.csproj b/src/Apache.Arrow/Apache.Arrow.csproj index cb5a03b9..a024ad11 100644 --- a/src/Apache.Arrow/Apache.Arrow.csproj +++ b/src/Apache.Arrow/Apache.Arrow.csproj @@ -8,7 +8,7 @@ - netstandard2.0;net6.0;net8.0;net462 + netstandard2.0;net8.0;net10.0;net462 diff --git a/test/Apache.Arrow.Benchmarks/Apache.Arrow.Benchmarks.csproj b/test/Apache.Arrow.Benchmarks/Apache.Arrow.Benchmarks.csproj index 4ef0a011..cf5e9afc 100644 --- a/test/Apache.Arrow.Benchmarks/Apache.Arrow.Benchmarks.csproj +++ b/test/Apache.Arrow.Benchmarks/Apache.Arrow.Benchmarks.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net8.0;net10.0 diff --git a/test/Apache.Arrow.Compression.Tests/Apache.Arrow.Compression.Tests.csproj b/test/Apache.Arrow.Compression.Tests/Apache.Arrow.Compression.Tests.csproj index 1a307af4..b538dc93 100644 --- a/test/Apache.Arrow.Compression.Tests/Apache.Arrow.Compression.Tests.csproj +++ b/test/Apache.Arrow.Compression.Tests/Apache.Arrow.Compression.Tests.csproj @@ -1,7 +1,7 @@ - net8.0 + net8.0;net10.0;net462;net472 false @@ -9,7 +9,19 @@ - + + + + + all + runtime; build; native; contentfiles; analyzers + + + + + all + runtime; build; native; contentfiles; analyzers + diff --git a/test/Apache.Arrow.Compression.Tests/ArrowStreamReaderTests.cs b/test/Apache.Arrow.Compression.Tests/ArrowStreamReaderTests.cs index e432e37e..3ee253ac 100644 --- a/test/Apache.Arrow.Compression.Tests/ArrowStreamReaderTests.cs +++ b/test/Apache.Arrow.Compression.Tests/ArrowStreamReaderTests.cs @@ -102,5 +102,23 @@ private static void VerifyCompressedIpcFileBatch(RecordBatch batch) } } } -} +#if !NET8_0_OR_GREATER + + static class StreamExtensions + { + public static void ReadExactly(this System.IO.Stream stream, byte[] buffer) + { + int length = 0; + + do + { + int read = stream.Read(buffer, length, buffer.Length - length); + if (read == 0) { throw new System.IO.EndOfStreamException(); } + length += read; + } while (length < buffer.Length); + } + } + +#endif +} diff --git a/test/Apache.Arrow.Flight.IntegrationTest/Apache.Arrow.Flight.IntegrationTest.csproj b/test/Apache.Arrow.Flight.IntegrationTest/Apache.Arrow.Flight.IntegrationTest.csproj index 0d844a80..86dc9abd 100644 --- a/test/Apache.Arrow.Flight.IntegrationTest/Apache.Arrow.Flight.IntegrationTest.csproj +++ b/test/Apache.Arrow.Flight.IntegrationTest/Apache.Arrow.Flight.IntegrationTest.csproj @@ -3,13 +3,12 @@ Exe - net8.0 + net8.0;net10.0 Apache.Arrow.Flight.IntegrationTest - diff --git a/test/Apache.Arrow.Flight.Sql.Tests/Apache.Arrow.Flight.Sql.Tests.csproj b/test/Apache.Arrow.Flight.Sql.Tests/Apache.Arrow.Flight.Sql.Tests.csproj index 9e0202d7..a5fbd3aa 100644 --- a/test/Apache.Arrow.Flight.Sql.Tests/Apache.Arrow.Flight.Sql.Tests.csproj +++ b/test/Apache.Arrow.Flight.Sql.Tests/Apache.Arrow.Flight.Sql.Tests.csproj @@ -1,7 +1,7 @@ - net8.0 + net8.0;net10.0 false diff --git a/test/Apache.Arrow.Flight.TestWeb/Apache.Arrow.Flight.TestWeb.csproj b/test/Apache.Arrow.Flight.TestWeb/Apache.Arrow.Flight.TestWeb.csproj index 8940e870..79f8362a 100644 --- a/test/Apache.Arrow.Flight.TestWeb/Apache.Arrow.Flight.TestWeb.csproj +++ b/test/Apache.Arrow.Flight.TestWeb/Apache.Arrow.Flight.TestWeb.csproj @@ -1,7 +1,7 @@ - net8.0 + net8.0;net10.0 diff --git a/test/Apache.Arrow.Flight.Tests/Apache.Arrow.Flight.Tests.csproj b/test/Apache.Arrow.Flight.Tests/Apache.Arrow.Flight.Tests.csproj index 43f07654..5908c17e 100644 --- a/test/Apache.Arrow.Flight.Tests/Apache.Arrow.Flight.Tests.csproj +++ b/test/Apache.Arrow.Flight.Tests/Apache.Arrow.Flight.Tests.csproj @@ -1,7 +1,7 @@ - net8.0 + net8.0;net10.0 false diff --git a/test/Apache.Arrow.IntegrationTest/Apache.Arrow.IntegrationTest.csproj b/test/Apache.Arrow.IntegrationTest/Apache.Arrow.IntegrationTest.csproj index dfd16d60..24b05d8a 100644 --- a/test/Apache.Arrow.IntegrationTest/Apache.Arrow.IntegrationTest.csproj +++ b/test/Apache.Arrow.IntegrationTest/Apache.Arrow.IntegrationTest.csproj @@ -4,12 +4,11 @@ Exe true - net8.0 + net8.0;net10.0 - diff --git a/test/Apache.Arrow.Tests/Apache.Arrow.Tests.csproj b/test/Apache.Arrow.Tests/Apache.Arrow.Tests.csproj index 14ef96dd..92982648 100644 --- a/test/Apache.Arrow.Tests/Apache.Arrow.Tests.csproj +++ b/test/Apache.Arrow.Tests/Apache.Arrow.Tests.csproj @@ -9,10 +9,10 @@ - net8.0;net472;net462 + net8.0;net10.0;net472;net462 - net8.0 + net8.0;net10.0 From 64baa5726498cf55875f2583b5a4e10e7db17a9f Mon Sep 17 00:00:00 2001 From: Curt Hagenlocher Date: Wed, 26 Nov 2025 09:49:30 -0800 Subject: [PATCH 2/6] Fix typo --- .../Apache.Arrow.Flight.Sql.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Apache.Arrow.Flight.Sql.Tests/Apache.Arrow.Flight.Sql.Tests.csproj b/test/Apache.Arrow.Flight.Sql.Tests/Apache.Arrow.Flight.Sql.Tests.csproj index a5fbd3aa..748b2117 100644 --- a/test/Apache.Arrow.Flight.Sql.Tests/Apache.Arrow.Flight.Sql.Tests.csproj +++ b/test/Apache.Arrow.Flight.Sql.Tests/Apache.Arrow.Flight.Sql.Tests.csproj @@ -1,7 +1,7 @@ - net8.0;net10.0 + net8.0;net10.0 false From 75d852dba1f64d5626f93dd645ce44642ad7cb90 Mon Sep 17 00:00:00 2001 From: Curt Hagenlocher Date: Wed, 26 Nov 2025 09:52:13 -0800 Subject: [PATCH 3/6] Fix non-Windows build break --- .../Apache.Arrow.Compression.Tests.csproj | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/test/Apache.Arrow.Compression.Tests/Apache.Arrow.Compression.Tests.csproj b/test/Apache.Arrow.Compression.Tests/Apache.Arrow.Compression.Tests.csproj index b538dc93..b0d6861c 100644 --- a/test/Apache.Arrow.Compression.Tests/Apache.Arrow.Compression.Tests.csproj +++ b/test/Apache.Arrow.Compression.Tests/Apache.Arrow.Compression.Tests.csproj @@ -1,11 +1,16 @@ - + - net8.0;net10.0;net462;net472 - false + + net8.0;net10.0;net472;net462 + + + net8.0;net10.0 + + From 3e03348614f32a95cd6a678a4309f1c4d20c4879 Mon Sep 17 00:00:00 2001 From: Curt Hagenlocher Date: Wed, 26 Nov 2025 09:59:34 -0800 Subject: [PATCH 4/6] Install .NET 10 and tweak documentation --- .github/workflows/rc.yaml | 1 + .github/workflows/test.yaml | 1 + README.md | 2 +- docs/index.md | 2 +- 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/rc.yaml b/.github/workflows/rc.yaml index 35e0503a..68f0f08a 100644 --- a/.github/workflows/rc.yaml +++ b/.github/workflows/rc.yaml @@ -139,6 +139,7 @@ jobs: matrix: dotnet-version: - 8.0.x + - 10.0.x runs-on: - macos-latest - ubuntu-latest diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index c2cbfbca..ce6e3439 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -62,6 +62,7 @@ jobs: matrix: dotnet-version: - 8.0.x + - 10.0.x runs-on: - macos-latest - ubuntu-latest diff --git a/README.md b/README.md index 78939a7c..0c0eec89 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ for currently available features. - Arrow specification 1.0.0. (Support for reading 0.11+.) - C# 11 -- .NET Standard 2.0 and .NET 8.0 +- .NET Standard 2.0 and .NET 8.0+ - Asynchronous I/O - Uses modern .NET runtime features such as **Span<T>**, **Memory<T>**, **MemoryManager<T>**, and **System.Buffers** primitives for memory allocation, memory storage, and fast serialization. - Uses **Acyclic Visitor Pattern** for array types and arrays to facilitate serialization, record batch traversal, and format growth. diff --git a/docs/index.md b/docs/index.md index 732e339f..0a61a9e2 100644 --- a/docs/index.md +++ b/docs/index.md @@ -31,7 +31,7 @@ for currently available features. - Arrow specification 1.0.0. (Support for reading 0.11+.) - C# 11 -- .NET Standard 2.0, .NET 6.0, .NET 8.0 and .NET Framework 4.6.2 +- .NET Standard 2.0, .NET 8.0+ and .NET Framework 4.6.2 - Asynchronous I/O - Uses modern .NET runtime features such as **Span<T>**, **Memory<T>**, **MemoryManager<T>**, and **System.Buffers** primitives for memory allocation, memory storage, and fast serialization. - Uses **Acyclic Visitor Pattern** for array types and arrays to facilitate serialization, record batch traversal, and format growth. From 5b1b05884b0054b01d3517fde7ef60a23828f55c Mon Sep 17 00:00:00 2001 From: Curt Hagenlocher Date: Wed, 26 Nov 2025 10:06:56 -0800 Subject: [PATCH 5/6] Try a newer setup-dotnet action --- .github/workflows/rc.yaml | 2 +- .github/workflows/test.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/rc.yaml b/.github/workflows/rc.yaml index 68f0f08a..f7b7cdac 100644 --- a/.github/workflows/rc.yaml +++ b/.github/workflows/rc.yaml @@ -151,7 +151,7 @@ jobs: - name: Checkout uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Setup .NET - uses: actions/setup-dotnet@d4c94342e560b34958eacfc5d055d21461ed1c5d # v5.0.0 + uses: actions/setup-dotnet@2016bd2012dba4e32de620c46fe006a3ac9f0602 # v5.0.1 with: dotnet-version: ${{ matrix.dotnet-version }} - name: Setup Python diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index ce6e3439..18bd9966 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -69,7 +69,7 @@ jobs: - windows-latest steps: - name: Setup .NET - uses: actions/setup-dotnet@d4c94342e560b34958eacfc5d055d21461ed1c5d # v5.0.0 + uses: actions/setup-dotnet@2016bd2012dba4e32de620c46fe006a3ac9f0602 # v5.0.1 with: dotnet-version: ${{ matrix.dotnet-version }} - name: Setup Python From f457878f8b61a61bdcaf26d30dea228c8201d088 Mon Sep 17 00:00:00 2001 From: Curt Hagenlocher Date: Wed, 26 Nov 2025 10:10:56 -0800 Subject: [PATCH 6/6] Revert attempts to install the .NET 10 SDK --- .github/workflows/rc.yaml | 3 +-- .github/workflows/test.yaml | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/rc.yaml b/.github/workflows/rc.yaml index f7b7cdac..35e0503a 100644 --- a/.github/workflows/rc.yaml +++ b/.github/workflows/rc.yaml @@ -139,7 +139,6 @@ jobs: matrix: dotnet-version: - 8.0.x - - 10.0.x runs-on: - macos-latest - ubuntu-latest @@ -151,7 +150,7 @@ jobs: - name: Checkout uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Setup .NET - uses: actions/setup-dotnet@2016bd2012dba4e32de620c46fe006a3ac9f0602 # v5.0.1 + uses: actions/setup-dotnet@d4c94342e560b34958eacfc5d055d21461ed1c5d # v5.0.0 with: dotnet-version: ${{ matrix.dotnet-version }} - name: Setup Python diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 18bd9966..c2cbfbca 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -62,14 +62,13 @@ jobs: matrix: dotnet-version: - 8.0.x - - 10.0.x runs-on: - macos-latest - ubuntu-latest - windows-latest steps: - name: Setup .NET - uses: actions/setup-dotnet@2016bd2012dba4e32de620c46fe006a3ac9f0602 # v5.0.1 + uses: actions/setup-dotnet@d4c94342e560b34958eacfc5d055d21461ed1c5d # v5.0.0 with: dotnet-version: ${{ matrix.dotnet-version }} - name: Setup Python