github emmercm/igir v5.7.0

3 hours ago

Release Highlights

Feature: WebAssembly builds for all addons

Igir makes use of open-source code from several C++ projects for reading and decompressing many archive formats:

  • MAME's chdman is the official tool for writing and reading .chd files.
  • Dolphin's dolphin-tool is the official tool for writing and reading .gcz, .rvz, and .wia files.
  • unknownbrackets' maxcso is one of the most popular tools for writing and reading .cso, .zso, and .dax files.

This C++ code has to be compiled into Node.js "native addons" for Igir to use it. These compiled binaries are OS and CPU-architecture-specific, which means many different versions of the binaries have to be built and shipped for Igir to meet its stated goal of running anywhere that Node.js runs. This is complicated, and it increases download sizes.

Since v4.1.0, Igir has had a "postinstall" script so that if a person was using an uncommon OS or CPU architecture, then these binaries would be built during npm install. This is what most npm packages did/do for just-in-time native addon compilation. But this was always a clunky solution, with two big problems:

  1. It assumes users have all the tools necessary to compile C++, which is a bad assumption, especially on Windows.
  2. postinstall scripts are a security risk, and npm v12 (July 2026) stopped running them by default (for good reason).

The solution? WebAssembly.

WebAssembly ("Wasm") is a portable binary format that isn't OS or CPU-architecture-specific, which means one binary can run everywhere Node.js does. Its main drawback is that (from my benchmarking of C++ code that Igir uses) it's 1.5-3x slower than native addons (which can benefit from OS and CPU-architecture-specific compiler optimizations).

Igir now ships Wasm versions of every native addon, and the npm postinstall script has been removed. This allows Igir to truly run anywhere Node.js does, with no other dependencies needed. Igir will prefer to use non-Wasm binaries, if they exist, because they will perform faster. Igir currently ships compiled native addons for these OSes and architectures:

  • Windows x64 and ARM64.  (Official support for Windows x86 Node.js was dropped with v23 in 2024.)
  • macOS ARM64 (Apple silicon) and x64 ("Intel").  (However, Node.js is starting to phase out support for x64, so Igir will likely stop shipping compiled native addons for it in 2027.)
  • Linux x64 and ARM64.  (Official support for Linux ARMv7 Node.js was dropped with v24 in 2025, and official support for Linux x86 Node.js was dropped with v8 in 2017.)

All changes

30 September 2026 - 5138806 - v5.7.0 (#2523)
30 September 2026 - 126cbf1 - Chore: pin dependency python to 3.14.7 (#2522)
30 September 2026 - f8545c0 - CI: don't update Node.js versions in GitHub Actions workflows (#2521)
30 September 2026 - 8c07afe - Chore: pin dependency node to 22.23.3 (#2519)
30 September 2026 - e9b214a - Feature: compile addons to WASM, drop armv7 prebuilds (#2518)
29 September 2026 - 2c218d6 - Refactor: lazy load native addons (#2517)
29 September 2026 - 07d1b66 - Chore: update Scoop manifest to v5.6.0 (#2516)

Igir, and other open-source projects like it, are a labor of love. They wouldn't be nearly as meaningful without the community supporting them. Constructive feedback and general positivity will always be welcome. Be kind to others, and be kind to yourselves.
❤️ Christian

Don't miss a new igir release

NewReleases is sending notifications on new releases.