Skip to content

bindings: full C-ABI test matrix — C harness, Node package, .NET/Swift/Python updates, CI - #32

Merged
willwade merged 7 commits into
mainfrom
bindings/abi-test-suite
Aug 21, 2026
Merged

bindings: full C-ABI test matrix — C harness, Node package, .NET/Swift/Python updates, CI#32
willwade merged 7 commits into
mainfrom
bindings/abi-test-suite

Conversation

@willwade

Copy link
Copy Markdown
Contributor

Every binding wraps the flat C ABI (include/tts_wrapper.h); this gives
each one a real test suite and adds two new surfaces:

  • tests/ffi_conformance.rs: Rust-side ABI conformance (multi-context
    lifetimes, per-context error isolation, deterministic failure surface
    offline, callback replacement, mark registration hardening, the
    consolidated 7-arg boundary signature)
  • bindings/c: C acceptance harness — compiles the cbindgen header with
    -Wall -Wextra -Werror, links the cdylib, exercises the whole ABI
    (make test)
  • bindings/nodejs: NEW @aactools/tts-wrapper npm package (koffi dlopen,
    EventEmitter API, full typings) + node:test suite (9 tests)
  • bindings/dotnet: boundary callback updated to the consolidated 7-arg
    signature (+ mark/viseme P/Invokes), TTS_WRAPPER_LIB DllImport
    resolver, NEW xunit test project
  • bindings/swift: boundary callback updated (+ mark/viseme setters),
    NEW SwiftPM package (CRustTtsWrapper C target via symlinked header,
    linkedLibrary + TTS_WRAPPER_LIB_DIR), NEW XCTest suite
  • bindings/python: boundary CFUNCTYPE updated to the 7-arg signature
  • bindings/README.md: the binding guide (surface table, loading
    conventions, suite matrix, which binding to use)
  • .github/workflows/bindings.yml: CI matrix — Rust conformance
    (3 OSes), C harness (2), Node (3), .NET (2), Swift (macOS)

…t/Python updates, CI

Every binding wraps the flat C ABI (include/tts_wrapper.h); this gives
each one a real test suite and adds two new surfaces:

- tests/ffi_conformance.rs: Rust-side ABI conformance (multi-context
  lifetimes, per-context error isolation, deterministic failure surface
  offline, callback replacement, mark registration hardening, the
  consolidated 7-arg boundary signature)
- bindings/c: C acceptance harness — compiles the cbindgen header with
  -Wall -Wextra -Werror, links the cdylib, exercises the whole ABI
  (make test)
- bindings/nodejs: NEW @aactools/tts-wrapper npm package (koffi dlopen,
  EventEmitter API, full typings) + node:test suite (9 tests)
- bindings/dotnet: boundary callback updated to the consolidated 7-arg
  signature (+ mark/viseme P/Invokes), TTS_WRAPPER_LIB DllImport
  resolver, NEW xunit test project
- bindings/swift: boundary callback updated (+ mark/viseme setters),
  NEW SwiftPM package (CRustTtsWrapper C target via symlinked header,
  linkedLibrary + TTS_WRAPPER_LIB_DIR), NEW XCTest suite
- bindings/python: boundary CFUNCTYPE updated to the 7-arg signature
- bindings/README.md: the binding guide (surface table, loading
  conventions, suite matrix, which binding to use)
- .github/workflows/bindings.yml: CI matrix — Rust conformance
  (3 OSes), C harness (2), Node (3), .NET (2), Swift (macOS)
@willwade
willwade merged commit f5ae5d2 into main Aug 21, 2026
20 checks passed
@willwade
willwade deleted the bindings/abi-test-suite branch August 21, 2026 09:00
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.

1 participant