{"id":46933030,"url":"https://github.com/religiya-serdtsa/cwist","last_synced_at":"2026-05-28T06:01:23.636Z","repository":{"id":333825217,"uuid":"1129663560","full_name":"Religiya-Serdtsa/CWIST","owner":"Religiya-Serdtsa","description":"Web Development Framework Suite in C","archived":false,"fork":false,"pushed_at":"2026-05-27T04:30:32.000Z","size":58046,"stargazers_count":1,"open_issues_count":2,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-27T06:21:38.575Z","etag":null,"topics":["boringssl","c","http2","http3","http3-server","io-uring","lightweight","low-level","mux","openssl","quic","server","suckless","systems-programming","tls13","web-development","web-engine","web-framework"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Religiya-Serdtsa.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-07T12:06:07.000Z","updated_at":"2026-05-27T04:30:36.000Z","dependencies_parsed_at":null,"dependency_job_id":"68a73833-c0cb-4628-b576-80da3ed58f32","html_url":"https://github.com/Religiya-Serdtsa/CWIST","commit_stats":null,"previous_names":["gg582/cwist","religiya-serdtsa/cwist"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/Religiya-Serdtsa/CWIST","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Religiya-Serdtsa%2FCWIST","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Religiya-Serdtsa%2FCWIST/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Religiya-Serdtsa%2FCWIST/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Religiya-Serdtsa%2FCWIST/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Religiya-Serdtsa","download_url":"https://codeload.github.com/Religiya-Serdtsa/CWIST/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Religiya-Serdtsa%2FCWIST/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33596317,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-28T02:00:06.440Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["boringssl","c","http2","http3","http3-server","io-uring","lightweight","low-level","mux","openssl","quic","server","suckless","systems-programming","tls13","web-development","web-engine","web-framework"],"created_at":"2026-03-11T05:08:46.033Z","updated_at":"2026-05-28T06:01:23.624Z","avatar_url":"https://github.com/Religiya-Serdtsa.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"+------------------------------------------------------------------+\n|                                            ________              |\n|   #####  #   #  #  #   ####  #####   ==   /        \\             |\n|   #      #   #  #  #  #        #      == |     !    \\            |\n|   #      #   #  #  #   ###     #       ==|           \\___        |\n|   #      #   #  #  #      #    #      == |    | |    /           |\n|   #####  ########  #  ####     #     ==   \\_________/            |\n|                                                                  |\n|              C Web development Is Still Trustworthy              |\n|                                                                  |\n+------------------------------------------------------------------+\n\nA high-performance, C17 web framework that brings modern ergonomics\n-- HTTP/3, WebTransport, Post-Quantum TLS, and zero-copy I/O --\nto systems programming without sacrificing control.\nPowered by BoringSSL, lsquic, OpenSSL without context contamination.\n\n~~~HEAVY BENCHMARK ON CWIST APP~~~ ==\u003e https://github.com/gg582/fly.board/blob/main/README.md\n\n==================================================================\n WHY CWIST?\n==================================================================\n\nMost C web frameworks stop at HTTP/1.1 and leave TLS, protocol\nupgrades, and memory management as exercises for the user. CWIST\nships with the entire stack:\n\n* HTTP/3 \u0026 WebTransport Server\n  Powered by lsquic. Server-side WebTransport sessions over QUIC\n  with bidirectional and unidirectional streams.\n\n* Post-Quantum TLS\n  One API call: cwist_app_use_pqc_layer(app, true)\n  Forces hybrid X25519MLKEM768 and disables legacy TLS \u003c 1.3.\n  No OpenSSL knowledge required.\n\n* Server-side zero-copy I/O \u0026 C100K Reactor\n  Backed by io_uring / epoll / kqueue with lock-free job queues\n  and generational arena allocators from libttak.\n\n* Nuke DB\n  A read-optimal, in-memory SQLite engine that syncs to disk on\n  every COMMIT.\n\n* Auto-RDBMS Detection\n  Probe any TCP port and automatically mount PostgreSQL, MySQL,\n  or MariaDB runtimes by wire-protocol fingerprinting.\n\n==================================================================\n CORE FEATURES\n==================================================================\n\nProtocols       HTTP/1.1, HTTP/2 (h2/h2c), HTTP/3 (QUIC),\n                WebSocket, WebTransport\n\nTLS / Security  BoringSSL, PQC hybrid groups, ECH, JWT,\n                DB Crypt, Monocypher\n\nDatabase        SQLite3 + ORM, Nuke DB (in-memory + WAL sync),\n                RDBMS auto-detection\n\nRouting         Express-style :param routes, Mux router,\n                chainable middleware\n\nPerformance     Zero-copy I/O, generational arenas, EBR GC,\n                lock-free queues, Big Dumb Reply cache\n\nObservability   Structured access logs, metrics endpoint,\n                healthz, rate limiting\n\nRendering       HTML builder, CSS composer, template engine,\n                JSON builder / heal\n\n==================================================================\n QUICK START\n==================================================================\n\n  git clone https://github.com/religiya-serdtsa/cwist.git\n  cd cwist\n  make\n\n--------------------------------------- code -----------------------------------\n| #include \u003ccwist/app.h\u003e                                                       |\n|                                                                              |\n| static void hello(cwist_http_request *req, cwist_http_response *res) {       |\n|     cwist_sstring_assign(res-\u003ebody, \"Hello from CWIST!\");                    |\n| }                                                                            |\n|                                                                              |\n| int main(void) {                                                             |\n|     cwist_app *app = cwist_app_create();                                     |\n|                                                                              |\n|     /* SQLite + ORM-ready database */                                        |\n|     cwist_app_use_db(app, \":memory:\");                                       |\n|                                                                              |\n|     /* Post-Quantum TLS (hybrid X25519MLKEM768) */                           |\n|     cwist_app_use_pqc_layer(app, true);                                      |\n|                                                                              |\n|     /* Observability endpoints */                                            |\n|     cwist_app_enable_metrics(app);                                           |\n|     cwist_app_enable_healthz(app);                                           |\n|                                                                              |\n|     /* Auto-detect RDBMS on localhost */                                     |\n|     cwist_app_auto_rdbms(app, 5432);                                         |\n|                                                                              |\n|     /* Routes */                                                             |\n|     cwist_app_get(app, \"/\", hello);                                          |\n|                                                                              |\n|     cwist_app_listen(app, 8080);                                             |\n|     cwist_app_destroy(app);                                                  |\n|     return 0;                                                                |\n| }                                                                            |\n--------------------------------------------------------------------------------\n\n  gcc -o server main.c -lcwist -lssl -lcrypto -luriparser -lcjson -ldl -lpthread\n  ./server\n\n==================================================================\n NUKE DB\n==================================================================\n\nRead-from-RAM, Write-to-Disk. Nuke DB loads an on-disk SQLite file\ninto memory via sqlite3_deserialize, runs PRAGMA integrity_check,\nand then serves every query from RAM. Every COMMIT triggers a\nbackground WAL sync. If bootstrap fails, it falls back to read-only\ndisk protection mode.\n\n  cwist_nuke_init(\"data.db\", 5000);   /* 5-second auto-sync */\n  cwist_db *db = cwist_nuke_get_db();\n\n==================================================================\n LIBTTAK PERFORMANCE CORE\n==================================================================\n\nCWIST links the in-tree libttak allocator/reactor toolkit:\n\nGenerational Arena Allocator\n  Static assets and BDR blobs are released in one shot, eliminating\n  RSS fragmentation.\n\nEpoch-Based Reclamation (EBR)\n  ttak_epoch_enter/exit pin critical sections; stale buffers are\n  reclaimed automatically.\n\nDetachable Memory\n  Signal-safe, cache-aligned arenas for TLS write buffers and\n  WebSocket frames.\n\nLock-Free Job Queue\n  Producers push with a single atomic swap; consumers reuse detached\n  nodes to prevent fragmentation.\n\n==================================================================\n PQC TLS LAYER\n==================================================================\n\nEnable post-quantum cryptography with one line:\n\n  cwist_app_use_pqc_layer(app, true);\n\nThis forces X25519MLKEM768:X25519:P-256, sets TLS 1.3 as the minimum\nversion, and strips all legacy TLSv1.0-1.2 ciphers. Application code\nnever touches OpenSSL directly.\n\n==================================================================\n WEBTRANSPORT\n==================================================================\n\nCWIST exposes server-side WebTransport over HTTP/3:\n\n  cwist_app_use_webtransport(app, my_wt_handler);\n\nThe framework handles the CONNECT negotiation, keeps the stream open\nafter 2xx, and provides cwist_webtransport_read/write/flush/close/\nopen_bidi/open_uni APIs.\n\n==================================================================\n RDBMS AUTO-MOUNT\n==================================================================\n\nPoint CWIST at a local TCP port and it detects the provider by wire\nprotocol:\n\n  if (cwist_app_auto_rdbms(app, 5432)) {\n      /* PostgreSQL, MySQL, or MariaDB runtime mounted */\n  }\n\nNo port-number guessing -- CWIST sends a PostgreSQL StartupMessage\nor reads a MySQL Handshake initiation packet to classify the server.\n\n==================================================================\n BENCHMARK SNAPSHOT\n==================================================================\n\nRecorded on an AMD EPYC 7763 container (4 vCPU, Linux 6.14):\n\n  Tool              : ApacheBench 2.3\n  Command           : ab -n 100 -c 85 -k http://localhost:31744/\n  Requests/sec      : 2,958.40\n  Mean latency      : 0.338 ms per concurrent request\n  Failed requests   : 0\n\nSee BENCHMARK.txt for the full transcript and reproducible workflow.\n\n==================================================================\n DEPENDENCIES\n==================================================================\n\n* BoringSSL     (in-tree)\n* lsquic        (in-tree, compiled with -DLSQUIC_WEBTRANSPORT=ON)\n* libttak       (in-tree)\n* SQLite3       (in-tree)\n* cJSON\n* uriparser\n* Monocypher\n\n==================================================================\n DOCUMENTATION\n==================================================================\n\n* API Reference  : https://religiya-serdtsa.github.io/CWIST/\n* docs/          -- tutorials and Doxygen sources\n* example/       -- runnable demos including rps-showcase and othello-web\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freligiya-serdtsa%2Fcwist","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freligiya-serdtsa%2Fcwist","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freligiya-serdtsa%2Fcwist/lists"}