Vix.cpp v2.1.16

Vix.cpp v2.1.16 is a Linux release portability and SDK compatibility release. This release fixes runtime failures caused by shared library ABI mismatches in Linux artifacts, updates release and SDK workflows to build on Ubuntu 24.04, improves fmt and spdlog linkage behavior, and adds runtime validation for packaged Linux artifacts. The focus of this release is making released Vix binaries more reliable on modern Linux systems.

Linux runtime compatibility

The main fix in Vix.cpp v2.1.16 is resolving Linux runtime failures caused by shared library ABI mismatch. Previous Linux artifacts were built on Ubuntu 22.04 and could be linked against older shared libraries such as:

libfmt.so.8

On newer distributions such as Ubuntu 24.04, this could cause runtime failures after installation if the expected shared library ABI was not available. Vix.cpp v2.1.16 updates release workflows to build on Ubuntu 24.04, aligning packaged artifacts with modern Linux environments.

SDK artifact reliability

This release also updates SDK artifact generation to use the same Linux build environment. That matters because the SDK should not have different runtime assumptions from the CLI or release artifacts. By unifying the Linux build environment, Vix reduces the chance that users install an SDK package that builds successfully but fails at runtime because of mismatched system library dependencies.

Header-only fmt and spdlog usage

Vix.cpp v2.1.16 improves vix_utils by preferring header-only targets for fmt and spdlog.

The preferred targets are now:

fmt::fmt-header-only

and:

spdlog::spdlog_header_only

This reduces reliance on system shared libraries and improves portability for packaged releases. For a distributed C++ CLI and SDK, depending accidentally on system-specific shared library versions can make binaries fragile. Header-only integration helps reduce that risk.

Shared library dependency control

This release also improves fmt and spdlog integration by adding:

SPDLOG_FMT_EXTERNAL=1

This ensures more consistent integration with fmt and prevents unexpected linkage behavior. The goal is to avoid implicit shared library dependencies in Linux release artifacts whenever possible.

Packaged artifact validation

Vix.cpp v2.1.16 adds a runtime validation step for packaged Linux artifacts. After packaging, the release workflow now validates the artifact by executing:

vix --version

and inspecting dependencies through:

ldd

This helps detect broken binaries before they are published. This is important because a package can compile successfully and still fail on the target system due to missing or incompatible runtime dependencies.

Unified Linux build environment

The Linux release and SDK workflows are now standardized on Ubuntu 24.04. This gives the release process a more consistent baseline and improves compatibility with modern Linux distributions. It also reduces differences between release artifacts and SDK artifacts, which makes future debugging easier.

Highlights

  • Fixed Linux runtime failures caused by shared library ABI mismatch.
  • Updated Linux release workflows from Ubuntu 22.04 to Ubuntu 24.04.
  • Improved compatibility with modern Linux distributions.
  • Fixed SDK binary runtime behavior on modern Linux systems.
  • Unified release and SDK Linux build environments.
  • Updated vix_utils to prefer fmt::fmt-header-only.
  • Updated vix_utils to prefer spdlog::spdlog_header_only.
  • Reduced reliance on system shared libraries.
  • Added SPDLOG_FMT_EXTERNAL=1.
  • Improved control over implicit Linux shared library dependencies.
  • Added packaged Linux artifact runtime validation.
  • Added vix --version validation after packaging.
  • Added ldd dependency inspection before publishing artifacts.

Compatibility

Vix.cpp v2.1.16 introduces no breaking changes. Existing source builds remain compatible. Existing installations on older Linux systems may still require compatible runtime libraries. This release improves compatibility for modern Linux systems, especially environments closer to Ubuntu 24.04.

Notes

Vix.cpp v2.1.16 is a release engineering stability update. It does not introduce new runtime APIs. It focuses on making Linux artifacts and SDK packages safer to install and execute. Future releases should continue moving toward fully self-contained Linux binaries, but this release already reduces avoidable runtime failures caused by shared library ABI mismatches.