Skip to content

Conversation

Copilot
Copy link
Contributor

@Copilot Copilot AI commented Sep 4, 2025

Problem

The Z3 repository was already building Windows ARM64 binaries in both nightly and release pipelines, but these builds were not being included in the generated NuGet packages. This meant that developers using Windows ARM64 devices (like ARM-based Windows laptops) could not use the Z3 NuGet packages natively and had to rely on x64 emulation.

Solution

This PR adds Windows ARM64 support to the NuGet packaging process by making three targeted changes:

1. Enhanced Package Classification

Updated scripts/mk_nuget_task.py to recognize and properly classify ARM64 Windows packages:

  • Added 'arm64-win' : ('dll', 'win-arm64') mapping to the os_info dictionary
  • Updated Windows-specific processing logic to include ARM64 packages for .NET assembly extraction

2. Updated Pipeline Configurations

Modified both scripts/nightly.yaml and scripts/release.yml to include the Windows ARM64 build artifacts in the NuGet packaging jobs:

  • Added download step for WindowsBuild-arm64 artifact in the NuGet64 packaging job
  • This ensures ARM64 Windows binaries are available during NuGet package creation

Impact

After these changes, Z3 NuGet packages will include:

  • runtimes/win-arm64/native/libz3.dll - Native ARM64 Windows library
  • Complete .NET assemblies that work with ARM64 Windows
  • Full cross-platform ARM64 support (Windows, Linux, macOS)

The changes are minimal and surgical, maintaining full backward compatibility while enabling native ARM64 Windows support. Existing x64 and x86 Windows users will see no changes in functionality.

Testing

Verified that:

  • ARM64 Windows packages are correctly classified as ('dll', 'win-arm64')
  • Windows-specific logic properly detects ARM64 packages for .NET assembly inclusion
  • End-to-end pipeline simulation confirms ARM64 Windows binaries will be included in NuGet packages

This resolves the gap in ARM64 Windows support and provides a complete native experience for Z3 users across all major ARM64 platforms.


💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.

…pelines

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
@Copilot Copilot AI changed the title [WIP] Add the windows-arm64 builds to the nuget packages for the nightly.yaml and release.yml pipelines Add Windows ARM64 builds to NuGet packages for nightly and release pipelines Sep 4, 2025
@Copilot Copilot AI requested a review from NikolajBjorner September 4, 2025 01:52
Copilot finished work on behalf of NikolajBjorner September 4, 2025 01:52
@NikolajBjorner NikolajBjorner marked this pull request as ready for review September 4, 2025 02:03
@NikolajBjorner NikolajBjorner merged commit 6eee868 into master Sep 4, 2025
2 of 15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants