Platform Support

yuku-tsrx is a native addon with a JavaScript wrapper, so every platform needs its own compiled artifact. npm/yuku-tsrx/package.json names twelve of them as optional dependencies.

Read this page as a list of build targets. It is not a list of tested platforms and not a list of published packages, because there are none of the latter.

Nothing is published#

All twelve packages are at version 0.0.0 and none of them exists on npm. Neither does yuku-tsrx itself. There is no install to run. The way to get a working addon today is to build it, which Getting Started covers.

That is why this page has no tiers, no "guaranteed to work" column, and no per-platform test claims. Publishing a platform is a weaker promise than testing one, and this project has not made the weaker promise yet.

The twelve targets#

Package Platform
@yuku-tsrx/binding-darwin-arm64 macOS, arm64
@yuku-tsrx/binding-darwin-x64 macOS, x64
@yuku-tsrx/binding-linux-x64-gnu Linux, x64, glibc
@yuku-tsrx/binding-linux-x64-musl Linux, x64, musl
@yuku-tsrx/binding-linux-arm64-gnu Linux, arm64, glibc
@yuku-tsrx/binding-linux-arm64-musl Linux, arm64, musl
@yuku-tsrx/binding-linux-arm-gnu Linux, arm, glibc
@yuku-tsrx/binding-linux-arm-musl Linux, arm, musl
@yuku-tsrx/binding-win32-x64 Windows, x64
@yuku-tsrx/binding-win32-arm64 Windows, arm64
@yuku-tsrx/binding-android-arm64 Android, arm64
@yuku-tsrx/binding-freebsd-x64 FreeBSD, x64

The only one this project has run on is the one the benchmark ran on: darwin arm64, an Apple M5 Pro. See Benchmarks.

How the addon is loaded#

The wrapper never names a platform. npm/yuku-tsrx/index.js imports a default export from binding.js, and binding.js is the file that resolves the addon for the machine it is running on.

It builds a suffix from process.platform and process.arch. On Linux it adds -gnu or -musl, decided by reading the running process's own report for a glibc runtime version rather than by guessing from the distribution. That suffix is exactly the part after binding- in the package names above.

With the suffix in hand it tries two locations, in order:

  1. ./@yuku-tsrx/binding-<suffix>/yuku-tsrx.node, next to the package. This is the local build, which is what zig build writes into zig-out/npm/yuku-tsrx/.
  2. @yuku-tsrx/binding-<suffix>/yuku-tsrx.node, resolved as a package. This is the path a published install would take.

If both fail it throws Failed to load @yuku-tsrx native binding for <suffix>, with both underlying errors attached as the cause. There is no fallback: no JavaScript implementation, no WebAssembly build, nothing that quietly does something else.

Because the optional dependencies do not resolve to anything today, only the first location works, and only after zig build.

Node version#

The package is ESM and the loader uses node:module and node:url. The repository pins pnpm@10.33.2 and ran its benchmark on Node v24.15.0. No minimum Node version is declared anywhere in the package, so treat "the Node the project builds and tests with" as the only version known to work.