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.8On 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-onlyand:
spdlog::spdlog_header_onlyThis 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=1This 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 --versionand inspecting dependencies through:
lddThis 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_utilsto preferfmt::fmt-header-only. - Updated
vix_utilsto preferspdlog::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 --versionvalidation after packaging. - Added
ldddependency 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.