Vix.cpp v2.1.14
Vix.cpp v2.1.14 is a module dependency cleanup release.
This release removes direct nlohmann_json linkage from the cache module, fixes VixTargets export errors caused by leaked third-party dependencies, and reinforces vix::json as the unified JSON abstraction across the ecosystem.
The focus of this release is clean module boundaries. A Vix module should depend on Vix-owned public abstractions, not expose third-party implementation details through installed package exports.
Unified JSON abstraction
The main change in Vix.cpp v2.1.14 is that the cache module now relies on vix::json instead of linking directly to:
nlohmann_json::nlohmann_jsonThis keeps JSON usage consistent across modules.
vix::json becomes the single JSON entry point, which improves portability and gives Vix better control over the public dependency model.
For a modular C++ runtime, this matters because third-party dependencies should not leak accidentally from internal modules into downstream consumer projects.
VixTargets export fix
This release fixes an install(EXPORT VixTargets ...) failure caused by non-exported external dependencies leaking from the cache module.
That kind of failure is especially important because it affects installed SDK usage. A project may build correctly inside the source tree but fail once exported and consumed through find_package(Vix).
Vix.cpp v2.1.14 fixes that by ensuring the cache module no longer exposes local third-party JSON targets through the exported package graph.
Cleaner umbrella dependency architecture
The cache module no longer performs local JSON resolution or FetchContent logic.
Dependency responsibility is delegated to the json module.
This aligns the module with umbrella build principles: each module should own its own dependency responsibilities, and other modules should consume the Vix-facing abstraction.
That prevents duplicated dependency management and makes the package export graph easier to reason about.
Cache module cleanup
Internally, the cache module removes local nlohmann_json detection and fallback logic.
This simplifies the module and reduces the risk of conflicting dependency resolution paths.
The result is a cleaner cache module that depends on the Vix JSON layer instead of managing JSON independently.
Highlights
- Removed direct
nlohmann_jsondependency from the cache module. - Replaced direct JSON linkage with
vix::json. - Fixed
VixTargetsexport errors caused by leaked external dependencies. - Enforced
vix::jsonas the unified JSON abstraction. - Removed local JSON resolution from the cache module.
- Removed cache module
FetchContentJSON fallback logic. - Delegated JSON dependency responsibility to the
jsonmodule. - Improved umbrella dependency architecture.
- Prevented accidental export of third-party JSON targets.
- Strengthened module separation between cache and JSON.
Compatibility
Vix.cpp v2.1.14 introduces no breaking changes.
Existing cache users remain compatible.
The main difference is internal dependency cleanup: cache now uses vix::json as the JSON abstraction instead of exposing direct nlohmann_json linkage.
Installed package exports should now behave more reliably when consumed through find_package(Vix).
Notes
Vix.cpp v2.1.14 is a small but important architecture release. It does not add user-facing runtime features. It fixes the dependency model behind the cache module and ensures JSON usage flows through the Vix abstraction layer. This kind of cleanup is essential for a modular C++ ecosystem because package exports must remain clean, stable, and free from accidental third-party target leakage.