Repository navigation
Home
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).
| 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 |
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
#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- Source: https://github.com/c4punks/CWIST
- Generated API docs (Doxygen): https://c4punks.github.io/CWIST/
- Discord: https://discord.gg/6F8HDmNAPg
- A production deployment built on CWIST: fly.board
CWIST wiki, written against the dev branch of c4punks/CWIST. Pages marked "Source:" are generated from files under docs/; fix those in the repository. Questions: Discord.
Getting started
- Installation
- Quick Start
- Linking
- Server Modes
- Configuration and Environment
- Project CLI
- Tutorial / Korean
- Examples and Tutorials
Guides
Core
- API Reference
- 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
Data
Runtime
- Memory Management
- Full GC
- Async GC Ownership
- SString
- Reactor and I/O
- Metrics and Health
- Logging
- Testing
Platforms
Performance notes
- Benchmark Methodology
- C1M File Limits
- Reactor Fairness
- Cooperative Queuing
- Classic Pool Starvation
- Reactor Wakeup
- wrk Dual Histogram
- FIXED Endpoint Cache
- ADR-0001
- Durable Queue Gate
- Mux References
Project