Skip to content

About

High-Performance Memory-Mapped Async I/O Engine

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

asm-ringhttpd - asynchronous io_uring http engine in pure x86_64 assembly

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.

Features

  • 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.

Architecture

  • 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.

Requirements

  • x86_64 Linux Kernel 5.1+ (io_uring support required)
  • GNU Assembler (as) & Linker (ld) [binutils]

Building & Execution

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/

About

High-Performance Memory-Mapped Async I/O Engine

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages