Dependency-light JSON lane
core, json, and file_io_sync. The liburing-free generated-header install publishes only dependency-light components.
Evidence: full ASAN/UBSAN/TSAN closure, generated headers, package smoke.
Conflux is a modules-first, Linux-only C++23-baseline runtime, JSON, and HTTP library built around io_uring. This preview is pre-v1: APIs may still change, and public support is scoped to the release SKUs and evidence lanes below.
The release-facing contract is the documented SKU set, not every internal or experimental component in the tree.
core, json, and file_io_sync. The liburing-free generated-header install publishes only dependency-light components.
Evidence: full ASAN/UBSAN/TSAN closure, generated headers, package smoke.
core, json, and http. Real-liburing producer installs may publish runtime-facing package components such as work and http.
Use: find_package(conflux REQUIRED COMPONENTS http json).
HTTP framework behavior, lifecycle, static/SSE/WebSocket examples, observability docs, and deployment-facing configuration.
Evidence: closure artifacts plus Docker conformance lane.
pg is intentionally outside this tag's advertised package component set because PostgreSQL evidence is not attached.
Rule: advertise pg only when DB evidence is attached and successful.
These panels use quickstart code from examples/quickstart/; the JSON CRUD panel is excerpted.
The JSON CRUD panel is excerpted from the longer quickstart; the other panels show the full concise files.
import conflux;import std;int main() { namespace http = conflux::http; auto app = http::app(); app.get("/", [] { return http::text("hello from conflux\n"); }); app.get<"/hello/{name}">( [](http::Path<"name"> name) { return http::html(std::format("<h1>Hello, {}!</h1>", name.get())); }); return http::exit_code(std::move(app).run({.port = 9090}));}struct Todo { std::int64_t id{}; std::string title; bool done{};};struct CreateTodo { std::string title;};int main() { auto app = http::app(); auto store = std::make_shared<TodoStore>(); app.state(store); app.get("/todos", [](http::State<TodoStore> store) { std::lock_guard lock{store->mu}; return http::json(TodoList{.items = store->todos}); }); app.get<"/todos/{id:i64}">( [](std::int64_t id, http::State<TodoStore> store) -> http::Result<http::Json<Todo>> { std::lock_guard lock{store->mu}; auto it = std::ranges::find(store->todos, id, &Todo::id); if (it == store->todos.end()) { return std::unexpected{http::problem::not_found("todo_not_found", "todo not found")}; } return http::json(*it); }); app.post("/todos", [](http::Json<CreateTodo> const &body, http::State<TodoStore> store) -> http::Result<http::CreatedBody<Todo>> { if (body->title.empty()) { return std::unexpected{http::problem::bad_request("invalid_todo", "title is required")}; } std::lock_guard lock{store->mu}; auto todo = Todo{.id = store->next_id++, .title = body->title}; store->todos.push_back(todo); return http::created(todo).location(std::format("/todos/{}", todo.id)); }); return http::exit_code(std::move(app).run({.port = 9110}));}JsonMembers mappings for Todo, TodoList, and CreateTodo.import conflux;import std;// NOLINTNEXTLINE(bugprone-exception-escape) -- quickstart setup can allocate before the noexcept run boundary.int main() noexcept { namespace http = conflux::http; auto app = http::app(); app.use(http::request_id()); app.get("/", [] { return http::text("quickstart middleware\n"); }); app.get("/request-id", [](http::RequestId request_id) { return http::text(std::format("request_id={}\n", request_id.get())); }); return http::exit_code(std::move(app).run({.port = 9094}));}import conflux;import std;int main() { namespace http = conflux::http; auto app = http::app(); app.get("/", [] { return http::text("stream /events\n"); }); app.sse("/events", [](http::RequestView const &, std::shared_ptr<http::SseChannel> const &channel) { for (int i = 1; i <= 3; ++i) { auto _ = channel->send_event("message", std::format("event {}", i)); } channel->close(); }); return http::exit_code(std::move(app).run({.port = 9091}));}import conflux;import std;int main() { namespace http = conflux::http; auto app = http::app(); app.get("/", [] { return http::text("connect to /ws\n"); }); app.ws("/ws", [](http::RequestView const &, http::WsConn &ws) { while (auto frame = ws.recv()) { if (frame->opcode == http::WsConn::Opcode::Text) { if (!ws.send_text(frame->payload)) { break; } } } }); return http::exit_code(std::move(app).run({.port = 9096}));}The primary source-consumption mode is MODULE_INTERFACE. Header mode exists for staged compatibility artifacts and is scoped to the components and toolchains covered by package-smoke evidence.
import conflux;, http::app()previewconflux::http, typed path/body/state helpersliburingconflux.json, native provider, JSONTestSuite laneliburing-freefile_io_sync, file_mapliburing-freework, uring, socket/file async layersadvancedhttp and json; the package imports the required dependency closure without requiring users to request work directly.v0.1.0-preview.The evidence repo records the source commit, proof-suite commit, host, compilers, raw benchmark logs, conformance reports, checksums, and rerun commands.
Displayed benchmark rows use Conflux worst-of-6 against external best-of-6.
Plaintext, small-JSON, route-param, and echo-POST wrk lanes at 256 connections.
Typed-struct deserialization lanes for Clang, GCC 15, and GCC 16 import-std.
HTTP/2 Docker conformance lane: 146 tests, 145 passed, 1 skipped, 0 failed.
WebSocket Docker conformance lane: 301 OK/informational/non-strict, 216 optional unimplemented.
release-json, release-http-api, and release-web-server closure artifacts were produced.
| HTTP workload | Conflux module | Conflux header | uWebSockets | Boost.Beast | libmicrohttpd | libevent | Scope |
|---|---|---|---|---|---|---|---|
| plaintext GET | 438,316.40req/s · -0.5% | 435,906.08req/s · -1.1% | 440,593.37req/s · best observed | 287,025.64req/s · -34.9% | 434,435.53req/s · -1.4% | 215,490.61req/s · -51.1% | raw log · source-equivalent |
| small-JSON GET | 439,486.75req/s · best observed | 434,456.33req/s · -1.1% | 429,631.12req/s · -2.2% | 289,236.60req/s · -34.2% | 434,850.46req/s · -1.1% | 207,187.39req/s · -52.9% | raw log · source-equivalent |
| route-param GET | 450,973.13req/s · -0.5% | 453,313.94req/s · best observed | 431,765.30req/s · -4.8% | 285,824.91req/s · -36.9% | 431,706.97req/s · -4.8% | 205,093.91req/s · -54.8% | raw log · source-equivalent |
| echo-POST | 448,748.10req/s · -0.8% | 452,561.28req/s · best observed | 429,958.50req/s · -5.0% | 285,120.44req/s · -37.0% | 415,388.62req/s · -8.2% | 191,949.16req/s · -57.6% | raw log · source-equivalent |
| JSON workload | Conflux | Glaze | simdjson | yyjson | Boost.JSON | nlohmann | Scope |
|---|---|---|---|---|---|---|---|
| typed struct decode | 925.837MB/s · best observed | 860.298MB/s · -7.1% | 712.855MB/s · -23.0% | 724.754MB/s · -21.7% | 258.687MB/s · -72.1% | 79.926MB/s · -91.4% | round logs · current tag |
| typed struct decode + reuse | 1,161.14MB/s · -13.0% | 1,334.84MB/s · best observed | 932.596MB/s · -30.1% | 968.903MB/s · -27.4% | 294.196MB/s · -78.0% | 80.642MB/s · -94.0% | round logs · current tag |
| JSON workload | Conflux | Glaze | simdjson | yyjson | Boost.JSON | nlohmann | Scope |
|---|---|---|---|---|---|---|---|
| typed struct decode | 786.561MB/s · best observed | 753.678MB/s · -4.2% | 723.299MB/s · -8.0% | 748.981MB/s · -4.8% | 262.99MB/s · -66.6% | 92.774MB/s · -88.2% | round logs · current tag |
| typed struct decode + reuse | 975.459MB/s · -13.8% | 1,131.71MB/s · best observed | 974.899MB/s · -13.9% | 980.246MB/s · -13.4% | 290.84MB/s · -74.3% | 93.853MB/s · -91.7% | round logs · current tag |
| JSON workload | Conflux | Glaze | simdjson | yyjson | Boost.JSON | nlohmann | Scope |
|---|---|---|---|---|---|---|---|
| typed struct decode | 707.866MB/s · -3.4% | —not attached | 723.479MB/s · -1.2% | 732.615MB/s · best observed | 264.397MB/s · -63.9% | 90.968MB/s · -87.6% | round logs · import std lane |
HTTP numbers are exact raw values selected from source-equivalent supporting measurements recorded under commit 6466c3cb8b638e87b849adb5433723fb39a86df7; the release/evidence README states the source delta to f0f511b is release/evidence/docs and proof-script-only. Treat them as supporting measurements unless an exact-commit HTTP rerun is attached.
JSON throughput values are exact raw values selected from the f0f511b compiler round logs; JSON conformance, SKU closures, and Docker conformance are attached for the f0f511b preview evidence set. These claims do not extend to HTTP/2 multiplexing, TLS, WebSocket throughput, static-file serving, large-body streaming, other hardware, other client tools, or production deployment configurations.
// evidence produced 2026-06-09T09:20:49Z · AMD Ryzen 7 5800X · Linux 6.18.31 · clang 21.1.8 · g++ 15.2.1 · g++-16 16.1.0
| Claim category | Attached artifact | Public wording allowed | Explicitly not claimed |
|---|---|---|---|
| HTTP/1.1 throughput | four raw wrk logs | source-equivalent same-machine supporting measurement | exact-release rerun, TLS, HTTP/2 performance, production deployment |
| JSON typed decode throughput | compiler round logs | current-tag supporting measurement by compiler lane | all JSON operations, arbitrary schemas, production latency guarantees |
| Protocol conformance | Docker conformance reports | h2spec, Autobahn, and spectral results for the attached lane | native-tool lane, optional WebSocket extensions, broader protocol performance |
| Release packaging | release-json, release-http-api, release-web-server | three attached SKU closures | unlisted components such as PostgreSQL |
The preview evidence compares Conflux against uWebSockets, Boost.Beast, libmicrohttpd, and libevent on four same-machine HTTP/1.1 workloads. Values are exact requests/second from raw evidence, selected as Conflux worst-of-6 versus external best-of-6.
Plaintext, JSON, route-param, and echo-POST using wrk at 256 connections. The table marks the leading framework per workload and shows exact deltas. Conflux rows use the worst run out of six; external rows use the best run out of six.
Six rounds per compiler across Clang 21.1.8, GCC 15.2.1, and GCC 16.1.0 with import std. The compiler tabs show exact MB/s values selected directly from the attached round logs.
APIs may still change before 1.0. PostgreSQL is not advertised for this tag because DB integration/pipeline evidence is not attached.
The evidence repository keeps bulky runtime and benchmark outputs out of the source tree while keeping raw artifacts, commands, checksums, and environment metadata attached.
release-json, release-http-api, and release-web-server with source archives, generated headers, package smoke, build costs, and capability reports.conformance-docker/.Roadmap items stay out of release claims until raw evidence lands.
release-json, release-http-api, release-web-server.f0f511b tag evidence, HTTP under 6466c3cbpg becomes advertised only after DB evidence is attached and green.The source tag, proof harness, and evidence tree define this preview scope together.
Start with the quickstarts, read the release notes, and treat benchmark numbers exactly as scoped: same-machine, attached-artifact evidence, with HTTP called supporting measurement until an exact-commit rerun lands.