diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml
index b375574018..6f9dc1d42b 100644
--- a/.github/workflows/build-and-test.yml
+++ b/.github/workflows/build-and-test.yml
@@ -19,44 +19,29 @@ jobs:
- ${{ contains(github.event.pull_request.labels.*.name, 'arch:arm32') || contains(github.event.pull_request.labels.*.name, 'arch:arm64') }}
options:
- os: ubuntu-latest
- framework: net7.0
- sdk: 7.0.x
+ framework: net8.0
+ sdk: 8.0.x
sdk-preview: true
runtime: -x64
codecov: false
- os: macos-latest
- framework: net7.0
- sdk: 7.0.x
+ framework: net8.0
+ sdk: 8.0.x
sdk-preview: true
runtime: -x64
codecov: false
- os: windows-latest
- framework: net7.0
- sdk: 7.0.x
+ framework: net8.0
+ sdk: 8.0.x
sdk-preview: true
runtime: -x64
codecov: false
- os: buildjet-4vcpu-ubuntu-2204-arm
- framework: net7.0
- sdk: 7.0.x
+ framework: net8.0
+ sdk: 8.0.x
sdk-preview: true
runtime: -x64
codecov: false
- - os: ubuntu-latest
- framework: net6.0
- sdk: 6.0.x
- runtime: -x64
- codecov: false
- - os: macos-latest
- framework: net6.0
- sdk: 6.0.x
- runtime: -x64
- codecov: false
- - os: windows-latest
- framework: net6.0
- sdk: 6.0.x
- runtime: -x64
- codecov: false
exclude:
- isARM: false
options:
diff --git a/.github/workflows/code-coverage.yml b/.github/workflows/code-coverage.yml
index e551afbd6d..bbaea3a61b 100644
--- a/.github/workflows/code-coverage.yml
+++ b/.github/workflows/code-coverage.yml
@@ -10,7 +10,7 @@ jobs:
matrix:
options:
- os: ubuntu-latest
- framework: net6.0
+ framework: net8.0
runtime: -x64
codecov: true
diff --git a/README.md b/README.md
index fa51d57cdf..cf58b6b14b 100644
--- a/README.md
+++ b/README.md
@@ -21,7 +21,7 @@ Designed to simplify image processing, ImageSharp brings you an incredibly power
ImageSharp is designed from the ground up to be flexible and extensible. The library provides API endpoints for common image processing operations and the building blocks to allow for the development of additional operations.
-Built against [.NET 6](https://docs.microsoft.com/en-us/dotnet/standard/net-standard), ImageSharp can be used in device, cloud, and embedded/IoT scenarios.
+Built against [.NET 8](https://docs.microsoft.com/en-us/dotnet/standard/net-standard), ImageSharp can be used in device, cloud, and embedded/IoT scenarios.
## License
@@ -64,7 +64,7 @@ If you prefer, you can compile ImageSharp yourself (please do and help!)
- Using [Visual Studio 2022](https://visualstudio.microsoft.com/vs/)
- Make sure you have the latest version installed
- - Make sure you have [the .NET 7 SDK](https://www.microsoft.com/net/core#windows) installed
+ - Make sure you have [the .NET 8 SDK](https://www.microsoft.com/net/core#windows) installed
Alternatively, you can work from command line and/or with a lightweight editor on **both Linux/Unix and Windows**:
diff --git a/src/ImageSharp/Common/Helpers/Numerics.cs b/src/ImageSharp/Common/Helpers/Numerics.cs
index aba3c0abdc..293997c4de 100644
--- a/src/ImageSharp/Common/Helpers/Numerics.cs
+++ b/src/ImageSharp/Common/Helpers/Numerics.cs
@@ -908,25 +908,6 @@ internal static class Numerics
return Sse2.ConvertToInt32(vsum);
}
- ///
- /// Reduces elements of the vector into one sum.
- ///
- /// The accumulator to reduce.
- /// The sum of all elements.
- [MethodImpl(InliningOptions.ShortMethod)]
- public static int ReduceSumArm(Vector128 accumulator)
- {
- if (AdvSimd.Arm64.IsSupported)
- {
- Vector64 sum = AdvSimd.Arm64.AddAcross(accumulator);
- return (int)AdvSimd.Extract(sum, 0);
- }
-
- Vector128 sum2 = AdvSimd.AddPairwiseWidening(accumulator);
- Vector64 sum3 = AdvSimd.Add(sum2.GetLower().AsUInt32(), sum2.GetUpper().AsUInt32());
- return (int)AdvSimd.Extract(sum3, 0);
- }
-
///
/// Reduces even elements of the vector into one sum.
///
diff --git a/src/ImageSharp/Diagnostics/CodeAnalysis/UnscopedRefAttribute.cs b/src/ImageSharp/Diagnostics/CodeAnalysis/UnscopedRefAttribute.cs
deleted file mode 100644
index dc2c7bd196..0000000000
--- a/src/ImageSharp/Diagnostics/CodeAnalysis/UnscopedRefAttribute.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) Six Labors.
-// Licensed under the Six Labors Split License.
-#if NET6_0
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-namespace System.Diagnostics.CodeAnalysis
-{
- ///
- /// Used to indicate a byref escapes and is not scoped.
- ///
- ///
- ///
- /// There are several cases where the C# compiler treats a as implicitly
- /// - where the compiler does not allow the to escape the method.
- ///
- ///
- /// For example:
- ///
- /// - for instance methods.
- /// - parameters that refer to types.
- /// - parameters.
- ///
- ///
- ///
- /// This attribute is used in those instances where the should be allowed to escape.
- ///
- ///
- /// Applying this attribute, in any form, has impact on consumers of the applicable API. It is necessary for
- /// API authors to understand the lifetime implications of applying this attribute and how it may impact their users.
- ///
- ///
- [global::System.AttributeUsage(
- global::System.AttributeTargets.Method |
- global::System.AttributeTargets.Property |
- global::System.AttributeTargets.Parameter,
- AllowMultiple = false,
- Inherited = false)]
- internal sealed class UnscopedRefAttribute : global::System.Attribute
- {
- }
-}
-#endif
diff --git a/src/ImageSharp/Formats/Webp/Lossy/LossyUtils.cs b/src/ImageSharp/Formats/Webp/Lossy/LossyUtils.cs
index de3f1586af..aae4181ce0 100644
--- a/src/ImageSharp/Formats/Webp/Lossy/LossyUtils.cs
+++ b/src/ImageSharp/Formats/Webp/Lossy/LossyUtils.cs
@@ -230,11 +230,7 @@ internal static class LossyUtils
}
}
-#if NET7_0_OR_GREATER
return (int)Vector128.Sum(sum);
-#else
- return Numerics.ReduceSumArm(sum);
-#endif
}
[MethodImpl(InliningOptions.ShortMethod)]
@@ -252,11 +248,7 @@ internal static class LossyUtils
}
}
-#if NET7_0_OR_GREATER
return (int)Vector128.Sum(sum);
-#else
- return Numerics.ReduceSumArm(sum);
-#endif
}
[MethodImpl(InliningOptions.ShortMethod)]
@@ -275,11 +267,8 @@ internal static class LossyUtils
Vector128 sum2 = AdvSimd.AddPairwiseWidening(prod2);
Vector128 sum = AdvSimd.Add(sum1, sum2);
-#if NET7_0_OR_GREATER
+
return (int)Vector128.Sum(sum);
-#else
- return Numerics.ReduceSumArm(sum);
-#endif
}
// Load all 4x4 pixels into a single Vector128
diff --git a/src/ImageSharp/ImageSharp.csproj b/src/ImageSharp/ImageSharp.csproj
index b08c27c41b..12da6cf532 100644
--- a/src/ImageSharp/ImageSharp.csproj
+++ b/src/ImageSharp/ImageSharp.csproj
@@ -29,13 +29,13 @@
- net7.0;net6.0
+ net8.0
true
- net6.0
+ net8.0
true
diff --git a/tests/ImageSharp.Benchmarks/ImageSharp.Benchmarks.csproj b/tests/ImageSharp.Benchmarks/ImageSharp.Benchmarks.csproj
index 0ba2f4b949..22a2777a6a 100644
--- a/tests/ImageSharp.Benchmarks/ImageSharp.Benchmarks.csproj
+++ b/tests/ImageSharp.Benchmarks/ImageSharp.Benchmarks.csproj
@@ -11,7 +11,7 @@
false
Debug;Release
-
+
@@ -23,12 +23,12 @@
- net7.0;net6.0
+ net8.0
- net6.0
+ net8.0
diff --git a/tests/ImageSharp.Tests.ProfilingSandbox/ImageSharp.Tests.ProfilingSandbox.csproj b/tests/ImageSharp.Tests.ProfilingSandbox/ImageSharp.Tests.ProfilingSandbox.csproj
index 492ce36b81..dfa01b8be1 100644
--- a/tests/ImageSharp.Tests.ProfilingSandbox/ImageSharp.Tests.ProfilingSandbox.csproj
+++ b/tests/ImageSharp.Tests.ProfilingSandbox/ImageSharp.Tests.ProfilingSandbox.csproj
@@ -19,12 +19,12 @@
- net7.0;net6.0
+ net8.0
- net6.0
+ net8.0
diff --git a/tests/ImageSharp.Tests/ImageSharp.Tests.csproj b/tests/ImageSharp.Tests/ImageSharp.Tests.csproj
index dc081e0bea..491c4da872 100644
--- a/tests/ImageSharp.Tests/ImageSharp.Tests.csproj
+++ b/tests/ImageSharp.Tests/ImageSharp.Tests.csproj
@@ -12,12 +12,12 @@
- net7.0;net6.0
+ net8.0
- net6.0
+ net8.0