Skip to content
Lee Yunjin edited this page Oct 7, 2026 · 2 revisions

CWIST Wiki

CWIST (C Web development Is Still Trustworthy) is a C17 web framework and application server. It ships HTTP/1.1, HTTP/2, HTTP/3 (QUIC), WebSocket, Server-Sent Events, gRPC, GraphQL, WebRTC DataChannels and WebTransport in one statically linked library, together with TLS 1.3 with hybrid post-quantum key exchange, an embedded SQLite layer with an ORM, a reactor built on io_uring, epoll or kqueue, and an optional epoch-based garbage collector.

This wiki is the library reference: how to install and link CWIST, how each module works, and what every public call does. It is written against the dev branch; where a release differs, the page says so (see Branches and Releases).

Start here

If you want to... Read
Install CWIST and build a first server Installation, then Quick Start
Link an application against libcwist.a Linking
Pick between the reactor and the classic thread pool Server Modes
Tune CWIST with environment variables Configuration and Environment
Learn by building Tutorial (Korean), Examples and Tutorials
Look up a function API Reference, API Quick Reference

Library map

Core application Application | Routing | Middleware | Requests and Responses | Async Handlers | Streaming Responses | Error Handling | Graceful Shutdown | Multiport

Protocols HTTPS and TLS | HTTP/2 | HTTP/3 and QUIC | WebTransport | WebSocket | Server-Sent Events | gRPC Server | gRPC Client | Protobuf and Codegen | GraphQL | WebRTC DataChannels | HTTP Clients

Web features Static Files and Assets | Big Dumb Reply Cache | Compression | Cookies | Sessions and Flash | Query Maps | Multipart Uploads | HTML Components | Templates | JSON | Validation | OpenAPI

Security Security Overview | JWT | CSRF and WAF | Sequenced Messages

Data Database | ORM | Redis | NATS | Durable Job Queue | Scheduler

Runtime Memory Management | Full GC | Async GC Ownership | SString | Reactor and I/O | Metrics and Health | Logging | Testing

Platforms and bindings WASM Browser Builds | WASI | WASM Component Model | Deployment: Wasmtime Appliance | Language Bindings | Platform Support

Performance and design notes Benchmark Methodology | C1M File Limits | HTTP Reactor Fairness | Cooperative Queuing | Classic Pool Starvation | Reactor Wakeup Regression | wrk Dual Histogram | FIXED Endpoint Cache | ADR-0001 | Durable Queue CI Gate | Mux Algorithm References

Project Branches and Releases | Versioning and Stability | Release Codenames | Contributing

A minimal server

#include <cwist/app.h>

static void hello(cwist_http_request *req, cwist_http_response *res) {
    (void)req;
    cwist_sstring_assign(res->body, "Hello from CWIST!");
}

int main(void) {
    cwist_app *app = cwist_app_create();
    cwist_app_get(app, "/", hello);
    cwist_app_listen(app, 8080);   /* blocks until SIGTERM/SIGINT */
    cwist_app_destroy(app);
    return 0;
}
cc -o server main.c $(pkg-config --cflags --libs --static cwist)
./server

Community

Clone this wiki locally