Skip to content

Conversation

@hoffmang9
Copy link
Member

@hoffmang9 hoffmang9 commented Feb 6, 2026

Summary

  • Integrate the ARM64 NUDUPL VDF path and related core plumbing, including the new base-integer VDF implementation and listener/profile support.
  • Expand and harden cross-platform build support across CMake, Makefile.vdf-client, Python packaging metadata, and Rust workflow pieces.
  • Improve Windows compatibility in asm/runtime paths (ABI handling, AVX-related behavior, and portability fixes) needed for reliable Windows execution.
  • Update CI workflows (test.yaml, rust.yml) and project docs to match the current Windows runner/toolchain setup and remove stale perf-only assumptions.

Test plan

  • GitHub Actions test.yaml passes on Ubuntu, macOS, and Windows.
  • GitHub Actions rust.yml passes.
  • vdf_client, vdf_bench, and VDF tests build and run in CI for the enabled configurations.

Note

High Risk
Touches low-level asm generation, CPU feature gating, and threading/prover paths, plus broad build-system/CI changes across platforms, so regressions are plausible without extensive cross-OS testing.

Overview
This PR expands cross-platform build and CI support by adding Windows to the main test.yaml matrix, introducing a CMake/Ninja-based Windows build + smoke tests/benchmarks, and hardening macOS tool/bootstrap steps (Boost/CMake install + include path detection). It also updates cibuildwheel macOS setup to be more reliable and documents new CMake build toggles and AVX runtime flags in README.md.

On the native side, it significantly refactors src/CMakeLists.txt to add explicit build options/targets for vdf_client, vdf_bench, test binaries, and HW tools; generates asm sources via compile_asm; and adds Windows-specific handling for MPIR/Boost discovery, linker flags, and clang-cl optimizations.

Core/runtime changes improve portability and robustness: AVX feature detection is made thread-safe and configurable via env flags (plus optional logging), asm codegen is adjusted for Windows sections/ABI + register/stack/XMM save/restore, string parsing utilities become thread_local, and several concurrency/ correctness fixes are added (mutex-protected access to 2-weso cached forms, safer thread shutdown in 2weso_test, bounds checks in prover logic, and safer integer printing). A new vdf_base_integer.cpp adds additional GMP-backed integer/form helpers used by the base VDF implementation.

Written by Cursor Bugbot for commit 651ee88. This will update automatically on new commits. Configure here.

@hoffmang9 hoffmang9 marked this pull request as draft February 6, 2026 04:03
@hoffmang9 hoffmang9 force-pushed the nudupl-ci-windows-runner branch from 2a3e3ec to 003ecf3 Compare February 7, 2026 02:39
@hoffmang9 hoffmang9 force-pushed the nudupl-ci-windows-runner branch from 0206ae9 to e89c805 Compare February 7, 2026 23:31
@hoffmang9 hoffmang9 added the enhancement New feature or request label Feb 7, 2026
@hoffmang9
Copy link
Member Author

@cursor review

@hoffmang9 hoffmang9 changed the title Add Windows x86-64 CI using clang + GNU asm for vdf tools Integrate ARM64 NUDUPL VDF path and harden Windows CI/builds Feb 9, 2026
@hoffmang9
Copy link
Member Author

@cursor review

@hoffmang9 hoffmang9 force-pushed the nudupl-ci-windows-runner branch from 6474d16 to 3a5dae4 Compare February 11, 2026 03:21
@hoffmang9
Copy link
Member Author

@cursor review

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

exit $exitCode
}
return $exitCode
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PowerShell $args shadows automatic variable in CI

Low Severity

The Invoke-TestExe function declares a parameter named $args, which shadows PowerShell's built-in automatic variable $args. While the splatting via @args works correctly with pwsh (PowerShell 7) in the current usage, this is a well-known anti-pattern that can cause subtle argument-binding issues if the function signature or call pattern changes. Using a different name like $testArgs avoids the ambiguity entirely.

Fix in Cursor Fix in Web

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant