Summary
The chat_xdk_dotnet native ships for osx-arm64, osx-x64, linux-x64 and win-x64. There is no linux-arm64, so the JVM and .NET bindings cannot run on 64-bit ARM Linux — AWS Graviton, Ampere, and ARM CI runners.
The Python binding already ships manylinux_2_17_aarch64, so this Rust target is already built in this repo's CI. Only the dotnet-build matrix skips it.
Impact
On Linux/aarch64, NativeLoader.detectRid() returns null:
} else if (os.contains("linux")) {
if (x64) {
return "linux-x64";
}
}
extractBundledLibrary() then returns null, and load() falls through to the system lookup, which fails unless the operator supplies their own build. Because dotnet-build also feeds the java job, one missing matrix entry affects both bindings.
Verification
I built chat-xdk-dotnet for aarch64-unknown-linux-gnu from v0.5.0, with juicebox-sdk as a sibling checkout and the pinned 1.91.1 toolchain:
Finished `release` profile [optimized] target(s) in 1m 25s
libchat_xdk_dotnet.so: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked
Loaded through JNA on an ARM64 JVM (Temurin 25), with no jna.library.path set:
arch=aarch64
RESOURCE_PREFIX=linux-aarch64
LOADED OK: true
Unmodified source — same crate, same pinned toolchain, same sibling dependency. Only the target triple differs.
Summary
The
chat_xdk_dotnetnative ships forosx-arm64,osx-x64,linux-x64andwin-x64. There is nolinux-arm64, so the JVM and .NET bindings cannot run on 64-bit ARM Linux — AWS Graviton, Ampere, and ARM CI runners.The Python binding already ships
manylinux_2_17_aarch64, so this Rust target is already built in this repo's CI. Only thedotnet-buildmatrix skips it.Impact
On Linux/aarch64,
NativeLoader.detectRid()returnsnull:extractBundledLibrary()then returns null, andload()falls through to the system lookup, which fails unless the operator supplies their own build. Becausedotnet-buildalso feeds thejavajob, one missing matrix entry affects both bindings.Verification
I built
chat-xdk-dotnetforaarch64-unknown-linux-gnufrom v0.5.0, withjuicebox-sdkas a sibling checkout and the pinned 1.91.1 toolchain:Loaded through JNA on an ARM64 JVM (Temurin 25), with no
jna.library.pathset:Unmodified source — same crate, same pinned toolchain, same sibling dependency. Only the target triple differs.