Add Aegon (C++26) framework entry - #1491
UdayKhare09 wants to merge 15 commits into
Conversation
|
/benchmark -f aegon |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
|
/benchmark -f aegon |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFramework:
Full log |
|
/benchmark -f aegon --save |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
| { | ||
| "display_name": "aegon", | ||
| "language": "C++", | ||
| "type": "experimental", |
There was a problem hiding this comment.
Please mark this as ¨engine¨ here
There was a problem hiding this comment.
Aegon is actually a full-featured web framework with a middleware pipeline (CORS, Auth, Compression, JWT), an ORM, Redis integration, and CLI tooling — not just a raw socket engine. Would emerging be the right fit here?
|
@MDA2AV |
|
/benchmark -f aegon |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFramework: No results captured Full log |
|
fixed the docker cache issue in build |
|
/benchmark -f aegon |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFramework:
Full log |
|
/benchmark -f aegon --save |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFramework:
Full log |
|
added websocket support |
|
/benchmark -f aegon --save |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
|
|
… add echo-ws benchmarks
|
/benchmark -f aegon --save |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFramework:
Full log |
|
fixed internal bugs. |
|
/benchmark -f aegon |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFramework:
Full log |
…e send hot paths - Fix multishot stream handoff race during WebSocket upgrade, preventing dropped pipelined frames in echo-ws-limited - Ensure reliable terminal EOF/disconnect delivery in MultishotRecvStream - Fast-path single-SQE ring.send() in HTTP/1.1 and HTTP/2 cleartext flushes to eliminate coroutine allocation overhead - Remove by-value string copies in send_all helper
|
/benchmark -f aegon |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFramework:
Full log |
|
@MDA2AV Following your advice to harden H1 first, I ran Aegon through Http11Probe to test compliance against RFC 9112 / RFC 9110 edge cases:
|
|
/benchmark -f aegon |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
|
/benchmark -f aegon |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFramework: No results captured Full log |
Benchmark ResultsFramework: No results captured Full log |
|
fixed CMake refractoring issue in dockerfile |
|
/benchmark -f aegon |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFramework:
Full log |
Description
Adds Aegon (
v0.1.a2), a Linux-native C++26 asynchronous web framework powered byio_uringmultishot primitives, symmetric-transfer coroutines, stepped SIMD vectorization, and Glaze JSON serialization.Implementation Details:
io_uringmultishot architecture withSO_REUSEPORTsocket reuse matching available container cores (std::thread::hardware_concurrency()).baseline,limited-conn,latency-1m,latency-10k,latency-500k-8cpu: HTTP/1.1 query parameter & body summation (GET/POST /baseline11).pipelined: Reference pipelined HTTP/1.1 (GET /pipeline).async: Non-blocking async sleep (GET /delay/{ms}) supporting concurrent holds.json-comp: Glaze DTO serialization with on-the-fly SIMDlibdeflategzip compression.json-tls&8gbit: Port 8081 TLS 1.3 (TLS_AES_256_GCM_SHA384) with ALPNhttp/1.1and verbatim binary echo handling chunked and sized payloads.baseline-h2: Port 8443 HTTP/2 multiplexing over TLS 1.3 (GET/POST /baseline2).-std=c++26),liburing,libdeflate,glaze, andjemalloc.Validation:
./scripts/validate.sh aegon: 66 passed, 0 failed (including all 1,047 TCP fragmentation split offsets invalidate-frag.py).PR Commands — comment on this PR to trigger (requires collaborator approval):
/benchmark -f <framework>/benchmark -f <framework> -t <test>/benchmark -f <framework> --save/benchmark -f <framework> -t <test> --save/benchmark -f <framework> --compare <other>/benchmark-multiple -f <fw1>,<fw2>,...-tand--savetoo; saved results land in a single commit/benchmark-multiple --save-fneeded: benchmark and save every framework the PR touches/benchmark-test -t <test><test>and save the resultsFor
/benchmark, always specify-f <framework>; the flags combine in any order. Results come back as a comment with a per-profile table of RPS, p99, CPU and memory — one table per framework on multi runs. A new benchmark comment while a run is in flight queues behind it (one deep) instead of cancelling it. For multi-framework PRs (dependency bumps, same-language refactors) prefer/benchmark-multiple, which runs everything in a single job and commits all saved results together, so no run overwrites another.--compareworks on single-framework runs only.What the deltas are measured against. By default, this framework's own results published on
main- answering "did this change help?". When you are tuning a variant or a successor entry,--comparere-bases them on another entry instead:The reply states which baseline it used, and profiles the other framework does not run show
n/arather than a delta.Run benchmarks locally
You can validate and benchmark your framework locally with the lite script — no CPU pinning, fixed connection counts, all load generators run in Docker.
Requirements: Docker Engine on Linux. Load generators (gcannon, h2load, h2load-h3, wrk) are built as self-contained Docker images on first run.