Skip to content

Commit 20e7196

Browse files
v2.6.1 (#402)
* chore(release): prepare v2.6.1 cli diagnostics fix * chore(release): update v2.6.1 runtime diagnostics changelog * chore(release): update v2.6.1 diagnostics changelog * chore(release): update cli diagnostics for v2.6.1 * chore(release): update v2.6.1 changelog and cli module * chore(cli): update build command submodule * chore(release): prepare v2.6.1
1 parent f48c0a7 commit 20e7196

4 files changed

Lines changed: 238 additions & 30 deletions

File tree

.github/workflows/sdk-release.yml

Lines changed: 202 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ jobs:
8383
-DVIX_ENABLE_INSTALL=ON \
8484
-DVIX_BUILD_EXAMPLES=OFF \
8585
-DVIX_BUILD_TESTS=OFF \
86+
-DVIX_ENABLE_WARNINGS=ON \
8687
-DVIX_ENABLE_HTTP_COMPRESSION=ON \
8788
-DVIX_ENABLE_DB=ON \
8889
-DVIX_DB_USE_SQLITE=ON \
@@ -119,7 +120,9 @@ jobs:
119120
-DVIX_AGENT_BUILD_TESTS=OFF \
120121
-DVIX_AGENT_BUILD_EXAMPLES=OFF \
121122
-DVIX_GAME_BUILD_TESTS=OFF \
122-
-DVIX_GAME_BUILD_EXAMPLES=OFF
123+
-DVIX_GAME_BUILD_EXAMPLES=OFF \
124+
-DVIX_WEBSOCKET_BUILD_TESTS=OFF \
125+
-DVIX_WEBSOCKET_BUILD_EXAMPLES=OFF
123126
124127
- name: Build SDK
125128
shell: bash
@@ -133,40 +136,110 @@ jobs:
133136
set -euxo pipefail
134137
cmake --install "$BUILD_DIR"
135138
136-
- name: Install vendored Asio headers into SDK
139+
- name: Normalize vendored Asio headers
137140
shell: bash
138141
run: |
139142
set -euxo pipefail
140143
141144
ASIO_INCLUDE_DIR="third_party/asio-src/asio/include"
142145
143146
test -d "$ASIO_INCLUDE_DIR/asio"
147+
test -f "$ASIO_INCLUDE_DIR/asio.hpp"
144148
145149
mkdir -p "$INSTALL_DIR/include"
150+
mkdir -p "$INSTALL_DIR/include/vix/third_party/asio"
146151
147152
cp -a "$ASIO_INCLUDE_DIR/asio" "$INSTALL_DIR/include/"
153+
cp -a "$ASIO_INCLUDE_DIR/asio.hpp" "$INSTALL_DIR/include/"
148154
149-
if [ -f "$ASIO_INCLUDE_DIR/asio.hpp" ]; then
150-
cp -a "$ASIO_INCLUDE_DIR/asio.hpp" "$INSTALL_DIR/include/"
151-
fi
155+
cp -a "$ASIO_INCLUDE_DIR/asio" "$INSTALL_DIR/include/vix/third_party/asio/"
156+
cp -a "$ASIO_INCLUDE_DIR/asio.hpp" "$INSTALL_DIR/include/vix/third_party/asio/"
152157
153158
test -f "$INSTALL_DIR/include/asio/io_context.hpp"
159+
test -f "$INSTALL_DIR/include/asio.hpp"
160+
test -f "$INSTALL_DIR/include/vix/third_party/asio/asio/io_context.hpp"
161+
test -f "$INSTALL_DIR/include/vix/third_party/asio/asio.hpp"
154162
155163
- name: Verify installed SDK tree
156164
shell: bash
157165
run: |
158166
set -euxo pipefail
159167
160168
test -d "$INSTALL_DIR"
169+
161170
test -f "$INSTALL_DIR/bin/vix"
162-
test -f "$INSTALL_DIR/lib/cmake/Vix/VixConfig.cmake"
163-
test -f "$INSTALL_DIR/lib/cmake/Vix/VixTargets.cmake"
171+
172+
test -f "$INSTALL_DIR/include/vix.hpp"
173+
test -f "$INSTALL_DIR/include/vix/core.hpp"
174+
test -f "$INSTALL_DIR/include/vix/json/Simple.hpp"
175+
test -f "$INSTALL_DIR/include/vix/error/Error.hpp"
176+
test -f "$INSTALL_DIR/include/vix/path/Path.hpp"
177+
test -f "$INSTALL_DIR/include/vix/fs.hpp"
178+
test -f "$INSTALL_DIR/include/vix/console.hpp"
179+
test -f "$INSTALL_DIR/include/vix/env.hpp"
180+
test -f "$INSTALL_DIR/include/vix/log.hpp"
181+
test -f "$INSTALL_DIR/include/vix/async.hpp"
182+
test -f "$INSTALL_DIR/include/vix/time.hpp"
183+
test -f "$INSTALL_DIR/include/vix/crypto.hpp"
184+
test -f "$INSTALL_DIR/include/vix/cache.hpp"
185+
test -f "$INSTALL_DIR/include/vix/db.hpp"
186+
test -f "$INSTALL_DIR/include/vix/orm.hpp"
187+
test -f "$INSTALL_DIR/include/vix/websocket.hpp"
188+
test -f "$INSTALL_DIR/include/vix/validation.hpp"
189+
test -f "$INSTALL_DIR/include/vix/process.hpp"
190+
test -f "$INSTALL_DIR/include/vix/threadpool.hpp"
191+
test -f "$INSTALL_DIR/include/vix/kv.hpp"
192+
test -f "$INSTALL_DIR/include/vix/template.hpp"
193+
test -f "$INSTALL_DIR/include/vix/p2p.hpp"
194+
test -f "$INSTALL_DIR/include/vix/p2p_http.hpp"
195+
test -f "$INSTALL_DIR/include/vix/webrpc.hpp"
196+
test -f "$INSTALL_DIR/include/vix/game.hpp"
197+
test -f "$INSTALL_DIR/include/vix/agent.hpp"
198+
164199
test -f "$INSTALL_DIR/include/asio/io_context.hpp"
200+
test -f "$INSTALL_DIR/include/asio.hpp"
201+
test -f "$INSTALL_DIR/include/vix/third_party/asio/asio/io_context.hpp"
202+
test -f "$INSTALL_DIR/include/vix/third_party/asio/asio.hpp"
165203
166-
find "$INSTALL_DIR/include" -maxdepth 4 -type f | sort > installed-headers.txt
167-
find "$INSTALL_DIR/lib/cmake" -maxdepth 4 -type f | sort > installed-cmake-files.txt
204+
test -f "$INSTALL_DIR/lib/cmake/Vix/VixConfig.cmake"
205+
test -f "$INSTALL_DIR/lib/cmake/Vix/VixConfigVersion.cmake"
206+
test -f "$INSTALL_DIR/lib/cmake/Vix/VixTargets.cmake"
168207
169-
sed -n '1,80p' installed-headers.txt
208+
test -f "$INSTALL_DIR/lib/libvix_error.a"
209+
test -f "$INSTALL_DIR/lib/libvix_path.a"
210+
test -f "$INSTALL_DIR/lib/libvix_fs.a"
211+
test -f "$INSTALL_DIR/lib/libvix_io.a"
212+
test -f "$INSTALL_DIR/lib/libvix_env.a"
213+
test -f "$INSTALL_DIR/lib/libvix_os.a"
214+
test -f "$INSTALL_DIR/lib/libvix_utils.a"
215+
test -f "$INSTALL_DIR/lib/libvix_log.a"
216+
test -f "$INSTALL_DIR/lib/libvix_core.a"
217+
test -f "$INSTALL_DIR/lib/libvix_websocket.a"
218+
test -f "$INSTALL_DIR/lib/libvix_async.a"
219+
test -f "$INSTALL_DIR/lib/libvix_threadpool.a"
220+
test -f "$INSTALL_DIR/lib/libvix_kv.a"
221+
test -f "$INSTALL_DIR/lib/libvix_cache.a"
222+
test -f "$INSTALL_DIR/lib/libvix_process.a"
223+
test -f "$INSTALL_DIR/lib/libvix_crypto.a"
224+
test -f "$INSTALL_DIR/lib/libvix_net.a"
225+
test -f "$INSTALL_DIR/lib/libvix_sync.a"
226+
test -f "$INSTALL_DIR/lib/libvix_p2p.a"
227+
test -f "$INSTALL_DIR/lib/libvix_p2p_http.a"
228+
test -f "$INSTALL_DIR/lib/libvix_middleware.a"
229+
230+
nm -C "$INSTALL_DIR/lib/libvix_websocket.a" | grep "vix::websocket::LowLevelServer::run"
231+
nm -C "$INSTALL_DIR/lib/libvix_websocket.a" | grep "vix::websocket::Session::shutdown_now"
232+
nm -C "$INSTALL_DIR/lib/libvix_websocket.a" | grep "vix::websocket::LongPollingManager::push_to"
233+
234+
grep -R "vix::websocket" "$INSTALL_DIR/lib/cmake/Vix" -n
235+
grep -R "libvix_websocket" "$INSTALL_DIR/lib/cmake/Vix" -n
236+
237+
find "$INSTALL_DIR/include" -maxdepth 5 -type f | sort > installed-headers.txt
238+
find "$INSTALL_DIR/lib" -maxdepth 2 -type f | sort > installed-libs.txt
239+
find "$INSTALL_DIR/lib/cmake" -maxdepth 5 -type f | sort > installed-cmake-files.txt
240+
241+
sed -n '1,160p' installed-headers.txt
242+
cat installed-libs.txt
170243
cat installed-cmake-files.txt
171244
172245
- name: Package SDK
@@ -194,6 +267,27 @@ jobs:
194267
ldd smoke-bin/bin/vix || true
195268
smoke-bin/bin/vix --version
196269
270+
- name: Validate packaged SDK tree
271+
shell: bash
272+
run: |
273+
set -euxo pipefail
274+
275+
rm -rf smoke-sdk-tree
276+
mkdir -p smoke-sdk-tree
277+
278+
tar -xzf "dist/$ASSET" -C smoke-sdk-tree
279+
280+
test -f smoke-sdk-tree/bin/vix
281+
test -f smoke-sdk-tree/include/vix.hpp
282+
test -f smoke-sdk-tree/include/vix/websocket.hpp
283+
test -f smoke-sdk-tree/lib/libvix_websocket.a
284+
test -f smoke-sdk-tree/lib/cmake/Vix/VixConfig.cmake
285+
test -f smoke-sdk-tree/lib/cmake/Vix/VixTargets.cmake
286+
287+
nm -C smoke-sdk-tree/lib/libvix_websocket.a | grep "vix::websocket::LowLevelServer::run"
288+
nm -C smoke-sdk-tree/lib/libvix_websocket.a | grep "vix::websocket::Session::shutdown_now"
289+
nm -C smoke-sdk-tree/lib/libvix_websocket.a | grep "vix::websocket::LongPollingManager::push_to"
290+
197291
- name: Validate packaged SDK with full consumer project
198292
shell: bash
199293
run: |
@@ -210,6 +304,7 @@ jobs:
210304
211305
set(CMAKE_CXX_STANDARD 20)
212306
set(CMAKE_CXX_STANDARD_REQUIRED ON)
307+
set(CMAKE_CXX_EXTENSIONS OFF)
213308
214309
find_package(Vix CONFIG REQUIRED)
215310
@@ -247,21 +342,79 @@ jobs:
247342
#include <vix/agent.hpp>
248343
249344
#include <iostream>
345+
#include <string>
250346
251347
int main()
252348
{
253-
std::cout << "Vix full SDK consumer build works\n";
349+
vix::websocket::Config ws_config{};
350+
vix::websocket::Router ws_router{};
351+
352+
(void)ws_config;
353+
(void)ws_router;
354+
355+
std::cout << "Vix full SDK consumer build and link works\n";
254356
return 0;
255357
}
256358
EOF
257359
258360
cmake -S consumer -B consumer/build \
361+
-DCMAKE_BUILD_TYPE=Release \
259362
-DCMAKE_PREFIX_PATH="${GITHUB_WORKSPACE}/smoke-sdk"
260363
261364
cmake --build consumer/build -j2
262365
263366
./consumer/build/app
264367
368+
- name: Validate packaged SDK with WebSocket link project
369+
shell: bash
370+
run: |
371+
set -euxo pipefail
372+
373+
rm -rf smoke-sdk-ws consumer-ws
374+
mkdir -p smoke-sdk-ws consumer-ws
375+
376+
tar -xzf "dist/$ASSET" -C smoke-sdk-ws
377+
378+
cat > consumer-ws/CMakeLists.txt <<'EOF'
379+
cmake_minimum_required(VERSION 3.20)
380+
project(vix_sdk_websocket_consumer LANGUAGES CXX)
381+
382+
set(CMAKE_CXX_STANDARD 20)
383+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
384+
set(CMAKE_CXX_EXTENSIONS OFF)
385+
386+
find_package(Vix CONFIG REQUIRED)
387+
388+
add_executable(app main.cpp)
389+
target_link_libraries(app PRIVATE vix::vix)
390+
EOF
391+
392+
cat > consumer-ws/main.cpp <<'EOF'
393+
#include <vix/websocket.hpp>
394+
395+
#include <iostream>
396+
397+
int main()
398+
{
399+
vix::websocket::Config config{};
400+
vix::websocket::Router router{};
401+
402+
(void)config;
403+
(void)router;
404+
405+
std::cout << "Vix WebSocket SDK link works\n";
406+
return 0;
407+
}
408+
EOF
409+
410+
cmake -S consumer-ws -B consumer-ws/build \
411+
-DCMAKE_BUILD_TYPE=Release \
412+
-DCMAKE_PREFIX_PATH="${GITHUB_WORKSPACE}/smoke-sdk-ws"
413+
414+
cmake --build consumer-ws/build -j2
415+
416+
./consumer-ws/build/app
417+
265418
- name: Upload dist
266419
uses: actions/upload-artifact@v4
267420
with:
@@ -307,6 +460,44 @@ jobs:
307460
308461
ls -lah
309462
463+
- name: Sign SDK assets
464+
shell: bash
465+
env:
466+
MINISIGN_PRIVATE_KEY_B64: ${{ secrets.MINISIGN_PRIVATE_KEY_B64 }}
467+
run: |
468+
set -euxo pipefail
469+
470+
if [ -z "${MINISIGN_PRIVATE_KEY_B64:-}" ]; then
471+
echo "MINISIGN_PRIVATE_KEY_B64 is not configured; skipping minisign signing."
472+
exit 0
473+
fi
474+
475+
cd dist
476+
477+
MS_VER="0.11"
478+
curl -fL --retry 10 --retry-delay 2 \
479+
-o minisign-linux.tar.gz \
480+
"https://github.com/jedisct1/minisign/releases/download/${MS_VER}/minisign-${MS_VER}-linux.tar.gz"
481+
482+
tar -xzf minisign-linux.tar.gz
483+
chmod +x minisign-linux/x86_64/minisign
484+
MS="./minisign-linux/x86_64/minisign"
485+
486+
keyfile="$(mktemp)"
487+
chmod 600 "$keyfile"
488+
printf "%s" "$MINISIGN_PRIVATE_KEY_B64" | base64 -d > "$keyfile"
489+
test -s "$keyfile"
490+
491+
for f in vix-sdk-*.tar.gz; do
492+
[ -f "$f" ] || continue
493+
"$MS" -S -s "$keyfile" -m "$f"
494+
done
495+
496+
rm -f "$keyfile"
497+
rm -rf minisign-linux minisign-linux.tar.gz
498+
499+
ls -lah
500+
310501
- name: Determine tag
311502
id: tag
312503
shell: bash

CHANGELOG.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,32 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## v2.6.1
9+
10+
### Changed
11+
12+
- Updated internal module references for the v2.6.1 patch release.
13+
- Improved runtime diagnostic formatting for clearer CLI output.
14+
- Improved build diagnostic location selection to prefer user code over system headers.
15+
- Improved test failure output to render CTest assertion failures as clean Vix diagnostics.
16+
- Strengthened the SDK release workflow to validate a complete and faithful Vix SDK package.
17+
- Added stricter SDK release checks for installed headers, static libraries, CMake package files, and exported Vix targets.
18+
- Improved SDK release validation to ensure `vix::vix` can be used as the single consumer target for full SDK projects.
19+
20+
### Fixed
21+
22+
- Improved CLI runtime diagnostics for bad variant access errors.
23+
- Added clearer diagnostics for missing runtime resources.
24+
- Improved generic runtime failure handling by extracting useful error information from runtime logs.
25+
- Routed `vix dev` runtime failures through the same diagnostic pipeline used by `vix run`.
26+
- Reduced duplicated runtime log output when a clear diagnostic is already available.
27+
- Fixed misleading build diagnostics that pointed to standard library headers instead of project files.
28+
- Fixed `vix tests` output for failed C/C++ assertions by showing the failing source location, assertion message, and code frame.
29+
- Fixed incomplete SDK release validation that allowed missing module libraries to pass CI.
30+
- Fixed SDK packaging checks to catch missing WebSocket symbols such as `LowLevelServer::run`, `Session::shutdown_now`, and `LongPollingManager::push_to`.
31+
- Fixed SDK consumer validation so packaged releases now test real linking through `find_package(Vix CONFIG REQUIRED)` and `target_link_libraries(app PRIVATE vix::vix)`.
32+
- Fixed issues discovered after the v2.6.0 release.
33+
834
## v2.6.0
935

1036
### Added

README.md

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -133,23 +133,15 @@ Vix.cpp is designed as an application runtime layer, not only as an HTTP server.
133133

134134
## Built with Vix.cpp
135135

136-
### Kordex
137-
138-
A JavaScript and TypeScript runtime layer built on Vix and Softadastra.
139-
140-
https://github.com/softadastra/kordex
141-
142-
### Softadastra
143-
144-
A local-first and offline-first runtime foundation for reliable applications.
145-
146-
https://github.com/softadastra/softadastra
147-
148-
### PulseGrid
149-
150-
Real-time service monitoring built with Vix.cpp.
151-
152-
https://github.com/softadastra/PulseGrid
136+
| Project | Description |
137+
| --------------------------------------------------------- | ----------------------------------------------------------------------------- |
138+
| [Kordex](https://github.com/softadastra/kordex) | JavaScript and TypeScript runtime layer built on Vix and Softadastra. |
139+
| [Softadastra](https://github.com/softadastra/softadastra) | Local-first and offline-first runtime foundation for reliable applications. |
140+
| [Cnerium](https://github.com/softadastra/cnerium) | Reliability-first application framework built on Vix and the Softadastra SDK. |
141+
| [Softadastra Cloud](https://github.com/softadastra/cloud) | Reliability testing control plane for reports, scores, and dashboard results. |
142+
| [Converdict](https://github.com/softadastra/converdict) | Reliability verification platform for distributed systems. |
143+
| [PulseGrid](https://github.com/softadastra/PulseGrid) | Real-time service monitoring built with Vix.cpp. |
144+
| [Vix Game](https://github.com/vixcpp/vix-game) | Game-oriented project built on the Vix.cpp runtime foundation. |
153145

154146
### Vix Game
155147

@@ -167,7 +159,6 @@ https://github.com/vixcpp/vix-game
167159
## Contributing
168160

169161
Contributions are welcome.
170-
171162
Read the contribution guide:
172163

173164
https://docs.vixcpp.com/contributing

0 commit comments

Comments
 (0)