Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package bun-pty for openSUSE:Factory checked in at 2026-10-01 16:44:48 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/bun-pty (Old) and /work/SRC/openSUSE:Factory/.bun-pty.new.1253 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "bun-pty" Thu Oct 1 16:44:48 2026 rev:3 rq:1381675 version:0.4.11 Changes: -------- --- /work/SRC/openSUSE:Factory/bun-pty/bun-pty.changes 2026-09-24 22:59:37.851676215 +0200 +++ /work/SRC/openSUSE:Factory/.bun-pty.new.1253/bun-pty.changes 2026-10-01 16:45:35.647391938 +0200 @@ -1,0 +2,10 @@ +Wed Sep 30 08:02:58 UTC 2026 - Martin Pluskal <[email protected]> + +- Update to version 0.4.11: + * Add native Windows ARM64 support (#46): ship a rust_pty_arm64.dll + and select it at run time; the x64 DLL filename is unchanged + * Move native library filename resolution into src/library.ts + * Linux ABI unchanged: same 45 vendored crates and no exported-symbol + changes; %check still verifies all eight dlsym entry points + +------------------------------------------------------------------- Old: ---- bun-pty-0.4.10.tar.gz New: ---- bun-pty-0.4.11.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ bun-pty.spec ++++++ --- /var/tmp/diff_new_pack.9XJNDA/_old 2026-10-01 16:45:36.577430925 +0200 +++ /var/tmp/diff_new_pack.9XJNDA/_new 2026-10-01 16:45:36.580431051 +0200 @@ -17,7 +17,7 @@ Name: bun-pty -Version: 0.4.10 +Version: 0.4.11 Release: 0 Summary: Pseudo-terminal library for Bun FFI consumers License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.9XJNDA/_old 2026-10-01 16:45:36.654434153 +0200 +++ /var/tmp/diff_new_pack.9XJNDA/_new 2026-10-01 16:45:36.661434447 +0200 @@ -1,6 +1,6 @@ <services> <service name="cargo_vendor" mode="manual"> - <param name="srctar">bun-pty-0.4.10.tar.gz</param> + <param name="srctar">bun-pty-0.4.11.tar.gz</param> <param name="cargotoml">rust-pty/Cargo.toml</param> <param name="compression">zst</param> </service> ++++++ bun-pty-0.4.10.tar.gz -> bun-pty-0.4.11.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bun-pty-0.4.10/.github/workflows/publish.yml new/bun-pty-0.4.11/.github/workflows/publish.yml --- old/bun-pty-0.4.10/.github/workflows/publish.yml 2026-06-15 13:17:45.000000000 +0200 +++ new/bun-pty-0.4.11/.github/workflows/publish.yml 2026-09-30 07:52:47.000000000 +0200 @@ -47,6 +47,10 @@ - runner: windows-latest target: x86_64-pc-windows-gnu out: rust_pty.dll + - runner: windows-11-arm + target: aarch64-pc-windows-msvc + out: rust_pty_arm64.dll + rustflags: -C target-feature=+crt-static steps: - uses: actions/checkout@v4 @@ -74,6 +78,8 @@ - name: Build rust-pty if: "!matrix.zigbuild_target" + env: + RUSTFLAGS: ${{ matrix.rustflags }} run: | cd rust-pty cargo build --release --target ${{ matrix.target }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bun-pty-0.4.10/.github/workflows/test.yml new/bun-pty-0.4.11/.github/workflows/test.yml --- old/bun-pty-0.4.10/.github/workflows/test.yml 2026-06-15 13:17:45.000000000 +0200 +++ new/bun-pty-0.4.11/.github/workflows/test.yml 2026-09-30 07:52:47.000000000 +0200 @@ -24,7 +24,9 @@ target: aarch64-apple-darwin - runner: windows-latest target: x86_64-pc-windows-gnu - + - runner: windows-11-arm + target: aarch64-pc-windows-msvc + rustflags: -C target-feature=+crt-static steps: - uses: actions/checkout@v4 @@ -55,6 +57,8 @@ - name: Build Rust library if: "!matrix.zigbuild_target" + env: + RUSTFLAGS: ${{ matrix.rustflags }} run: | cd rust-pty cargo build --release --target ${{ matrix.target }} @@ -62,6 +66,13 @@ - name: Install dependencies run: bun install + - name: Prepare Windows ARM64 library + if: matrix.target == 'aarch64-pc-windows-msvc' + shell: pwsh + run: | + Copy-Item rust-pty/target/${{ matrix.target }}/release/rust_pty.dll rust-pty/target/release/rust_pty_arm64.dll + Remove-Item rust-pty/target/release/rust_pty.dll + - name: Run unit tests run: bun run test:unit diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bun-pty-0.4.10/CHANGELOG.md new/bun-pty-0.4.11/CHANGELOG.md --- old/bun-pty-0.4.10/CHANGELOG.md 2026-06-15 13:17:45.000000000 +0200 +++ new/bun-pty-0.4.11/CHANGELOG.md 2026-09-30 07:52:47.000000000 +0200 @@ -5,6 +5,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.4.11] - 2026-09-30 + +### Added +- Native Windows ARM64 support (#46) + - Ship a pre-built `rust_pty_arm64.dll` (built on GitHub's `windows-11-arm` runner for `aarch64-pc-windows-msvc`) alongside the existing x64 `rust_pty.dll`, whose filename is unchanged + - Link the MSVC runtime statically (`-C target-feature=+crt-static`) to avoid a Visual C++ Redistributable dependency + - Select the ARM64 DLL at runtime and in the `bun build --compile` embed path, falling back to `rust_pty.dll` + - Move native library filename resolution into `src/library.ts` with unit tests + - Add a `windows-11-arm` job to the test matrix that runs the unit and integration tests against the exact ARM64 artifact + ## [0.4.10] - 2026-06-15 ### Added diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bun-pty-0.4.10/package.json new/bun-pty-0.4.11/package.json --- old/bun-pty-0.4.10/package.json 2026-06-15 13:17:45.000000000 +0200 +++ new/bun-pty-0.4.11/package.json 2026-09-30 07:52:47.000000000 +0200 @@ -1,6 +1,6 @@ { "name": "bun-pty", - "version": "0.4.10", + "version": "0.4.11", "description": "Cross-platform pseudoterminal (PTY) implementation for Bun with native performance", "main": "./src/index.ts", "types": "./dist/index.d.ts", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bun-pty-0.4.10/src/library.ts new/bun-pty-0.4.11/src/library.ts --- old/bun-pty-0.4.10/src/library.ts 1970-01-01 01:00:00.000000000 +0100 +++ new/bun-pty-0.4.11/src/library.ts 2026-09-30 07:52:47.000000000 +0200 @@ -0,0 +1,20 @@ +export function libraryFilenames(platform: typeof process.platform, arch: string, musl: boolean) { + if (platform === "darwin") { + return arch === "arm64" + ? ["librust_pty_arm64.dylib", "librust_pty.dylib"] + : ["librust_pty.dylib"]; + } + if (platform === "win32") { + return arch === "arm64" + ? ["rust_pty_arm64.dll", "rust_pty.dll"] + : ["rust_pty.dll"]; + } + if (musl) { + return arch === "arm64" + ? ["librust_pty_arm64_musl.so", "librust_pty_musl.so", "librust_pty_arm64.so", "librust_pty.so"] + : ["librust_pty_musl.so", "librust_pty.so"]; + } + return arch === "arm64" + ? ["librust_pty_arm64.so", "librust_pty.so"] + : ["librust_pty.so"]; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bun-pty-0.4.10/src/terminal.integration.test.ts new/bun-pty-0.4.11/src/terminal.integration.test.ts --- old/bun-pty-0.4.10/src/terminal.integration.test.ts 2026-06-15 13:17:45.000000000 +0200 +++ new/bun-pty-0.4.11/src/terminal.integration.test.ts 2026-09-30 07:52:47.000000000 +0200 @@ -421,8 +421,11 @@ let hasExited = false; const terminal = new Terminal("powershell.exe", [ + "-NoLogo", + "-NoProfile", + "-NonInteractive", "-Command", - "Write-Output 'Hello from PowerShell'", + "Microsoft.PowerShell.Utility\\Write-Output 'Hello from PowerShell'", ]); terminals.push(terminal); @@ -447,7 +450,7 @@ await new Promise((resolve) => setTimeout(resolve, 200)); expect(dataReceived).toContain("Hello from PowerShell"); - }); + }, 15000); // Windows-specific: Test environment variables test.skipIf(!isWindows)("Terminal passes environment variables on Windows", async () => { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bun-pty-0.4.10/src/terminal.test.ts new/bun-pty-0.4.11/src/terminal.test.ts --- old/bun-pty-0.4.10/src/terminal.test.ts 2026-06-15 13:17:45.000000000 +0200 +++ new/bun-pty-0.4.11/src/terminal.test.ts 2026-09-30 07:52:47.000000000 +0200 @@ -1,6 +1,20 @@ import { expect, test, describe } from "bun:test"; import { DEFAULT_COLS, DEFAULT_ROWS, DEFAULT_FILE, DEFAULT_NAME } from "./terminal"; import type { IPtyForkOptions, IExitEvent } from "./interfaces"; +import { libraryFilenames } from "./library"; + +describe("native library resolution", () => { + test("prefers the ARM64 DLL on Windows ARM64", () => { + expect(libraryFilenames("win32", "arm64", false)).toEqual([ + "rust_pty_arm64.dll", + "rust_pty.dll", + ]); + }); + + test("keeps the generic DLL name on Windows x64", () => { + expect(libraryFilenames("win32", "x64", false)).toEqual(["rust_pty.dll"]); + }); +}); describe("Terminal configuration and options", () => { describe("default values", () => { @@ -394,4 +408,3 @@ expect(DEFAULT_NAME).toBe("xterm"); }); }); - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bun-pty-0.4.10/src/terminal.ts new/bun-pty-0.4.11/src/terminal.ts --- old/bun-pty-0.4.10/src/terminal.ts 2026-06-15 13:17:45.000000000 +0200 +++ new/bun-pty-0.4.11/src/terminal.ts 2026-09-30 07:52:47.000000000 +0200 @@ -4,6 +4,7 @@ import { Buffer } from "node:buffer"; import { EventEmitter } from "./interfaces"; import type { IPty, IPtyForkOptions, IExitEvent } from "./interfaces"; +import { libraryFilenames } from "./library"; import { join, dirname, basename } from "node:path"; import { existsSync, readFileSync } from "node:fs"; @@ -50,7 +51,7 @@ // See: https://github.com/sursaone/bun-pty/issues/19 try { // @ts-ignore - require returns path for binary files in Bun - const embeddedPath = require(`../rust-pty/target/release/${process.platform === "win32" ? "rust_pty.dll" : process.platform === "darwin" ? (process.arch === "arm64" ? "librust_pty_arm64.dylib" : "librust_pty.dylib") : process.arch === "arm64" ? "librust_pty_arm64.so" : "librust_pty.so"}`); + const embeddedPath = require(`../rust-pty/target/release/${process.platform === "win32" ? (process.arch === "arm64" ? "rust_pty_arm64.dll" : "rust_pty.dll") : process.platform === "darwin" ? (process.arch === "arm64" ? "librust_pty_arm64.dylib" : "librust_pty.dylib") : process.arch === "arm64" ? "librust_pty_arm64.so" : "librust_pty.so"}`); if (embeddedPath && !musl) return embeddedPath; } catch { // Not running as compiled binary, fall through to dynamic resolution @@ -74,20 +75,7 @@ const arch = process.arch; // Try both architecture-specific and generic filenames - const filenames = - platform === "darwin" - ? arch === "arm64" - ? ["librust_pty_arm64.dylib", "librust_pty.dylib"] - : ["librust_pty.dylib"] - : platform === "win32" - ? ["rust_pty.dll"] - : musl - ? arch === "arm64" - ? ["librust_pty_arm64_musl.so", "librust_pty_musl.so", "librust_pty_arm64.so", "librust_pty.so"] - : ["librust_pty_musl.so", "librust_pty.so"] - : arch === "arm64" - ? ["librust_pty_arm64.so", "librust_pty.so"] - : ["librust_pty.so"]; + const filenames = libraryFilenames(platform, arch, musl); // Start from the current module's location const base = Bun.fileURLToPath(import.meta.url);
