asm-ringhttpd is an ultra-high performance, zero-dependency async HTTP engine written in pure x86_64 Linux Assembly. It leverages Linux kernel io_uring ring buffers for lock-free asynchronous I/O and direct kernel submission loops.
It completely eliminates glibc, C runtime (CRT) initialization, and standard system call overhead by communicating directly via ring buffer memory maps.
- Ring-Buffer Architecture: Uses Linux io_uring (sys_io_uring_setup/enter).
- Zero C Library Overhead: Completely independent of libc, liburing, or CRT.
- Custom Memory Arena: Fast page-aligned allocation using sys_mmap.
- Zero-Copy Parsing: Fast HTTP header processing directly in CPU registers.
- High Concurrency: Non-blocking asynchronous submission and completion queues.
- src/main.s : Entry point, socket initialization, and system loop.
- src/ring.s : Submission Queue (SQ) and Completion Queue (CQ) ring logic.
- src/http.s : High-speed zero-copy HTTP protocol parser.
- src/mm.s : Direct mmap page allocator.
- x86_64 Linux Kernel 5.1+ (io_uring support required)
- GNU Assembler (as) & Linker (ld) [binutils]
Build the binary:
$ make
Run the server:
$ ./bin/asm-ringhttpd
Test via curl or benchmark with wrk:
$ curl -i http://localhost:8080/
$ wrk -c 500 -t 8 -d 10s http://localhost:8080/