Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 2 additions & 12 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,40 +48,34 @@ jobs:
target: i686-pc-windows-msvc
runner: windows-2025-vs2026
artifact: rd_pipe-x86
toolchain: stable
- name: x64
target: x86_64-pc-windows-msvc
runner: windows-2025-vs2026
artifact: rd_pipe-x64
toolchain: stable
- name: arm64
target: aarch64-pc-windows-msvc
runner: windows-11-arm
artifact: rd_pipe-arm64
toolchain: beta
- name: arm64ec
target: arm64ec-pc-windows-msvc
runner: windows-11-arm
artifact: rd_pipe-arm64ec
toolchain: beta
- name: arm64x-on-arm64
target: aarch64-pc-windows-msvc
runner: windows-11-arm
artifact: rd_pipe-arm64x
toolchain: beta
- name: arm64x-on-arm64ec
target: arm64ec-pc-windows-msvc
runner: windows-11-arm
artifact: rd_pipe-arm64x
toolchain: beta

steps:
- uses: actions/checkout@v7

- name: Install rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.toolchain }}
toolchain: stable
target: ${{ matrix.target }}

- uses: Swatinem/rust-cache@v2
Expand Down Expand Up @@ -124,24 +118,20 @@ jobs:
include:
- target: i686-pc-windows-msvc
suffix: x86
toolchain: stable
- target: x86_64-pc-windows-msvc
suffix: x64
toolchain: stable
- target: aarch64-pc-windows-msvc
suffix: arm64
toolchain: beta
- target: arm64ec-pc-windows-msvc
suffix: arm64ec
toolchain: beta

steps:
- uses: actions/checkout@v7

- name: Install rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.toolchain }}
toolchain: stable
target: ${{ matrix.target }}

- uses: Swatinem/rust-cache@v2
Expand Down
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Changed

- The arm64, arm64ec and arm64x CI targets build on `stable` instead of
`beta`, now that the arm64ec TLS-destructors→FLS fix
(rust-lang/rust#148799) has reached stable in Rust 1.98.0. Every CI
target is on the same toolchain again, so the per-target `toolchain`
matrix key is gone.
Comment thread
LeonarddeR marked this conversation as resolved.

## [0.9.0] - 2026-07-24

### Changed
Expand Down
4 changes: 2 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ The `aarch64` + `arm64ec` staticlibs are linked into one ARM64X (hybrid) DLL by

One hard requirement:

- **Toolchain must be at least `beta` (was `nightly`).** `arm64ec` staticlibs built on a toolchain *without* the TLS-destructors→FLS fix (rust-lang/rust#148799) crash at `0xc0000096` when an ARM64X DLL is loaded from an x64 process on ARM64 Windows (rust-lang/rust#145154). The fix first landed in nightly `1.98.0` (2026-06-03) and, as of 2026-07-17, is in `beta` (`1.98.0-beta.4`, verified: beta contains merge `9c963eec`; arm64ec EC-view tests pass 15/15 on a `windows-11-arm` host). CI therefore uses `beta`. Once `1.98.0` reaches stable the arm64 path can move to `stable`. The `Test (arm64x-on-arm64ec)` job is the gate; it only runs on the `windows-11-arm` runner.
- **Toolchain must be at least `1.98.0` (was `beta`, before that `nightly`).** `arm64ec` staticlibs built on a toolchain *without* the TLS-destructors→FLS fix (rust-lang/rust#148799) crash at `0xc0000096` when an ARM64X DLL is loaded from an x64 process on ARM64 Windows (rust-lang/rust#145154). The fix landed in nightly `1.98.0` (2026-06-03) and rode the train through `beta` (`1.98.0-beta.4`, verified 2026-07-17: beta contains merge `9c963eec`; arm64ec EC-view tests pass 15/15 on a `windows-11-arm` host) into stable `1.98.0`. CI therefore uses `stable` for every target. The `Test (arm64x-on-arm64ec)` job is the gate; it only runs on the `windows-11-arm` runner.
Comment thread
LeonarddeR marked this conversation as resolved.

Link recipe (dynamic CRT, MSVC link.exe):
- Both per-arch staticlibs as explicit inputs (`rd_pipe.lib` arm64 + arm64ec)
Expand All @@ -41,7 +41,7 @@ Link recipe (dynamic CRT, MSVC link.exe):
- `/force:multiple` resolves duplicate `DllMain` (arm64 + arm64ec each define it, plus msvcrt's stub); msvcrt's stub wins but correctly chains through `_pRawDllMain` → user DllMain
- No SDK version constraint (both 26100 and 28000 work)

The script can be exercised on a Windows ARM64 host: build both staticlibs+DLLs (`cargo +beta build --release --target {aarch64,arm64ec}-pc-windows-msvc`), run the script, then validate the merged DLL with `RD_PIPE_DLL_PATH=<dll> cargo +beta nextest run --target {aarch64,arm64ec}-pc-windows-msvc -E 'binary(dll_smoke) or binary(dvc_emulation)'`.
The script can be exercised on a Windows ARM64 host: build both staticlibs+DLLs (`cargo build --release --target {aarch64,arm64ec}-pc-windows-msvc`), run the script, then validate the merged DLL with `RD_PIPE_DLL_PATH=<dll> cargo nextest run --target {aarch64,arm64ec}-pc-windows-msvc -E 'binary(dll_smoke) or binary(dvc_emulation)'`.

## Registration (DllInstall)

Expand Down
Loading