From 30b00256848bf44fd4adb857fcb008db3527811c Mon Sep 17 00:00:00 2001 From: Gaspard Kirira Date: Sun, 7 Jun 2026 13:08:13 +0300 Subject: [PATCH 1/7] chore(release): prepare v2.6.2 --- CHANGELOG.md | 10 ++++++++++ README.md | 8 +------- examples/rate_limit/rate_limit_pipeline_demo.cpp | 4 ++-- modules/cli | 2 +- modules/middleware | 2 +- 5 files changed, 15 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 52331ba..4c427f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## v2.6.2 + +### Fixed + +- Fixed `vix run` for generic CMake projects by detecting and running the executable produced by the build instead of assuming the folder name is the target name. +- Kept default `vix run` output cleaner during normal execution. +- Fixed build toolchain behavior by using absolute system archiver paths. +- Exposed middleware app integration helpers through the public aggregate header. +- Kept middleware aggregate header cache independent. + ## v2.6.1 ### Changed diff --git a/README.md b/README.md index e2afa3d..bf5e9c2 100644 --- a/README.md +++ b/README.md @@ -138,17 +138,11 @@ Vix.cpp is designed as an application runtime layer, not only as an HTTP server. | [Kordex](https://github.com/softadastra/kordex) | JavaScript and TypeScript runtime layer built on Vix and Softadastra. | | [Softadastra](https://github.com/softadastra/softadastra) | Local-first and offline-first runtime foundation for reliable applications. | | [Cnerium](https://github.com/softadastra/cnerium) | Reliability-first application framework built on Vix and the Softadastra SDK. | -| [Softadastra Cloud](https://github.com/softadastra/cloud) | Reliability testing control plane for reports, scores, and dashboard results. | +| [Cloud](https://github.com/softadastra/cloud) | Reliability testing control plane for reports, scores, and dashboard results. | | [Converdict](https://github.com/softadastra/converdict) | Reliability verification platform for distributed systems. | | [PulseGrid](https://github.com/softadastra/PulseGrid) | Real-time service monitoring built with Vix.cpp. | | [Vix Game](https://github.com/vixcpp/vix-game) | Game-oriented project built on the Vix.cpp runtime foundation. | -### Vix Game - -Game-oriented project built on the Vix.cpp runtime foundation. - -https://github.com/vixcpp/vix-game - ## Links - Documentation: https://docs.vixcpp.com diff --git a/examples/rate_limit/rate_limit_pipeline_demo.cpp b/examples/rate_limit/rate_limit_pipeline_demo.cpp index aa8fa3e..67fc96c 100644 --- a/examples/rate_limit/rate_limit_pipeline_demo.cpp +++ b/examples/rate_limit/rate_limit_pipeline_demo.cpp @@ -26,10 +26,10 @@ using namespace vix::middleware; -static vix::http::RawRequest make_req() +static vix::http::Request make_req() { namespace http = boost::beast::http; - vix::http::RawRequest req{http::verb::get, "/api/x", 11}; + vix::http::Request req{http::verb::get, "/api/x", 11}; req.set(http::field::host, "localhost"); req.set("x-forwarded-for", "1.2.3.4"); req.prepare_payload(); diff --git a/modules/cli b/modules/cli index c62291b..72a1112 160000 --- a/modules/cli +++ b/modules/cli @@ -1 +1 @@ -Subproject commit c62291bac48e9f2d163dfacccaab04c8d8091f8a +Subproject commit 72a1112dfa5b4d92b22641c8f653f71907f9909d diff --git a/modules/middleware b/modules/middleware index 17b2c52..4a41d5d 160000 --- a/modules/middleware +++ b/modules/middleware @@ -1 +1 @@ -Subproject commit 17b2c527b974ddce93d813b30806804270d84509 +Subproject commit 4a41d5d908ecab9eff9abdc214eaf1451ec577b0 From 588f245499b863f3a0f526cc260badcad9bf3331 Mon Sep 17 00:00:00 2001 From: Gaspard Kirira Date: Mon, 8 Jun 2026 22:35:26 +0300 Subject: [PATCH 2/7] chore(release): update v2.6.2 changelog --- CHANGELOG.md | 6 ++++++ modules/cli | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c427f5..f495346 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fixed `vix run` for generic CMake projects by detecting and running the executable produced by the build instead of assuming the folder name is the target name. - Kept default `vix run` output cleaner during normal execution. +- Fixed `vix install` output to keep dependency installation messages shorter and cleaner. +- Fixed project dependency installation by handling stale or broken `.vix/deps` links more reliably. +- Fixed transitive registry dependency propagation so packages like `rix/rix` can expose dependencies such as `rix/csv` and `rix/debug` without requiring every app to list them manually. +- Improved `vix.app` diagnostics when `.vix/vix_deps.cmake` is missing. +- Improved `vix.app` resource validation so missing resources fail early with a clear error instead of a long post-build CMake command. +- Made `vix build --verbose` show the expected CMake output by enabling CMake verbose mode. - Fixed build toolchain behavior by using absolute system archiver paths. - Exposed middleware app integration helpers through the public aggregate header. - Kept middleware aggregate header cache independent. diff --git a/modules/cli b/modules/cli index 72a1112..806ad4b 160000 --- a/modules/cli +++ b/modules/cli @@ -1 +1 @@ -Subproject commit 72a1112dfa5b4d92b22641c8f653f71907f9909d +Subproject commit 806ad4b9a06de58b923cb0c72f3de6139b9c7620 From caee0f67b2c4835b693307a252bb7eb9e313b164 Mon Sep 17 00:00:00 2001 From: Gaspard Kirira Date: Mon, 8 Jun 2026 23:12:54 +0300 Subject: [PATCH 3/7] Update crypto module for production password hashing --- CHANGELOG.md | 5 +++++ modules/crypto | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f495346..ca0d410 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## v2.6.2 +### Added + +- Added constant-time byte comparison helpers to the crypto module for security-sensitive comparisons. +- Added PBKDF2-HMAC-SHA256 password hashing and verification helpers to the crypto module. + ### Fixed - Fixed `vix run` for generic CMake projects by detecting and running the executable produced by the build instead of assuming the folder name is the target name. diff --git a/modules/crypto b/modules/crypto index 51017bd..9d3906e 160000 --- a/modules/crypto +++ b/modules/crypto @@ -1 +1 @@ -Subproject commit 51017bd53ca9b8ceb961fc982b262be035c71021 +Subproject commit 9d3906e2017d95d2491d8f2702f2031f48547173 From a5973fde1ef792ff983d38c3140a6f7e0415c8d0 Mon Sep 17 00:00:00 2001 From: Gaspard Kirira Date: Wed, 10 Jun 2026 09:49:15 +0300 Subject: [PATCH 4/7] docs: update changelog for v2.6.2 --- CHANGELOG.md | 11 +++++++++-- modules/cli | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca0d410..a05a493 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,12 +16,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fixed `vix run` for generic CMake projects by detecting and running the executable produced by the build instead of assuming the folder name is the target name. - Kept default `vix run` output cleaner during normal execution. +- Fixed `vix update` so it updates only dependencies with newer resolved versions instead of reprocessing every dependency in the project. +- Improved `vix update` output so already-current dependencies are no longer repeated in the main update summary. +- Fixed `vix install` output so it reports only dependencies that were actually installed or relinked instead of counting every dependency from `vix.lock` as newly installed. - Fixed `vix install` output to keep dependency installation messages shorter and cleaner. - Fixed project dependency installation by handling stale or broken `.vix/deps` links more reliably. -- Fixed transitive registry dependency propagation so packages like `rix/rix` can expose dependencies such as `rix/csv` and `rix/debug` without requiring every app to list them manually. +- Fixed transitive registry dependency propagation so packages like `rix/rix` can expose dependencies such as `rix/csv`, `rix/debug`, and `rix/auth` without requiring every app to list them manually. +- Improved `vix publish` diagnostics when a tag exists locally but has not been pushed to `origin`. +- Improved registry dependency workflows after testing the registry install, update, and generated CMake integration flow in production with `pico.vixcpp.com`. +- Improved CMake error parsing so multi-line `message(FATAL_ERROR ...)` diagnostics are displayed clearly instead of collapsing into unreadable one-line reasons. +- Improved `vix build` verbose behavior so `-v` remains readable while `--cmake-verbose` is reserved for raw CMake/Ninja output. +- Improved `vix tests` failure diagnostics so test runner output is summarized with clearer failed test names, source locations, focused error messages, and compact code frames. - Improved `vix.app` diagnostics when `.vix/vix_deps.cmake` is missing. - Improved `vix.app` resource validation so missing resources fail early with a clear error instead of a long post-build CMake command. -- Made `vix build --verbose` show the expected CMake output by enabling CMake verbose mode. - Fixed build toolchain behavior by using absolute system archiver paths. - Exposed middleware app integration helpers through the public aggregate header. - Kept middleware aggregate header cache independent. diff --git a/modules/cli b/modules/cli index 806ad4b..f5a48a7 160000 --- a/modules/cli +++ b/modules/cli @@ -1 +1 @@ -Subproject commit 806ad4b9a06de58b923cb0c72f3de6139b9c7620 +Subproject commit f5a48a761b374f3c72ca001d219c9d790f4be64b From 478d23540197c1ce9f837ae7e4ceda54e4968729 Mon Sep 17 00:00:00 2001 From: Gaspard Kirira Date: Wed, 10 Jun 2026 15:08:46 +0300 Subject: [PATCH 5/7] chore(release): update v2.6.2 changelog and cli submodule --- CHANGELOG.md | 1 + modules/cli | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a05a493..d737c22 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fixed project dependency installation by handling stale or broken `.vix/deps` links more reliably. - Fixed transitive registry dependency propagation so packages like `rix/rix` can expose dependencies such as `rix/csv`, `rix/debug`, and `rix/auth` without requiring every app to list them manually. - Improved `vix publish` diagnostics when a tag exists locally but has not been pushed to `origin`. +- Fixed `vix publish` registry preparation so stale local publish branches and untracked registry entry files are cleaned before checking whether a version already exists. - Improved registry dependency workflows after testing the registry install, update, and generated CMake integration flow in production with `pico.vixcpp.com`. - Improved CMake error parsing so multi-line `message(FATAL_ERROR ...)` diagnostics are displayed clearly instead of collapsing into unreadable one-line reasons. - Improved `vix build` verbose behavior so `-v` remains readable while `--cmake-verbose` is reserved for raw CMake/Ninja output. diff --git a/modules/cli b/modules/cli index f5a48a7..36a3dee 160000 --- a/modules/cli +++ b/modules/cli @@ -1 +1 @@ -Subproject commit f5a48a761b374f3c72ca001d219c9d790f4be64b +Subproject commit 36a3deeb5037a9af263af0a22c847372ebb340ed From ef4e67e20cf2246d1adf5d5aa42eab6a2a3ce1ed Mon Sep 17 00:00:00 2001 From: Gaspard Kirira Date: Thu, 11 Jun 2026 10:12:35 +0300 Subject: [PATCH 6/7] chore(release): update v2.6.2 changelog and cli submodule --- CHANGELOG.md | 6 ++++++ modules/cli | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d737c22..7c3ead6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,7 +17,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fixed `vix run` for generic CMake projects by detecting and running the executable produced by the build instead of assuming the folder name is the target name. - Kept default `vix run` output cleaner during normal execution. - Fixed `vix update` so it updates only dependencies with newer resolved versions instead of reprocessing every dependency in the project. +- Fixed `vix update` so it respects the version constraints declared in `vix.json` instead of always resolving direct dependencies to the latest registry version. +- Improved `vix update` so it can refresh lockfile metadata and package hashes even when dependency versions do not change. +- Improved `vix update` summaries by separating version changes from lockfile metadata updates. - Improved `vix update` output so already-current dependencies are no longer repeated in the main update summary. +- Improved `vix outdated` so the default view shows only direct project dependencies from `vix.json`, with `--all` available for the full locked dependency graph. +- Improved `vix list` so the default view shows only direct project dependencies from `vix.json`, with `--all` available for transitive locked dependencies. +- Added pagination and JSON output support to `vix list`. - Fixed `vix install` output so it reports only dependencies that were actually installed or relinked instead of counting every dependency from `vix.lock` as newly installed. - Fixed `vix install` output to keep dependency installation messages shorter and cleaner. - Fixed project dependency installation by handling stale or broken `.vix/deps` links more reliably. diff --git a/modules/cli b/modules/cli index 36a3dee..a180f65 160000 --- a/modules/cli +++ b/modules/cli @@ -1 +1 @@ -Subproject commit 36a3deeb5037a9af263af0a22c847372ebb340ed +Subproject commit a180f65e7a9c28a574549771a267f4d80e3c7bd3 From 37fa9d435c4d606a97c1a597e94a93298eea8cb8 Mon Sep 17 00:00:00 2001 From: Gaspard Kirira Date: Thu, 11 Jun 2026 11:46:02 +0300 Subject: [PATCH 7/7] chore(release): prepare v2.6.2 --- .github/workflows/sdk-release.yml | 141 ++++++++++++++- CHANGELOG.md | 2 + README.md | 292 +++++++++++++++++++++++++++--- 3 files changed, 405 insertions(+), 30 deletions(-) diff --git a/.github/workflows/sdk-release.yml b/.github/workflows/sdk-release.yml index 88e312b..812e254 100644 --- a/.github/workflows/sdk-release.yml +++ b/.github/workflows/sdk-release.yml @@ -422,9 +422,142 @@ jobs: path: dist/* if-no-files-found: error + build-sdk-windows: + name: build-sdk-full (windows / x86_64) + runs-on: windows-2022 + + env: + BUILD_DIR: build-sdk-full + INSTALL_DIR: install-sdk-full + ASSET: vix-sdk-windows-x86_64.zip + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + fetch-depth: 0 + + - name: Checkout tag (manual input) + if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.tag != '' }} + shell: pwsh + run: | + git fetch --tags --force + git checkout "tags/${{ github.event.inputs.tag }}" + + - name: Setup vcpkg + shell: pwsh + run: | + git clone https://github.com/microsoft/vcpkg $env:GITHUB_WORKSPACE\vcpkg + "VCPKG_ROOT=$env:GITHUB_WORKSPACE\vcpkg" | Out-File -FilePath $env:GITHUB_ENV -Append + cd $env:GITHUB_WORKSPACE\vcpkg + .\bootstrap-vcpkg.bat + + - name: Vcpkg install + shell: pwsh + run: | + cd $env:GITHUB_WORKSPACE + & "$env:VCPKG_ROOT\vcpkg.exe" install --triplet x64-windows --x-manifest-root "$env:GITHUB_WORKSPACE" + if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } + + - name: Configure SDK full + shell: pwsh + run: | + cmake -S . -B "$env:BUILD_DIR" -A x64 ` + -DCMAKE_INSTALL_PREFIX="$env:GITHUB_WORKSPACE\$env:INSTALL_DIR" ` + -DVIX_ENABLE_INSTALL=ON ` + -DVIX_BUILD_EXAMPLES=OFF ` + -DVIX_BUILD_TESTS=OFF ` + -DVIX_ENABLE_WARNINGS=ON ` + -DVIX_ENABLE_HTTP_COMPRESSION=OFF ` + -DVIX_ENABLE_DB=ON ` + -DVIX_DB_USE_SQLITE=ON ` + -DVIX_DB_USE_MYSQL=OFF ` + -DVIX_DB_USE_POSTGRES=OFF ` + -DVIX_DB_USE_REDIS=OFF ` + -DVIX_CORE_WITH_MYSQL=OFF ` + -DVIX_ENABLE_ORM=ON ` + -DVIX_ENABLE_WEBSOCKET=ON ` + -DVIX_ENABLE_CLI=ON ` + -DVIX_ENABLE_MIDDLEWARE=ON ` + -DVIX_ENABLE_P2P=ON ` + -DVIX_ENABLE_P2P_HTTP=ON ` + -DVIX_ENABLE_CACHE=ON ` + -DVIX_ENABLE_ASYNC=ON ` + -DVIX_ENABLE_VALIDATION=ON ` + -DVIX_ENABLE_CRYPTO=ON ` + -DVIX_ENABLE_WEBRPC=ON ` + -DVIX_ENABLE_TIME=ON ` + -DVIX_ENABLE_TESTS_MODULE=ON ` + -DVIX_ENABLE_TEMPLATE=ON ` + -DVIX_ENABLE_PROCESS=ON ` + -DVIX_ENABLE_THREADPOOL=ON ` + -DVIX_ENABLE_KV=ON ` + -DVIX_ENABLE_AGENT=ON ` + -DVIX_ENABLE_GAME=OFF ` + -DVCPKG_TARGET_TRIPLET=x64-windows ` + -DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_ROOT\scripts\buildsystems\vcpkg.cmake" + + if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } + + - name: Build SDK + shell: pwsh + run: | + cmake --build "$env:BUILD_DIR" --config Release + if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } + + - name: Install SDK + shell: pwsh + run: | + cmake --install "$env:BUILD_DIR" --config Release + if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } + + - name: Verify installed SDK tree + shell: pwsh + run: | + if (!(Test-Path "$env:INSTALL_DIR\bin\vix.exe")) { throw "missing bin\vix.exe" } + if (!(Test-Path "$env:INSTALL_DIR\include\vix.hpp")) { throw "missing include\vix.hpp" } + if (!(Test-Path "$env:INSTALL_DIR\include\vix\websocket.hpp")) { throw "missing include\vix\websocket.hpp" } + if (!(Test-Path "$env:INSTALL_DIR\lib\cmake\Vix\VixConfig.cmake")) { throw "missing VixConfig.cmake" } + if (!(Test-Path "$env:INSTALL_DIR\lib\cmake\Vix\VixTargets.cmake")) { throw "missing VixTargets.cmake" } + + & "$env:INSTALL_DIR\bin\vix.exe" --version + if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } + + - name: Package SDK + shell: pwsh + run: | + New-Item -ItemType Directory -Force -Path dist | Out-Null + Compress-Archive -Path "$env:INSTALL_DIR\*" -DestinationPath "dist\$env:ASSET" -Force + if (!(Test-Path "dist\$env:ASSET")) { throw "missing SDK archive" } + + - name: Validate packaged SDK + shell: pwsh + run: | + Remove-Item -Recurse -Force smoke-sdk -ErrorAction SilentlyContinue + New-Item -ItemType Directory -Force -Path smoke-sdk | Out-Null + + Expand-Archive -LiteralPath "dist\$env:ASSET" -DestinationPath smoke-sdk -Force + + if (!(Test-Path "smoke-sdk\bin\vix.exe")) { throw "archive missing bin\vix.exe" } + if (!(Test-Path "smoke-sdk\include\vix.hpp")) { throw "archive missing include\vix.hpp" } + if (!(Test-Path "smoke-sdk\lib\cmake\Vix\VixConfig.cmake")) { throw "archive missing VixConfig.cmake" } + + & "smoke-sdk\bin\vix.exe" --version + if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } + + - name: Upload dist + uses: actions/upload-artifact@v4 + with: + name: sdk-dist-windows-x86_64 + path: dist/* + if-no-files-found: error + publish-sdk: name: publish-sdk - needs: build-sdk + needs: + - build-sdk + - build-sdk-windows runs-on: ubuntu-24.04 steps: @@ -441,8 +574,10 @@ jobs: mkdir -p dist find dist-all -type f -name "vix-sdk-linux-x86_64.tar.gz" -exec cp -f {} dist/ \; + find dist-all -type f -name "vix-sdk-windows-x86_64.zip" -exec cp -f {} dist/ \; test -f dist/vix-sdk-linux-x86_64.tar.gz + test -f dist/vix-sdk-windows-x86_64.zip ls -lah dist @@ -453,7 +588,7 @@ jobs: cd dist - for f in vix-sdk-*.tar.gz; do + for f in vix-sdk-*.tar.gz vix-sdk-*.zip; do [ -f "$f" ] || continue sha256sum "$f" > "$f.sha256" done @@ -488,7 +623,7 @@ jobs: printf "%s" "$MINISIGN_PRIVATE_KEY_B64" | base64 -d > "$keyfile" test -s "$keyfile" - for f in vix-sdk-*.tar.gz; do + for f in vix-sdk-*.tar.gz vix-sdk-*.zip; do [ -f "$f" ] || continue "$MS" -S -s "$keyfile" -m "$f" done diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c3ead6..a6c1bf4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved `vix publish` diagnostics when a tag exists locally but has not been pushed to `origin`. - Fixed `vix publish` registry preparation so stale local publish branches and untracked registry entry files are cleaned before checking whether a version already exists. - Improved registry dependency workflows after testing the registry install, update, and generated CMake integration flow in production with `pico.vixcpp.com`. +- Fixed the Windows SDK release pipeline so `vix-sdk-windows-x86_64.zip` is built, packaged, checksummed, signed, and uploaded to GitHub Releases. +- Fixed the Windows installer failure where `install.ps1` attempted to download `vix-sdk-windows-x86_64.zip` but the asset was missing from the release. - Improved CMake error parsing so multi-line `message(FATAL_ERROR ...)` diagnostics are displayed clearly instead of collapsing into unreadable one-line reasons. - Improved `vix build` verbose behavior so `-v` remains readable while `--cmake-verbose` is reserved for raw CMake/Ninja output. - Improved `vix tests` failure diagnostics so test runner output is summarized with clearer failed test names, source locations, focused error messages, and compact code frames. diff --git a/README.md b/README.md index bf5e9c2..1f580dd 100644 --- a/README.md +++ b/README.md @@ -16,12 +16,13 @@

Build real applications with modern C++.

- Vix.cpp is a modern C++ runtime for building fast, reliable, production-ready applications. + Vix.cpp is a modern C++ runtime and developer toolkit for building fast, reliable, production-ready applications.

Website · Docs · + Rix · Registry · Engineering notes

@@ -31,9 +32,9 @@ @@ -41,20 +42,20 @@ Vix.cpp removes friction from C++ application development. + It gives C++ a modern application workflow while keeping native performance, explicit control, and production-oriented architecture. -Vix is not just a web framework. -It is a runtime foundation for backend services, AI agents, games, P2P systems, local-first applications, fast builds, templates, and production-ready C++ projects. +Vix is not only a web framework. It is a runtime foundation for backend services, WebSocket applications, AI agents, games, P2P systems, local-first applications, fast builds, templates, package-based projects, and production-ready C++ services. ## Install -Shell, Linux and macOS: +Linux and macOS: ```bash curl -fsSL https://vixcpp.com/install.sh | bash ``` -PowerShell, Windows: +Windows PowerShell: ```powershell irm https://vixcpp.com/install.ps1 | iex @@ -62,7 +63,9 @@ irm https://vixcpp.com/install.ps1 | iex More installation options: +```text https://vixcpp.com/install +``` ## Quick start @@ -70,13 +73,12 @@ Create `server.cpp`: ```cpp #include -using namespace vix; int main() { vix::App app; - app.get("/", [](Request &req, Response &res) { + app.get("/", [](vix::Request &req, vix::Response &res) { res.send("Hello from Vix.cpp"); }); @@ -105,17 +107,21 @@ C++ is powerful, but building real applications often means rebuilding the same Vix gives you that foundation: - run C++ files with `vix run` -- create projects with `vix new` -- build fast with `vix build` -- build backend services +- create structured projects with `vix new` +- build projects with `vix build` +- run tests with `vix tests` +- manage packages through the Vix registry +- build HTTP backend services - build WebSocket applications - build P2P systems -- build AI agents +- build AI agent projects - build game-oriented projects -- use threadpool and async runtime modules -- use KV, cache, database, ORM, middleware, crypto, validation, and template modules +- use async and threadpool modules +- use KV, cache, database, ORM, middleware, crypto, validation, JSON, template, and process modules - generate production-ready backend projects -- integrate backend projects with frontend apps such as Vue.js +- integrate backend projects with frontend applications such as Vue.js + +Vix is designed to make C++ feel usable for real application development without hiding what makes C++ powerful. ## Runtime modules @@ -131,31 +137,263 @@ utils validation webrpc websocket Vix.cpp is designed as an application runtime layer, not only as an HTTP server. +## Vix Reply + +Vix Reply is the interactive REPL engine for Vix. + +It powers the interactive `vix` and `vix repl` experience, with support for expressions, variables, JSON values, runtime helpers, and real C++ snippets powered by the normal `vix run` pipeline. + +Start the REPL: + +```bash +vix +``` + +Or explicitly: + +```bash +vix repl +``` + +Run real C++ from the REPL: + +```text +>>> :cpp +C++ mode. Type :run to execute or :cancel to exit. +cpp> #include +... int main() { +... vix::print("Hello from C++"); +... } +Hello from C++ +``` + +Vix Reply is not a fake C++ interpreter. C++ snippets are written to a temporary `.cpp` file and executed through `vix run`, so the code goes through the real compiler, Vix diagnostics, and the normal runtime behavior. + +## Registry and packages + +Vix includes registry integration for package-based C++ projects. + +```bash +vix add rix/csv +vix install +vix build +``` + +The registry makes it possible to build a larger ecosystem around Vix without forcing every library into the core runtime. + +## Rix + +Rix is the official userland library layer for Vix.cpp. + +It provides optional public libraries that live in the registry and can evolve independently from Vix Core. + +Vix stays focused on the runtime, CLI, build workflow, registry integration, and existing core modules. + +Rix provides reusable libraries for application developers. + +Examples: + +```bash +vix add rix/csv +vix add rix/debug +vix add rix/auth +vix add rix/pdf +``` + +Rix packages can be used independently, or through a unified facade package when a project wants one clean entry point. + +```cpp +rix.csv.parse(...) +rix.debug.print(...) +rix.auth.register_user(...) +rix.pdf.document() +``` + +Rix does not replace Vix. + +It grows around Vix as the public library layer for real applications. + +## Cnerium + +Cnerium is a reliability-first backend layer for Vix. + +It attaches to an existing Vix backend and adds durable route behavior for critical write operations. + +Cnerium is designed for routes that must stay correct under retries, timeouts, lost responses, process restarts, and unstable networks. + +```cpp +#include +#include + +int main() +{ + vix::App app; + + auto c = cnerium::attach(app); + + c.durable_post( + "/orders", + "orders.create", + [](cnerium::DurableRequest &request) { + return cnerium::created({ + {"ok", true} + }); + }); + + c.start(); + app.run(); +} +``` + +Cnerium does not replace Vix. Vix remains the backend runtime, HTTP server, router, WebSocket transport, build workflow, and application foundation. + +Cnerium attaches to Vix and protects selected write operations. + ## Built with Vix.cpp -| Project | Description | -| --------------------------------------------------------- | ----------------------------------------------------------------------------- | -| [Kordex](https://github.com/softadastra/kordex) | JavaScript and TypeScript runtime layer built on Vix and Softadastra. | -| [Softadastra](https://github.com/softadastra/softadastra) | Local-first and offline-first runtime foundation for reliable applications. | -| [Cnerium](https://github.com/softadastra/cnerium) | Reliability-first application framework built on Vix and the Softadastra SDK. | -| [Cloud](https://github.com/softadastra/cloud) | Reliability testing control plane for reports, scores, and dashboard results. | -| [Converdict](https://github.com/softadastra/converdict) | Reliability verification platform for distributed systems. | -| [PulseGrid](https://github.com/softadastra/PulseGrid) | Real-time service monitoring built with Vix.cpp. | -| [Vix Game](https://github.com/vixcpp/vix-game) | Game-oriented project built on the Vix.cpp runtime foundation. | +| Project | Description | +| ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| [Rix](https://github.com/rixcpp/rix) | Official userland library layer for Vix.cpp, distributed through the registry. | +| [Vix Pico](https://github.com/vixcpp/pico) | Production-style backend used to validate Vix modules, deployment, auth, PDF generation, SQLite, KV, jobs, and WebSocket routes. | +| [Vix Game](https://github.com/vixcpp/vix-game) | Game-oriented project built on the Vix.cpp runtime foundation. | +| [Softadastra Runner](https://github.com/softadastra/runner) | Small command runner built with Vix.cpp and `vix::process`. | +| [Softadastra Kordex](https://github.com/softadastra/kordex) | JavaScript and TypeScript runtime layer built on Vix and Softadastra. | +| [Softadastra Engine](https://github.com/softadastra/softadastra) | Local-first and offline-first runtime foundation for reliable applications. | +| [Softadastra Cnerium](https://github.com/softadastra/cnerium) | Reliability-first application framework built on Vix and the Softadastra SDK. | +| [Softadastra Cloud](https://github.com/softadastra/cloud) | Reliability testing control plane for reports, scores, and dashboard results. | +| [Softadastra Converdict](https://github.com/softadastra/converdict) | Reliability verification platform for distributed systems. | +| [Softadastra PulseGrid](https://github.com/softadastra/PulseGrid) | Real-time service monitoring built with Vix.cpp. | + +## Vix Pico + +Vix Pico is a production-style backend built with Vix.cpp. + +It validates Vix in real backend conditions: + +- HTTP routes +- WebSocket runtime +- SQLite persistence +- KV storage +- threadpool jobs +- runtime events +- production service deployment +- Rix Auth diagnostics +- Rix PDF generation + +Pico is used to prove that Vix can build and deploy real backend applications, not only small examples. + +## Softadastra Runner + +Softadastra Runner is a simple command runner built with Vix.cpp. + +It shows how to structure a small console application around: + +- application orchestration +- CLI input and output +- command parsing +- service logic +- process execution through `vix::process` + +Run it with: + +```bash +vix build +vix run +``` + +Runner is intentionally small, readable, and useful as a clean example for building console tools with Vix.cpp. + +## Project workflow + +Create a new project: + +```bash +vix new hello --app +cd hello +``` + +Build it: + +```bash +vix build +``` + +Run it: + +```bash +vix run +``` + +Run tests: + +```bash +vix tests +``` + +Add a package: + +```bash +vix add rix/csv +vix install +``` + +## Production workflow + +Vix provides a production workflow for backend applications. + +A basic deployment can be handled with: + +```bash +vix deploy +``` + +`vix deploy` can build the application, restart the service, check service status, run health checks, validate the proxy, and show logs when something fails. + +For production inspection and operations, Vix also provides: + +```bash +vix doctor production +vix service status +vix logs +vix health +vix proxy nginx check +``` + +A typical production flow looks like this: + +```bash +vix build +vix service install +vix proxy nginx init +vix deploy +vix doctor production +``` + +The idea is to avoid custom deployment scripts for normal Vix backend applications. + +Vix should make the production state visible: service, ports, proxy, TLS, health checks, logs, and runtime status. ## Links +- Website: https://vixcpp.com - Documentation: https://docs.vixcpp.com +- Rix documentation: https://rix.vixcpp.com - Registry: https://registry.vixcpp.com - Engineering notes: https://blog.vixcpp.com -- Website: https://vixcpp.com +- X: https://x.com/vix_cpp +- YouTube: https://www.youtube.com/@vixcpp ## Contributing Contributions are welcome. + Read the contribution guide: +```text https://docs.vixcpp.com/contributing +``` + +You can contribute by improving the runtime, writing examples, testing Vix on real projects, improving documentation, or publishing packages for the Vix registry. ## License