C4 C 4 Punk Developers

Open source · Systems software

We write C that other people
can run in production.

C 4 Punk Developers is an independent open-source group building low-level infrastructure in plain C: a web framework, a deterministic runtime, and the tooling around them. Everything is public, permissively licensed, and built in the open.

2flagship projects
C17language standard
MIT + BSD-3project licences
8dependencies vendored

What we build

Two flagship projects, one engineering philosophy

Both are written in plain C, link statically, vendor their dependencies, and are designed to be read by the people who have to operate them.

CWIST

C17MIT

C Web development Is Still Trustworthy

A web framework and application server written in plain C. It terminates modern protocols itself, embeds a database layer, and links statically into a single binary you can copy onto a machine.

  • HTTP/1.1, HTTP/2, HTTP/3 (QUIC), WebSocket, WebTransport
  • Hybrid post-quantum TLS (X25519MLKEM768)
  • Embedded SQLite ORM, plus RDBMS auto-detection
  • Reactor and thread-per-connection modes
  • Builds for native targets and for wasm32-wasip2

libttak

RuntimeBSD 3-Clause

Deterministic systems runtime for C

A low-level runtime focused on predictable memory behaviour, high-throughput concurrency and deterministic resource scheduling. It is what CWIST stands on, and it is usable on its own.

  • Generational arenas with bulk reclamation
  • Epoch-based reclamation without global pauses
  • Detachable memory ownership
  • Thread pools, futures and a lattice scheduler
  • Zero-copy IO and a container toolbox

How we work

Rules we hold ourselves to

These are not slogans. They are the review criteria we apply to our own pull requests.

01

Plain C, no hidden runtime

Our libraries are C17 and link statically. There is no VM to install, no interpreter to ship next to your binary, and no code generator between you and the source you are reading.

02

Vendored dependencies

A fresh checkout builds on a fresh machine. We vendor what we depend on so that a build does not become an archaeology exercise two years from now.

03

Determinism over averages

Tail latency, allocation behaviour and resource ownership are designed first. An average throughput number hides exactly the failures that page somebody at three in the morning.

04

Benchmarks with their caveats attached

We publish run conditions, commit hashes and the shape of the distribution, not only the headline number. Where a competitor wins, we say so in the same table.

05

Readable by whoever operates it

Code is reviewed for whether an on-call engineer can follow it at speed. Clever wins that cost legibility do not get merged.

06

Public by default

Design discussion, issues and roadmaps happen in the open repositories. There is no private fork where the real work happens.

Start here

Five lines to a running server

CWIST is a normal C library. Install it, include one header, register a route, and call listen. No code generation, no build plugin, no runtime to deploy alongside it.

main.c
#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);
    cwist_app_destroy(app);
    return 0;
}

Get involved

The group is open. So is the review queue.

Issues, benchmarks, documentation fixes and hard bug reports are all equally welcome. You do not need to ask permission to start.