<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Gaspard Kirira</title>
    <description>The latest articles on DEV Community by Gaspard Kirira (@gkirira).</description>
    <link>https://dev.to/gkirira</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3967462%2F3bccaddb-7af7-49d9-a4dc-22a7fd294519.jpeg</url>
      <title>DEV Community: Gaspard Kirira</title>
      <link>https://dev.to/gkirira</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gkirira"/>
    <language>en</language>
    <item>
      <title>Vix.cpp v2.7.0 benchmark: 112k req/s locally on an HP EliteBook</title>
      <dc:creator>Gaspard Kirira</dc:creator>
      <pubDate>Thu, 25 Jun 2026 10:02:33 +0000</pubDate>
      <link>https://dev.to/gkirira/vixcpp-v270-benchmark-112k-reqs-locally-on-an-hp-elitebook-3np1</link>
      <guid>https://dev.to/gkirira/vixcpp-v270-benchmark-112k-reqs-locally-on-an-hp-elitebook-3np1</guid>
      <description>&lt;h1&gt;
  
  
  Vix.cpp v2.7.0 benchmark: 112k req/s locally on an HP EliteBook
&lt;/h1&gt;

&lt;p&gt;I have been working on the &lt;code&gt;v2.7.0&lt;/code&gt; release of &lt;strong&gt;Vix.cpp&lt;/strong&gt;, and I wanted to share a small benchmark from the current release build.&lt;/p&gt;

&lt;p&gt;This benchmark was not done on a cloud server or a dedicated benchmark machine. It was run locally on my laptop.&lt;/p&gt;

&lt;h2&gt;
  
  
  Machine
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Platform        : linux
Architecture    : x86_64
Kernel version  : 6.17.0-35-generic
Hostname        : softadastra-HP-EliteBook-x360-1030-G3
CPU count       : 8
Page size       : 4096 bytes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Build mode
&lt;/h2&gt;

&lt;p&gt;The project was built in release mode with benchmark mode enabled:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vix build &lt;span class="nt"&gt;--preset&lt;/span&gt; release &lt;span class="nt"&gt;--build-target&lt;/span&gt; all &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="nt"&gt;--clean&lt;/span&gt; &lt;span class="nt"&gt;--&lt;/span&gt; &lt;span class="nt"&gt;-DVIX_BENCH_MODE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;ON
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The server was running with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Vix.cpp v2.6.0
Threads: 8/8
Mode: run
Status: ready
HTTP: http://localhost:8080/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The benchmark endpoint was simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl http://127.0.0.1:8080/bench
&lt;span class="c"&gt;# OK&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Benchmark command
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wrk &lt;span class="nt"&gt;-t8&lt;/span&gt; &lt;span class="nt"&gt;-c800&lt;/span&gt; &lt;span class="nt"&gt;-d30s&lt;/span&gt; &lt;span class="nt"&gt;--latency&lt;/span&gt; http://127.0.0.1:8080/bench
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Running 30s test @ http://127.0.0.1:8080/bench
  8 threads and 800 connections

Latency:
  Avg:   7.31ms
  Stdev: 16.26ms
  Max:   606.15ms

Latency Distribution:
  50%:  6.51ms
  75%:  7.59ms
  90%:  8.73ms
  99%: 12.19ms

Requests:
  3,386,276 requests in 30.09s
  112,539.11 requests/sec
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Notes
&lt;/h2&gt;

&lt;p&gt;The result I care about most here is not only the &lt;code&gt;112k req/s&lt;/code&gt;, but also the latency distribution.&lt;/p&gt;

&lt;p&gt;At 800 concurrent connections, the p99 latency stayed around &lt;code&gt;12.19ms&lt;/code&gt;, which is a good signal for the current direction of the HTTP runtime.&lt;/p&gt;

&lt;p&gt;This is still an early benchmark, and I will continue testing with different concurrency levels, different endpoints, and more realistic workloads.&lt;/p&gt;

&lt;p&gt;For now, this is a good sign for the &lt;code&gt;v2.7.0&lt;/code&gt; release direction.&lt;/p&gt;

&lt;p&gt;The goal with Vix.cpp is simple: make C++ development feel simpler, faster, and more modern without hiding the power of the language.&lt;/p&gt;

</description>
      <category>vixcpp</category>
      <category>vix</category>
      <category>softadastra</category>
      <category>cpp</category>
    </item>
    <item>
      <title>Softadastra is Becoming The C++ Tooling Company</title>
      <dc:creator>Gaspard Kirira</dc:creator>
      <pubDate>Sun, 21 Jun 2026 09:43:31 +0000</pubDate>
      <link>https://dev.to/gkirira/softadastra-is-becoming-the-c-tooling-company-1emn</link>
      <guid>https://dev.to/gkirira/softadastra-is-becoming-the-c-tooling-company-1emn</guid>
      <description>&lt;h1&gt;
  
  
  Softadastra is Becoming The C++ Tooling Company
&lt;/h1&gt;

&lt;p&gt;Softadastra is changing direction.&lt;/p&gt;

&lt;p&gt;For a long time, the company explored different ideas around software, infrastructure, platforms, and developer products. Each idea had value, but over time one problem became more important than the rest.&lt;/p&gt;

&lt;p&gt;Developer tools are still too dependent on perfect conditions.&lt;/p&gt;

&lt;p&gt;Many modern tools are designed with an invisible assumption: the internet is fast, stable, and always available. That assumption works well in some parts of the world, but it does not represent the reality of many developers.&lt;/p&gt;

&lt;p&gt;In many environments, especially across parts of Africa, the internet can become slow without warning. A connection can drop so low that downloading a dependency, reading documentation, installing a package, or using a cloud service becomes difficult.&lt;/p&gt;

&lt;p&gt;When that happens, the problem is no longer just the code.&lt;/p&gt;

&lt;p&gt;The environment around the code becomes part of the problem.&lt;/p&gt;

&lt;p&gt;That reality has shaped the new direction of Softadastra.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;Modern software development often depends on many external layers.&lt;/p&gt;

&lt;p&gt;A developer creates a project, installs dependencies, configures a build system, connects tools, searches through documentation, runs tests, reads compiler errors, prepares a package, and eventually ships the software.&lt;/p&gt;

&lt;p&gt;When everything works, this process feels normal.&lt;/p&gt;

&lt;p&gt;But when the network is unstable, the machine is limited, or the tooling is too fragmented, even simple work can become unnecessarily hard.&lt;/p&gt;

&lt;p&gt;Softadastra believes developer tooling should be built with more respect for those conditions.&lt;/p&gt;

&lt;p&gt;Tools should not assume that every developer is working with perfect infrastructure. They should help developers keep control of their workflow, understand what is happening, and move faster without fighting the environment.&lt;/p&gt;

&lt;p&gt;That is one reason C++ became the center of this direction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why C++
&lt;/h2&gt;

&lt;p&gt;C++ is powerful, mature, and still deeply important in systems, performance-critical software, embedded environments, infrastructure, desktop applications, game engines, and developer tools.&lt;/p&gt;

&lt;p&gt;But the experience around C++ can still feel difficult.&lt;/p&gt;

&lt;p&gt;Starting a project is not always simple. Build systems can be confusing. Error messages can be hard to understand. Packaging can feel disconnected. Many parts of the workflow require experience before the developer can even become productive.&lt;/p&gt;

&lt;p&gt;Softadastra does not want to make C++ less powerful.&lt;/p&gt;

&lt;p&gt;Softadastra wants to make the experience around C++ better.&lt;/p&gt;

&lt;p&gt;That means helping developers create projects faster, build with more clarity, understand errors sooner, test with less friction, package software more cleanly, and work with tools that feel connected instead of scattered.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vix.cpp as the foundation
&lt;/h2&gt;

&lt;p&gt;Vix.cpp is becoming the foundation of this direction.&lt;/p&gt;

&lt;p&gt;The goal of Vix.cpp is to provide a modern tooling ecosystem around C++ development. It is not only about one command-line tool or one framework. It is about building a coherent developer experience around C++.&lt;/p&gt;

&lt;p&gt;Softadastra wants Vix.cpp to help developers move from idea to working software with fewer obstacles.&lt;/p&gt;

&lt;p&gt;A developer should be able to create a project, build it, test it, inspect errors, manage modules, package the result, and understand the structure of the project without feeling lost in disconnected tools.&lt;/p&gt;

&lt;p&gt;This is the kind of experience Softadastra wants to build.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built from a different reality
&lt;/h2&gt;

&lt;p&gt;Softadastra is not choosing this direction because C++ tooling sounds trendy.&lt;/p&gt;

&lt;p&gt;The direction comes from a real environment.&lt;/p&gt;

&lt;p&gt;When developers build from places where infrastructure is not always reliable, they learn to value control. They learn to value tools that are native, direct, understandable, and less dependent on perfect network conditions.&lt;/p&gt;

&lt;p&gt;That perspective matters.&lt;/p&gt;

&lt;p&gt;The world does not need more developer tools that only work well in ideal environments. It also needs tools designed by people who understand what it means to build when the conditions are not perfect.&lt;/p&gt;

&lt;p&gt;Softadastra wants to bring that perspective into C++ tooling.&lt;/p&gt;

&lt;h2&gt;
  
  
  The mission
&lt;/h2&gt;

&lt;p&gt;Softadastra now has a clear mission:&lt;/p&gt;

&lt;p&gt;To simplify C++ development.&lt;/p&gt;

&lt;p&gt;That mission will guide the company’s work going forward.&lt;/p&gt;

&lt;p&gt;Softadastra will focus on tools, workflows, documentation, diagnostics, packaging, and developer experience around C++.&lt;/p&gt;

&lt;p&gt;The company is no longer trying to become many things at once.&lt;/p&gt;

&lt;p&gt;Softadastra is becoming The C++ Tooling Company.&lt;/p&gt;

&lt;p&gt;And Vix.cpp is the foundation of that future.&lt;/p&gt;

</description>
      <category>softadastra</category>
    </item>
    <item>
      <title>Vix.cpp v2.6.3: Stability, Benchmarks, and a Stronger C++ Runtime</title>
      <dc:creator>Gaspard Kirira</dc:creator>
      <pubDate>Fri, 19 Jun 2026 11:22:19 +0000</pubDate>
      <link>https://dev.to/gkirira/vixcpp-v263-stability-benchmarks-and-a-stronger-c-runtime-45p1</link>
      <guid>https://dev.to/gkirira/vixcpp-v263-stability-benchmarks-and-a-stronger-c-runtime-45p1</guid>
      <description>&lt;h1&gt;
  
  
  Vix.cpp v2.6.3: Stability, Benchmarks, and a Stronger C++ Runtime
&lt;/h1&gt;

&lt;p&gt;Vix.cpp v2.6.3 is now available.&lt;/p&gt;

&lt;p&gt;This release is not about adding a huge new feature.&lt;/p&gt;

&lt;p&gt;It is about making the foundation stronger.&lt;/p&gt;

&lt;p&gt;Vix.cpp is a modern C++ runtime and developer toolkit for building real applications with native C++. It provides a workflow around C++ projects: running files, creating projects, building, testing, packaging, working with modules, and preparing applications for production.&lt;/p&gt;

&lt;p&gt;With v2.6.3, the focus is stability.&lt;/p&gt;

&lt;p&gt;This release improves the Core runtime, shutdown behavior, HTTP sessions, benchmark infrastructure, CI coverage, sanitizer support, module tests, JSON behavior, and several CLI workflows.&lt;/p&gt;

&lt;p&gt;The goal is simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;stabilize the runtime
measure performance
strengthen CI
make failures easier to trust
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why this release matters
&lt;/h2&gt;

&lt;p&gt;A C++ runtime is not only about API design.&lt;/p&gt;

&lt;p&gt;It also has to answer difficult engineering questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does the server shut down correctly?&lt;/li&gt;
&lt;li&gt;Are async operations cancelled safely?&lt;/li&gt;
&lt;li&gt;Do pending tasks finish or get lost?&lt;/li&gt;
&lt;li&gt;Can test failures be trusted?&lt;/li&gt;
&lt;li&gt;Can benchmarks be repeated?&lt;/li&gt;
&lt;li&gt;Does CI test the right source files?&lt;/li&gt;
&lt;li&gt;Do sanitizer builds link and run correctly?&lt;/li&gt;
&lt;li&gt;Can developers run existing CMake projects without fighting the CLI?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vix.cpp v2.6.3 focuses on these areas.&lt;/p&gt;

&lt;p&gt;It is the kind of release that makes the project less flashy, but more serious.&lt;/p&gt;

&lt;h2&gt;
  
  
  Better &lt;code&gt;vix run&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vix run&lt;/code&gt; is one of the most important commands in Vix.cpp.&lt;/p&gt;

&lt;p&gt;It can run a project, a single C++ file, a &lt;code&gt;.vix&lt;/code&gt; manifest, a binary, and other runtime targets.&lt;/p&gt;

&lt;p&gt;In v2.6.3, executable resolution is more reliable for CMake projects.&lt;/p&gt;

&lt;p&gt;Before, some projects could fail when the generated binary name did not match the project folder name.&lt;/p&gt;

&lt;p&gt;Now &lt;code&gt;vix run&lt;/code&gt; can resolve runnable executables more generically.&lt;/p&gt;

&lt;p&gt;This also improves project watch mode, because the development workflow no longer assumes that the output binary must have the same name as the directory.&lt;/p&gt;

&lt;p&gt;This matters for real CMake projects.&lt;/p&gt;

&lt;p&gt;Not every C++ project is generated by Vix. Vix should work with existing C++ projects too.&lt;/p&gt;

&lt;h2&gt;
  
  
  Better &lt;code&gt;vix tests&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Long-running test suites need good progress output.&lt;/p&gt;

&lt;p&gt;v2.6.3 improves &lt;code&gt;vix tests&lt;/code&gt; so it can show clearer progress during long CTest runs.&lt;/p&gt;

&lt;p&gt;The output can now show useful state such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;completed
total
running
elapsed time
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This release also fixes interruption handling.&lt;/p&gt;

&lt;p&gt;When the user presses &lt;code&gt;Ctrl+C&lt;/code&gt;, Vix now treats it as a user interruption instead of reporting it as a normal test failure.&lt;/p&gt;

&lt;p&gt;That distinction matters.&lt;/p&gt;

&lt;p&gt;A test failure means the code is wrong.&lt;/p&gt;

&lt;p&gt;A user interruption means the user stopped the run.&lt;/p&gt;

&lt;p&gt;The CLI should not confuse those two situations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Core lifecycle fixes
&lt;/h2&gt;

&lt;p&gt;One of the most important parts of this release is Core lifecycle stability.&lt;/p&gt;

&lt;p&gt;The Core module is the foundation used by Vix HTTP applications. It connects the public application API with routing, sessions, async I/O, runtime execution, server lifecycle, middleware, requests, responses, and configuration.&lt;/p&gt;

&lt;p&gt;v2.6.3 improves shutdown behavior across:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;vix::App&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;HTTP server lifecycle&lt;/li&gt;
&lt;li&gt;runtime executor shutdown&lt;/li&gt;
&lt;li&gt;async TCP services&lt;/li&gt;
&lt;li&gt;scheduler shutdown paths&lt;/li&gt;
&lt;li&gt;pending coroutine operations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some of the important lifecycle fixes include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;App::close()&lt;/code&gt; is now terminal, idempotent, and safe before or after &lt;code&gt;listen()&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;App::wait()&lt;/code&gt; now closes the running server on signal-stop paths.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;App::listen()&lt;/code&gt; prevents closed app instances from being restarted accidentally.&lt;/li&gt;
&lt;li&gt;HTTP server shutdown ordering is safer.&lt;/li&gt;
&lt;li&gt;The accept loop is allowed to drain before stopping the async I/O context.&lt;/li&gt;
&lt;li&gt;TCP listener teardown is safer.&lt;/li&gt;
&lt;li&gt;Server readiness is marked only after the accept loop starts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are not cosmetic changes.&lt;/p&gt;

&lt;p&gt;They make the runtime more predictable under tests, shutdown races, signal stops, and sanitizer instrumentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  HTTP session hardening
&lt;/h2&gt;

&lt;p&gt;v2.6.3 also improves HTTP session behavior.&lt;/p&gt;

&lt;p&gt;The release fixes parsing and error-response edge cases for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;malformed requests&lt;/li&gt;
&lt;li&gt;invalid content lengths&lt;/li&gt;
&lt;li&gt;oversized payloads&lt;/li&gt;
&lt;li&gt;unexpected EOF bodies&lt;/li&gt;
&lt;li&gt;case-insensitive &lt;code&gt;Connection: close&lt;/code&gt; handling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A framework is easy to test when every request is valid.&lt;/p&gt;

&lt;p&gt;Real servers need to behave correctly when clients send bad data, partial data, or edge-case protocol input.&lt;/p&gt;

&lt;p&gt;This release makes that layer stronger.&lt;/p&gt;

&lt;h2&gt;
  
  
  Async shutdown improvements
&lt;/h2&gt;

&lt;p&gt;Async shutdown bugs can be difficult to reproduce.&lt;/p&gt;

&lt;p&gt;They often appear only under sanitizers, Valgrind, slow CI machines, or very specific timing conditions.&lt;/p&gt;

&lt;p&gt;v2.6.3 improves async TCP shutdown behavior by making close paths safer.&lt;/p&gt;

&lt;p&gt;The async TCP stream now cancels pending operations, shuts down the socket, and closes it safely.&lt;/p&gt;

&lt;p&gt;The async TCP listener now cancels and closes the acceptor through the Asio executor.&lt;/p&gt;

&lt;p&gt;Pending accepts keep the acceptor alive until completion handlers finish.&lt;/p&gt;

&lt;p&gt;The scheduler shutdown behavior is also improved so pending coroutine handles are not silently destroyed before completion paths can run.&lt;/p&gt;

&lt;p&gt;This helps make the runtime safer when applications stop quickly or when tests force lifecycle edge cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  Runtime executor fixes
&lt;/h2&gt;

&lt;p&gt;The runtime executor also receives important fixes.&lt;/p&gt;

&lt;p&gt;Pending posted tasks are now drained before workers stop.&lt;/p&gt;

&lt;p&gt;Idle detection now tracks accepted in-flight tasks before they begin execution.&lt;/p&gt;

&lt;p&gt;This avoids a dangerous class of runtime bugs where the executor could appear idle while work had already been accepted but had not started yet.&lt;/p&gt;

&lt;p&gt;The runtime worker shutdown path was also improved when yielding tasks are being rescheduled.&lt;/p&gt;

&lt;p&gt;This makes task execution and shutdown more deterministic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Official Core benchmark suite
&lt;/h2&gt;

&lt;p&gt;v2.6.3 adds an official benchmark suite for Vix Core.&lt;br&gt;
This is one of the most important changes in the release.&lt;br&gt;
Performance should not be based on feelings.&lt;br&gt;
It should be measured, stored, compared, and protected.&lt;/p&gt;

&lt;p&gt;The Core benchmark suite covers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;runtime.task
runtime.queue
runtime.scheduler
runtime.worker

executor.submit
executor.post
executor.metrics

router.match
router.registration

http.request
http.response

session.fake_transport

app.route_registration
app.group_registration
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The release also adds shared benchmark utilities for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;median time&lt;/li&gt;
&lt;li&gt;mean time&lt;/li&gt;
&lt;li&gt;operations per second&lt;/li&gt;
&lt;li&gt;warmup iterations&lt;/li&gt;
&lt;li&gt;measured samples&lt;/li&gt;
&lt;li&gt;JSON report generation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This gives Vix.cpp a repeatable performance workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Official v2.6.3 benchmark baseline
&lt;/h2&gt;

&lt;p&gt;The official Core v2.6.3 Release benchmark baseline is stored under:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;modules/core/benchmarks/baselines/v2.6.3/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The baseline was generated in Release mode on Linux x86_64 with GCC 13.3.0.&lt;/p&gt;

&lt;p&gt;Benchmark comparison uses:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;median_ops_per_sec
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Higher is better.&lt;/p&gt;

&lt;p&gt;Default thresholds:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;WARN = -5%
FAIL = -10%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The benchmark workflow includes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;scripts/run_core_benchmarks.sh
scripts/compare_core_benchmarks.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That means future changes can be compared against a known baseline.&lt;/p&gt;

&lt;p&gt;If performance improves, it is visible.&lt;br&gt;
If performance regresses, it is visible.&lt;/p&gt;

&lt;p&gt;That is the point.&lt;/p&gt;
&lt;h2&gt;
  
  
  Release builds for real measurements
&lt;/h2&gt;

&lt;p&gt;v2.6.3 also documents an important rule:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dev/debug = compile, test, debug
release   = measure performance
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Debug builds are useful for development.&lt;br&gt;
They are not useful for official performance numbers.&lt;br&gt;
Official benchmark baselines should come from Release builds only.&lt;br&gt;
This is the kind of rule that keeps performance discussions honest.&lt;/p&gt;
&lt;h2&gt;
  
  
  Stricter CI
&lt;/h2&gt;

&lt;p&gt;v2.6.3 strengthens CI in several areas.&lt;/p&gt;

&lt;p&gt;Core now has stricter coverage for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;debug/runtime builds&lt;/li&gt;
&lt;li&gt;sanitizer builds&lt;/li&gt;
&lt;li&gt;Valgrind memory checks&lt;/li&gt;
&lt;li&gt;static analysis&lt;/li&gt;
&lt;li&gt;benchmark builds&lt;/li&gt;
&lt;li&gt;package export validation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The release also improves sanitizer coverage for Core lifecycle, shutdown, executor, session, server, and app behavior.&lt;/p&gt;

&lt;p&gt;This matters because lifecycle bugs in C++ are often invisible until sanitizers or memory tools run the code under different timing conditions.&lt;/p&gt;
&lt;h2&gt;
  
  
  Better static analysis scope
&lt;/h2&gt;

&lt;p&gt;Strict static analysis is useful only when it analyzes the right code.&lt;/p&gt;

&lt;p&gt;v2.6.3 improves static analysis scope so third-party files, generated files, examples, benchmarks, and tests are not treated as blocking project source analysis.&lt;/p&gt;

&lt;p&gt;This prevents vendored dependencies or disabled optional backends from blocking the release with irrelevant warnings.&lt;/p&gt;

&lt;p&gt;The goal is not to make CI weaker.&lt;br&gt;
The goal is to make CI stricter where it matters.&lt;/p&gt;

&lt;p&gt;Blocking analysis now focuses on project source files and module implementation sources.&lt;/p&gt;

&lt;p&gt;Style-only findings can still be reported separately without blocking the release.&lt;/p&gt;
&lt;h2&gt;
  
  
  Broader module test coverage
&lt;/h2&gt;

&lt;p&gt;v2.6.3 improves module-level test coverage across the Vix ecosystem.&lt;/p&gt;

&lt;p&gt;SECURITY_CI now builds and runs tests inside module directories instead of relying only on root-level test discovery.&lt;/p&gt;

&lt;p&gt;This is important because many modules keep their tests close to the module itself.&lt;/p&gt;

&lt;p&gt;The release also improves sanitizer-ready test coverage across modules such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;async
cache
conversion
crypto
env
error
fs
game
io
json
kv
log
middleware
os
path
p2p
process
sync
template
tests
threadpool
time
validation
webrpc
websocket
agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes the whole project more reliable as a modular C++ codebase.&lt;/p&gt;

&lt;h2&gt;
  
  
  JSON fixes
&lt;/h2&gt;

&lt;p&gt;The JSON module receives an important JPath parsing fix.&lt;/p&gt;

&lt;p&gt;Paths after bracket segments now parse correctly.&lt;/p&gt;

&lt;p&gt;Examples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;users[0].email
["complex.key"].value
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The release also improves JSON module testing, benchmark coverage, examples, and documentation.&lt;/p&gt;

&lt;p&gt;This matters because JSON is a core part of many backend and tooling workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Threadpool determinism
&lt;/h2&gt;

&lt;p&gt;The threadpool module receives several deterministic behavior fixes.&lt;/p&gt;

&lt;p&gt;v2.6.3 improves future handling for pre-cancelled and queued-cancelled tasks so they resolve deterministically instead of hanging.&lt;/p&gt;

&lt;p&gt;Cancellation paths now report cancellation through the associated future.&lt;/p&gt;

&lt;p&gt;Tests were also fixed so they do not assume asynchronous work finishes immediately after posting.&lt;/p&gt;

&lt;p&gt;That is important.&lt;/p&gt;

&lt;p&gt;Threadpool tests should prove behavior, not depend on timing luck.&lt;/p&gt;

&lt;h2&gt;
  
  
  Highlights
&lt;/h2&gt;

&lt;p&gt;Here are the main highlights of Vix.cpp v2.6.3:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Improved Core lifecycle and shutdown behavior.&lt;/li&gt;
&lt;li&gt;Fixed HTTP session edge cases.&lt;/li&gt;
&lt;li&gt;Improved async TCP close and shutdown behavior.&lt;/li&gt;
&lt;li&gt;Fixed runtime executor shutdown and idle detection.&lt;/li&gt;
&lt;li&gt;Added the official Core benchmark suite.&lt;/li&gt;
&lt;li&gt;Added the official Core v2.6.3 benchmark baseline.&lt;/li&gt;
&lt;li&gt;Added benchmark run and comparison scripts.&lt;/li&gt;
&lt;li&gt;Improved &lt;code&gt;vix run&lt;/code&gt; executable discovery.&lt;/li&gt;
&lt;li&gt;Improved &lt;code&gt;vix tests&lt;/code&gt; progress and interruption handling.&lt;/li&gt;
&lt;li&gt;Fixed JSON JPath parsing after bracket segments.&lt;/li&gt;
&lt;li&gt;Strengthened Core test layout.&lt;/li&gt;
&lt;li&gt;Expanded sanitizer coverage across modules.&lt;/li&gt;
&lt;li&gt;Improved static analysis scope.&lt;/li&gt;
&lt;li&gt;Fixed sanitizer linking for module tests.&lt;/li&gt;
&lt;li&gt;Made threadpool cancellation behavior more deterministic.&lt;/li&gt;
&lt;li&gt;Improved CI so it is strict without blocking on irrelevant files.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why this matters for C++
&lt;/h2&gt;

&lt;p&gt;C++ gives developers performance and control.&lt;/p&gt;

&lt;p&gt;But building real applications in C++ often requires a lot of repeated infrastructure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;build workflows&lt;/li&gt;
&lt;li&gt;test workflows&lt;/li&gt;
&lt;li&gt;runtime diagnostics&lt;/li&gt;
&lt;li&gt;dependency management&lt;/li&gt;
&lt;li&gt;packaging&lt;/li&gt;
&lt;li&gt;production checks&lt;/li&gt;
&lt;li&gt;benchmark tracking&lt;/li&gt;
&lt;li&gt;CI configuration&lt;/li&gt;
&lt;li&gt;module boundaries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vix.cpp exists to make that application layer more consistent.&lt;/p&gt;

&lt;p&gt;v2.6.3 is a step toward that goal.&lt;br&gt;
It makes Vix.cpp less fragile and more measurable.&lt;br&gt;
It also makes the project more honest.&lt;br&gt;
If performance changes, benchmarks should show it.&lt;br&gt;
If shutdown breaks, tests should catch it.&lt;/p&gt;

&lt;p&gt;If CI fails, it should fail for the right reason.&lt;/p&gt;
&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;GitHub repository:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/vixcpp/vix" rel="noopener noreferrer"&gt;https://github.com/vixcpp/vix&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Release notes:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.vixcpp.com/posts/changelog/v2.6.3" rel="noopener noreferrer"&gt;https://blog.vixcpp.com/posts/changelog/v2.6.3&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Core benchmark baseline article:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.vixcpp.com/posts/vix-core/vix-core-benchmark-baseline-v263" rel="noopener noreferrer"&gt;https://blog.vixcpp.com/posts/vix-core/vix-core-benchmark-baseline-v263&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Documentation:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.vixcpp.com" rel="noopener noreferrer"&gt;https://docs.vixcpp.com&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Final note
&lt;/h2&gt;

&lt;p&gt;Vix.cpp v2.6.3 is not a flashy release.&lt;/p&gt;

&lt;p&gt;It is an engineering release.&lt;/p&gt;

&lt;p&gt;It improves the parts of a C++ runtime that must be trustworthy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;runtime stability
shutdown behavior
tests
benchmarks
CI
sanitizers
diagnostics
module reliability
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is the long-term direction of Vix.cpp:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;native C++
modern workflow
measured performance
strict CI
production-oriented reliability
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;C++ deserves serious tooling.&lt;/p&gt;

</description>
      <category>cpp</category>
      <category>news</category>
      <category>performance</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Building an Official Performance Baseline for Vix.cpp Core v2.6.3</title>
      <dc:creator>Gaspard Kirira</dc:creator>
      <pubDate>Tue, 16 Jun 2026 07:38:26 +0000</pubDate>
      <link>https://dev.to/gkirira/building-an-official-performance-baseline-for-vixcpp-core-v263-amh</link>
      <guid>https://dev.to/gkirira/building-an-official-performance-baseline-for-vixcpp-core-v263-amh</guid>
      <description>&lt;h1&gt;
  
  
  Vix.cpp Core v2.6.3: Official Benchmark Baseline
&lt;/h1&gt;

&lt;p&gt;Today I reached an important milestone with Vix.cpp Core.&lt;/p&gt;

&lt;p&gt;For the first time, I now have an official benchmark baseline for &lt;strong&gt;Vix.cpp Core v2.6.3&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This baseline was generated in &lt;strong&gt;Release mode&lt;/strong&gt; on &lt;strong&gt;Linux x86_64&lt;/strong&gt; using &lt;strong&gt;GCC 13.3.0&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The goal is simple:&lt;/p&gt;

&lt;p&gt;I do not want to say “Vix is fast” only because it feels fast on my machine.&lt;/p&gt;

&lt;p&gt;I want performance to be measured, tracked, compared, and protected.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;When building a C++ framework, performance can easily regress without being noticed.&lt;/p&gt;

&lt;p&gt;You change a router function.&lt;br&gt;
You improve an executor.&lt;br&gt;
You refactor request parsing.&lt;br&gt;
You clean up response serialization.&lt;/p&gt;

&lt;p&gt;Everything still compiles.&lt;br&gt;
All tests still pass.&lt;/p&gt;

&lt;p&gt;But maybe the router is now 15% slower.&lt;br&gt;
Maybe request construction got heavier.&lt;br&gt;
Maybe the runtime scheduler is doing more work than before.&lt;/p&gt;

&lt;p&gt;Without benchmarks, you may not see it.&lt;/p&gt;

&lt;p&gt;With a baseline, every future change can be compared against a known reference.&lt;/p&gt;

&lt;p&gt;That is why I started building the official Vix.cpp Core benchmark suite.&lt;/p&gt;
&lt;h2&gt;
  
  
  What is currently benchmarked
&lt;/h2&gt;

&lt;p&gt;The benchmark suite currently covers several parts of Vix.cpp Core:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;runtime queues&lt;/li&gt;
&lt;li&gt;runtime scheduler&lt;/li&gt;
&lt;li&gt;runtime workers&lt;/li&gt;
&lt;li&gt;executor submit/post&lt;/li&gt;
&lt;li&gt;executor metrics&lt;/li&gt;
&lt;li&gt;router matching&lt;/li&gt;
&lt;li&gt;router registration&lt;/li&gt;
&lt;li&gt;HTTP request handling&lt;/li&gt;
&lt;li&gt;HTTP response generation&lt;/li&gt;
&lt;li&gt;fake transport sessions&lt;/li&gt;
&lt;li&gt;app route registration&lt;/li&gt;
&lt;li&gt;app group registration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This gives me visibility across both low-level primitives and higher-level web framework behavior.&lt;/p&gt;
&lt;h2&gt;
  
  
  Some results from the v2.6.3 baseline
&lt;/h2&gt;

&lt;p&gt;Here are some numbers from the current Release baseline.&lt;/p&gt;
&lt;h3&gt;
  
  
  Runtime
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;runtime.queue/try_steal_empty                    132.6M ops/sec
runtime.queue/push_pop                            49.6M ops/sec
runtime.worker/steal_callback_complete_tasks       9.3M ops/sec
runtime.scheduler/submit_affinity_tasks            1.07M ops/sec
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Router
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;router.match/static_route          9.37M ops/sec
router.match/nested_static_route   8.17M ops/sec
router.match/param_route           5.67M ops/sec
router.match/nested_param_route    3.91M ops/sec
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This is useful because it shows the natural cost difference between static routes and parameterized routes.&lt;/p&gt;

&lt;p&gt;A static route is faster.&lt;br&gt;
A nested parameterized route is more expensive.&lt;br&gt;
That is expected, but now it is measured.&lt;/p&gt;
&lt;h3&gt;
  
  
  Executor
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;executor.metrics/idle_reads        112.2M ops/sec
executor.submit/task_complete        465K ops/sec
executor.post/void_tasks             397K ops/sec
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The executor benchmarks help track the cost of scheduling work, posting tasks, reading metrics, and handling different task execution paths.&lt;/p&gt;
&lt;h3&gt;
  
  
  HTTP
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http.request/default_construct       10.7M ops/sec
http.request/json_cached_access      15.7M ops/sec
http.response/to_http_string_json    1.02M ops/sec
http.response/to_http_string_text     547K ops/sec
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;These benchmarks help protect the request and response layer, which is critical for Vix.cpp web applications.&lt;/p&gt;
&lt;h3&gt;
  
  
  Session
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;session.fake_transport/single_get_health      146K ops/sec
session.fake_transport/keep_alive_pipeline    248K ops/sec
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This gives a higher-level view of request processing using an in-memory fake transport.&lt;/p&gt;

&lt;p&gt;It is not the same as a real network benchmark, but it is very useful for tracking framework overhead without depending on external network noise.&lt;/p&gt;
&lt;h2&gt;
  
  
  Build mode matters
&lt;/h2&gt;

&lt;p&gt;One important lesson: official benchmarks must not be generated from a debug/dev build.&lt;/p&gt;

&lt;p&gt;A dev build is useful for testing and debugging, but not for official performance numbers.&lt;/p&gt;

&lt;p&gt;For Vix.cpp Core, the rule is now:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dev / debug = compile, test, debug
release     = measure performance
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The official baseline must come from a Release build.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I want to use this
&lt;/h2&gt;

&lt;p&gt;From now on, when I make a serious change inside Vix.cpp Core, I can run the benchmarks again and compare them against the v2.6.3 baseline.&lt;/p&gt;

&lt;p&gt;If performance improves, I can prove it.&lt;br&gt;
If performance gets worse, I can see it.&lt;br&gt;
If a regression appears, it should not be ignored.&lt;/p&gt;

&lt;p&gt;This changes the development workflow.&lt;/p&gt;

&lt;p&gt;It moves performance from opinion to evidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I care about this
&lt;/h2&gt;

&lt;p&gt;Vix.cpp is not only a C++ experiment for me.&lt;/p&gt;

&lt;p&gt;I want it to become a serious foundation for building web services, runtime systems, tooling, and production applications.&lt;/p&gt;

&lt;p&gt;For that, tests are not enough.&lt;br&gt;
Documentation is not enough.&lt;br&gt;
The framework also needs measurable performance discipline.&lt;br&gt;
Benchmarks help create that discipline.&lt;br&gt;
They make the project more honest.&lt;br&gt;
They make future changes safer.&lt;br&gt;
They make performance visible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thought
&lt;/h2&gt;

&lt;p&gt;Performance should not be based on feelings.&lt;/p&gt;

&lt;p&gt;It should be measured.&lt;br&gt;
It should be tracked.&lt;br&gt;
It should be protected.&lt;/p&gt;

&lt;p&gt;This v2.6.3 benchmark baseline is one step in that direction.&lt;/p&gt;

&lt;p&gt;Vix.cpp is moving forward.&lt;/p&gt;

</description>
      <category>cpp</category>
      <category>performance</category>
      <category>benchmarking</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Vix.cpp v2.6.2: C++ Developer Toolkit Release with Windows SDK Installer Fix</title>
      <dc:creator>Gaspard Kirira</dc:creator>
      <pubDate>Thu, 11 Jun 2026 08:57:19 +0000</pubDate>
      <link>https://dev.to/gkirira/vixcpp-v262-c-developer-toolkit-release-with-windows-sdk-installer-fix-5gf9</link>
      <guid>https://dev.to/gkirira/vixcpp-v262-c-developer-toolkit-release-with-windows-sdk-installer-fix-5gf9</guid>
      <description>&lt;h1&gt;
  
  
  Vix.cpp v2.6.2: C++ Developer Toolkit Release with Windows SDK Installer Fix
&lt;/h1&gt;

&lt;p&gt;C++ development should not feel fragile from the first install step.&lt;/p&gt;

&lt;p&gt;Today, we released &lt;strong&gt;Vix.cpp v2.6.2&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This release is focused on stability, packaging, registry workflows, dependency management, and better diagnostics around the commands developers use every day.&lt;/p&gt;

&lt;p&gt;Vix.cpp is a modern C++ runtime and developer toolkit. The goal is to make C++ more practical for real projects: build, run, test, install dependencies, publish packages, deploy services, and debug issues with clearer feedback.&lt;/p&gt;

&lt;h2&gt;
  
  
  Windows SDK installer fix
&lt;/h2&gt;

&lt;p&gt;One important fix in this release is the Windows SDK installer.&lt;/p&gt;

&lt;p&gt;A user reported that the PowerShell installer was failing with a &lt;code&gt;Not Found&lt;/code&gt; error while trying to download:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vix-sdk-windows-x86_64.zip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The report was correct.&lt;/p&gt;

&lt;p&gt;The installer was trying to install the Windows SDK, but the release pipeline was not publishing the Windows SDK archive. It was publishing the Linux SDK asset, but not the Windows one.&lt;/p&gt;

&lt;p&gt;This is fixed in &lt;strong&gt;v2.6.2&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The Windows SDK archive is now built, packaged, checksummed, signed, and uploaded as part of the release.&lt;/p&gt;

&lt;p&gt;So this should now work correctly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;irm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://vixcpp.com/install.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also force the version explicitly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$&lt;/span&gt;&lt;span class="nn"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nv"&gt;VIX_VERSION&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"v2.6.2"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;irm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://vixcpp.com/install.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Better dependency workflows
&lt;/h2&gt;

&lt;p&gt;This release also improves several registry and dependency commands.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;vix update&lt;/code&gt; now respects version constraints declared in &lt;code&gt;vix.json&lt;/code&gt;. It no longer blindly resolves direct dependencies to the latest registry version when a project has already declared constraints.&lt;/p&gt;

&lt;p&gt;It also avoids reprocessing every dependency when only some dependencies actually need updates.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;vix install&lt;/code&gt; now reports only dependencies that were actually installed or relinked. This makes the output much clearer, especially when working with an existing &lt;code&gt;vix.lock&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;vix list&lt;/code&gt; and &lt;code&gt;vix outdated&lt;/code&gt; now show direct project dependencies by default. If you want the full locked dependency graph, you can still use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vix list &lt;span class="nt"&gt;--all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vix outdated &lt;span class="nt"&gt;--all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes the default output more useful for normal project maintenance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Better &lt;code&gt;vix run&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vix run&lt;/code&gt; now works better with generic CMake projects.&lt;/p&gt;

&lt;p&gt;Before, it could assume that the executable name matched the folder or project name. That is not always true.&lt;/p&gt;

&lt;p&gt;Now it detects and runs the executable produced by the build, which makes &lt;code&gt;vix run&lt;/code&gt; more useful outside of perfectly shaped Vix projects too.&lt;/p&gt;

&lt;h2&gt;
  
  
  Better diagnostics
&lt;/h2&gt;

&lt;p&gt;v2.6.2 also improves diagnostics in multiple places.&lt;/p&gt;

&lt;p&gt;CMake errors with multi-line &lt;code&gt;message(FATAL_ERROR ...)&lt;/code&gt; output are now displayed more clearly instead of being collapsed into unreadable one-line messages.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;vix tests&lt;/code&gt; failure output is now easier to understand. Failed test names, source locations, focused error messages, and compact code frames are summarized better.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;vix.app&lt;/code&gt; also gives clearer errors when &lt;code&gt;.vix/vix_deps.cmake&lt;/code&gt; is missing or when a required resource does not exist.&lt;/p&gt;

&lt;p&gt;The goal is simple: when something fails, the tool should help you understand the problem faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  Registry and package improvements
&lt;/h2&gt;

&lt;p&gt;This release improves transitive registry dependency propagation.&lt;/p&gt;

&lt;p&gt;For example, packages like &lt;code&gt;rix/rix&lt;/code&gt; can expose dependencies such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rix/csv
rix/debug
rix/auth
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;without forcing every application to list all of them manually.&lt;/p&gt;

&lt;p&gt;This is important for the direction of the Vix and Rix ecosystem.&lt;/p&gt;

&lt;p&gt;Rix is the official package namespace for optional Vix.cpp libraries in the Vix registry. As more packages are added, dependency propagation needs to feel reliable and predictable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Crypto helpers
&lt;/h2&gt;

&lt;p&gt;v2.6.2 also adds new crypto helpers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;constant-time byte comparison helpers&lt;/li&gt;
&lt;li&gt;PBKDF2-HMAC-SHA256 password hashing and verification helpers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are small but important building blocks for security-sensitive code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this release matters
&lt;/h2&gt;

&lt;p&gt;Not every release needs to be about a big visible feature.&lt;/p&gt;

&lt;p&gt;Sometimes the important work is making the normal workflow more reliable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;install
build
run
test
install dependencies
update dependencies
publish packages
deploy
debug
repeat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is what v2.6.2 is about.&lt;/p&gt;

&lt;p&gt;Vix.cpp is still moving toward the same goal: a modern C++ runtime and developer toolkit that is practical for real applications, not just demos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;GitHub repo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/vixcpp/vix" rel="noopener noreferrer"&gt;https://github.com/vixcpp/vix&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Release:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/vixcpp/vix/releases/tag/v2.6.2" rel="noopener noreferrer"&gt;https://github.com/vixcpp/vix/releases/tag/v2.6.2&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Website:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://vixcpp.com" rel="noopener noreferrer"&gt;https://vixcpp.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cpp</category>
      <category>news</category>
      <category>showdev</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Why I Started Building Vix.cpp</title>
      <dc:creator>Gaspard Kirira</dc:creator>
      <pubDate>Thu, 04 Jun 2026 04:35:14 +0000</pubDate>
      <link>https://dev.to/gkirira/why-i-started-building-vixcpp-1fem</link>
      <guid>https://dev.to/gkirira/why-i-started-building-vixcpp-1fem</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm4co90tksjy0jghm1zsj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm4co90tksjy0jghm1zsj.png" alt=" " width="800" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Why I Started Building Vix.cpp
&lt;/h1&gt;

&lt;p&gt;C++ is one of the most powerful programming languages in the world.&lt;/p&gt;

&lt;p&gt;It powers databases, browsers, operating systems, game engines, financial systems, and countless performance-critical applications.&lt;/p&gt;

&lt;p&gt;Yet many developers still struggle with the same problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Project setup is often more complicated than writing code.&lt;/li&gt;
&lt;li&gt;Dependency management is fragmented.&lt;/li&gt;
&lt;li&gt;Build workflows vary from project to project.&lt;/li&gt;
&lt;li&gt;New developers face a steep learning curve before they can build real applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After working on multiple C++ projects, I kept running into the same question:&lt;/p&gt;

&lt;p&gt;Why is it easier to start a project in many modern languages than in C++?&lt;/p&gt;

&lt;p&gt;That question eventually led me to start building Vix.cpp.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Vix.cpp?
&lt;/h2&gt;

&lt;p&gt;Vix.cpp is a modern C++ runtime and developer toolkit.&lt;/p&gt;

&lt;p&gt;The goal is not to replace C++.&lt;/p&gt;

&lt;p&gt;The goal is to make building applications in C++ simpler, faster, and more productive.&lt;/p&gt;

&lt;p&gt;With Vix.cpp, developers get a unified workflow for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating projects&lt;/li&gt;
&lt;li&gt;Managing dependencies&lt;/li&gt;
&lt;li&gt;Running applications&lt;/li&gt;
&lt;li&gt;Building releases&lt;/li&gt;
&lt;li&gt;Running tests&lt;/li&gt;
&lt;li&gt;Formatting code&lt;/li&gt;
&lt;li&gt;Packaging software&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All while staying fully compatible with the existing C++ ecosystem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why another tool?
&lt;/h2&gt;

&lt;p&gt;Most C++ developers spend a significant amount of time dealing with infrastructure around their code.&lt;/p&gt;

&lt;p&gt;Build configuration.&lt;br&gt;
Dependency setup.&lt;br&gt;
Project structure.&lt;br&gt;
Tool integration.&lt;/p&gt;

&lt;p&gt;These things are important, but they should not slow down application development.&lt;/p&gt;

&lt;p&gt;Vix.cpp aims to reduce that friction.&lt;/p&gt;

&lt;p&gt;Instead of spending time wiring tools together, developers can focus on building software.&lt;/p&gt;

&lt;h2&gt;
  
  
  The philosophy behind Vix.cpp
&lt;/h2&gt;

&lt;p&gt;Several ideas guide the project:&lt;/p&gt;

&lt;h3&gt;
  
  
  Keep C++ native
&lt;/h3&gt;

&lt;p&gt;Vix.cpp does not try to invent a new language.&lt;/p&gt;

&lt;p&gt;Developers still write standard C++.&lt;/p&gt;

&lt;h3&gt;
  
  
  Make the common path simple
&lt;/h3&gt;

&lt;p&gt;Many tasks should require a single command instead of multiple configuration steps.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stay compatible
&lt;/h3&gt;

&lt;p&gt;Existing compilers, libraries, and tooling should continue to work.&lt;/p&gt;

&lt;h3&gt;
  
  
  Improve developer experience
&lt;/h3&gt;

&lt;p&gt;Good tooling helps developers move faster without sacrificing control.&lt;/p&gt;

&lt;h2&gt;
  
  
  Current status
&lt;/h2&gt;

&lt;p&gt;Vix.cpp already includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A modern CLI workflow&lt;/li&gt;
&lt;li&gt;Package management&lt;/li&gt;
&lt;li&gt;Project templates&lt;/li&gt;
&lt;li&gt;Build automation&lt;/li&gt;
&lt;li&gt;Testing workflows&lt;/li&gt;
&lt;li&gt;Formatting tools&lt;/li&gt;
&lt;li&gt;JSON support&lt;/li&gt;
&lt;li&gt;Database tooling&lt;/li&gt;
&lt;li&gt;REPL support&lt;/li&gt;
&lt;li&gt;AI tooling experiments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project continues to evolve every week.&lt;/p&gt;

&lt;h2&gt;
  
  
  Looking forward
&lt;/h2&gt;

&lt;p&gt;Vix.cpp is still early in its journey.&lt;br&gt;
There is a lot left to build.&lt;br&gt;
But the vision remains simple:&lt;/p&gt;

&lt;p&gt;Make C++ development more accessible, productive, and enjoyable while keeping the power and performance that make C++ unique.&lt;/p&gt;

&lt;p&gt;If that sounds interesting to you, I'd love to hear your thoughts.&lt;/p&gt;

&lt;p&gt;GitHub:&lt;br&gt;
&lt;a href="https://github.com/vixcpp/vix" rel="noopener noreferrer"&gt;https://github.com/vixcpp/vix&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Documentation:&lt;br&gt;
&lt;a href="https://docs.vixcpp.com" rel="noopener noreferrer"&gt;https://docs.vixcpp.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>cpp</category>
      <category>productivity</category>
      <category>vixcpp</category>
    </item>
  </channel>
</rss>
