Skip to content

Use the ArrayPool API in .NET Standard 2.1 or later to reduce the creation of LOH objects. #1239

Use the ArrayPool API in .NET Standard 2.1 or later to reduce the creation of LOH objects.

Use the ArrayPool API in .NET Standard 2.1 or later to reduce the creation of LOH objects. #1239

Workflow file for this run

on:
push:
branches:
- main
pull_request:
branches:
- main
name: main
jobs:
linux:
name: 'Linux (Q8/Q16/Q16-HDRI, x64)'
container:
image: mcr.microsoft.com/dotnet/sdk:8.0
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: build/linux-x64/install.dependencies.sh
- uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.x
- name: Install Magick.Native
run: 'build/shared/install.Magick.Native.sh "dlemstra" "${{ secrets.GITHUB_TOKEN }}" linux x64'
- name: Build
run: build/shared/build.Magick.NET.sh
- name: Test
run: build/shared/test.Magick.NET.sh
- name: Build OpenMP
run: build/shared/build.Magick.NET.sh OpenMP
- name: Test OpenMP
run: build/shared/test.Magick.NET.sh OpenMP
linux_musl:
name: 'Linux musl (Q8/Q16/Q16-HDRI, x64)'
container:
image: mcr.microsoft.com/dotnet/sdk:8.0-alpine
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: build/linux-musl-x64/install.dependencies.sh
- uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.x
- name: Install Magick.Native
run: 'build/shared/install.Magick.Native.sh "dlemstra" "${{ secrets.GITHUB_TOKEN }}" linux-musl x64'
- name: Build
run: build/shared/build.Magick.NET.sh
- name: Test
run: build/shared/test.Magick.NET.sh
- name: Build OpenMP
run: build/shared/build.Magick.NET.sh OpenMP
- name: Test OpenMP
run: build/shared/test.Magick.NET.sh OpenMP
linux_arm64:
name: 'Linux (Q8/Q16/Q16-HDRI, arm64)'
runs-on: ubuntu-24.04-arm
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: build/linux-arm64/install.dependencies.sh
- uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.x
- name: Install Magick.Native
run: 'build/shared/install.Magick.Native.sh "dlemstra" "${{ secrets.GITHUB_TOKEN }}" linux arm64'
- name: Build
run: build/shared/build.Magick.NET.sh
- name: Test
run: build/shared/test.Magick.NET.sh
- name: Build OpenMP
run: build/shared/build.Magick.NET.sh OpenMP
- name: Test OpenMP
run: build/shared/test.Magick.NET.sh OpenMP
macos:
name: 'MacOS (Q8/Q16/Q16-HDRI)'
runs-on: macos-13
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: build/macos-x64/install.dependencies.sh
- uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.x
- name: Install Magick.Native
run: 'build/shared/install.Magick.Native.sh "dlemstra" "${{ secrets.GITHUB_TOKEN }}" macos x64'
- name: Build
run: build/shared/build.Magick.NET.sh
- name: Test
run: build/shared/test.Magick.NET.sh
macos_arm64:
name: 'MacOS (Q8/Q16/Q16-HDRI, arm64)'
runs-on: macos-14
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: build/macos-arm64/install.dependencies.sh
- uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.x
- name: Install Magick.Native
run: 'build/shared/install.Magick.Native.sh "dlemstra" "${{ secrets.GITHUB_TOKEN }}" macos arm64'
- name: Build
run: build/shared/build.Magick.NET.sh
- name: Test
run: build/shared/test.Magick.NET.sh
windows:
name: 'Windows (Q8/Q16/Q16-HDRI)'
runs-on: windows-2022
permissions:
id-token: write
contents: read
packages: read
strategy:
fail-fast: false
matrix:
quantumName: [Q8, Q8-OpenMP, Q16, Q16-OpenMP, Q16-HDRI, Q16-HDRI-OpenMP]
platformName: [x86, x64, Any CPU]
exclude:
- quantumName: Q8-OpenMP
platformName: x86
- quantumName: Q16-OpenMP
platformName: x86
- quantumName: Q16-HDRI-OpenMP
platformName: x86
- quantumName: Q8-OpenMP
platformName: Any CPU
- quantumName: Q16-OpenMP
platformName: Any CPU
- quantumName: Q16-HDRI-OpenMP
platformName: Any CPU
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-tags: true
- name: Install dependencies
run: ./install.dependencies.cmd
working-directory: build/windows
- name: Create nuget.config
run: './create-nuget-config.cmd "dlemstra" "${{ secrets.GITHUB_TOKEN }}"'
working-directory: src/Magick.Native
- name: Install Magick.Native
run: ./install.cmd
working-directory: src/Magick.Native
- name: Build Magick.NET (Test)
run: './build.Magick.NET.cmd ${{ matrix.quantumName }} "${{ matrix.platformName }}" Test'
working-directory: build/windows
- name: Test Magick.NET
run: './test.Magick.NET.cmd ${{ matrix.quantumName }} "${{ matrix.platformName }}"'
working-directory: build/windows
- name: Build Magick.NET (Release)
run: './build.Magick.NET.cmd ${{ matrix.quantumName }} "${{ matrix.platformName }}" Release'
working-directory: build/windows
- name: Set NuGet version
run: ./set.version.ps1
working-directory: publish
- name: Create NuGet package
run: './publish.cmd ${{ matrix.quantumName }} "${{ matrix.platformName }}"'
working-directory: publish
- name: Azure CLI login with federated credential
if: github.event_name != 'pull_request'
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Sign NuGet package
if: ${{ github.event_name != 'pull_request' }}
run: sign code trusted-signing *.nupkg `
--trusted-signing-account ImageMagick `
--trusted-signing-certificate-profile ImageMagick `
--trusted-signing-endpoint https://eus.codesigning.azure.net `
--verbosity information
working-directory: publish/output
- name: Upload library
uses: actions/upload-artifact@v4
with:
name: 'Magick.NET-${{ matrix.quantumName }}-${{ matrix.platformName }}'
path: publish/output
windows_arm64:
name: 'Windows (Q8/Q16/Q16-HDRI, arm64)'
#runs-on: windows-11-arm
runs-on: windows-2022
permissions:
id-token: write
contents: read
packages: read
strategy:
fail-fast: false
matrix:
quantumName: [Q8, Q8-OpenMP, Q16, Q16-OpenMP, Q16-HDRI, Q16-HDRI-OpenMP]
platformName: [arm64]
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-tags: true
- name: Install dependencies
run: ./install.dependencies.cmd
working-directory: build/windows
- name: Create nuget.config
run: './create-nuget-config.cmd "dlemstra" "${{ secrets.GITHUB_TOKEN }}"'
working-directory: src/Magick.Native
- name: Install Magick.Native
run: ./install.cmd
working-directory: src/Magick.Native
# - name: Build Magick.NET (Test)
# run: './build.Magick.NET.cmd ${{ matrix.quantumName }} "${{ matrix.platformName }}" Test'
# working-directory: build/windows
# - name: Test Magick.NET
# run: './test.Magick.NET.cmd ${{ matrix.quantumName }} "${{ matrix.platformName }}"'
# working-directory: build/windows
- name: Build Magick.NET (Release)
run: './build.Magick.NET.cmd ${{ matrix.quantumName }} "${{ matrix.platformName }}" Release'
working-directory: build/windows
- name: Set NuGet version
run: ./set.version.ps1
working-directory: publish
- name: Create NuGet package
run: './publish.cmd ${{ matrix.quantumName }} "${{ matrix.platformName }}"'
working-directory: publish
- name: Azure CLI login with federated credential
if: github.event_name != 'pull_request'
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Sign NuGet package
if: ${{ github.event_name != 'pull_request' }}
run: sign code trusted-signing *.nupkg `
--trusted-signing-account ImageMagick `
--trusted-signing-certificate-profile ImageMagick `
--trusted-signing-endpoint https://eus.codesigning.azure.net `
--verbosity information
working-directory: publish/output
- name: Upload library
uses: actions/upload-artifact@v4
with:
name: 'Magick.NET-${{ matrix.quantumName }}-${{ matrix.platformName }}'
path: publish/output
libraries:
name: Library
runs-on: windows-2022
permissions:
id-token: write
contents: read
packages: read
strategy:
fail-fast: false
matrix:
libraryName: [Core, AvaloniaMediaImaging, SystemDrawing, SystemWindowsMedia]
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-tags: true
- name: Install dependencies
run: ./install.dependencies.cmd
working-directory: build/windows
- name: Create nuget.config
run: './create-nuget-config.cmd "dlemstra" "${{ secrets.GITHUB_TOKEN }}"'
working-directory: src/Magick.Native
- name: Install Magick.Native
run: ./install.cmd
working-directory: src/Magick.Native
- name: 'Build Magick.NET.${{ matrix.libraryName }} (Release)'
run: './build.Magick.NET.cmd "Q8" "Any CPU" Release'
working-directory: build/windows
- name: Set NuGet version
run: ./set.version.ps1
working-directory: publish
- name: Create NuGet package
run: './publish.library.cmd "Magick.NET.${{ matrix.libraryName }}"'
working-directory: publish
- name: Azure CLI login with federated credential
if: github.event_name != 'pull_request'
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Sign NuGet package
if: ${{ github.event_name != 'pull_request' }}
run: sign code trusted-signing *.nupkg `
--trusted-signing-account ImageMagick `
--trusted-signing-certificate-profile ImageMagick `
--trusted-signing-endpoint https://eus.codesigning.azure.net `
--verbosity information
working-directory: publish/output
- name: Upload library
uses: actions/upload-artifact@v4
with:
name: 'Magick.NET.${{ matrix.libraryName }}'
path: publish/output