zyearn/zaver logo

zyearn/zaver

Free

Yet another fast and efficient HTTP server

FreeFree tier
Type
Open Source
Company
zyearn

About zyearn/zaver

Zaver is an open-source HTTP server written in C, designed as a minimal and educational implementation to help developers understand the core architecture of high-performance servers like Nginx. It uses epoll for non-blocking I/O and a thread-pool model, with support for HTTP persistent connections, browser caching, and a timer mechanism based on binary heaps. The project intentionally keeps the codebase small to serve as a learning foundation for network programming, though it is currently limited to Linux 2.6+ and is not intended for production use.

Key Features

Epoll-based non-blocking I/O
Thread-pool for request handling
HTTP persistent connection support
Browser cache support
Timer using binary heap (instead of red-black tree)
Minimal codebase for learning core server architecture
CMake build system
Configuration file support (zaver.conf)

Pros & Cons

Pros
  • Very small codebase, easy to understand
  • Demonstrates core concepts of event-driven I/O and thread-pool
  • Good learning resource for developers interested in network servers
  • Open source with permissive MIT license
  • Supports HTTP persistent connections and browser caching
Cons
  • Only supports Linux 2.6+ kernels
  • Not production-ready; many features are still TODO (sendfile, proxy, FastCGI, etc.)
  • Limited HTTP/1.1 support
  • No release packages or versioning
  • Primarily intended as learning tool, not for real-world deployment

Best For

Learning how to write a high-performance server using epollUnderstanding Nginx-like server architecture with reduced complexityEducational tool for network programmingFoundation for experimenting with HTTP server features

FAQ

What is the purpose of Zaver?
Zaver is designed to help developers understand how to write a high-performance server based on epoll, using as few lines of code as possible to demonstrate the core structure of servers like Nginx.
What programming model does Zaver use?
Zaver uses epoll for non-blocking I/O combined with a thread-pool.
What features does Zaver currently support?
It supports HTTP persistent connections, browser caching, and a timer implemented with a binary heap instead of the red-black tree used in Nginx.
What are the planned features for Zaver?
Planned features include sendfile, proxy, FastCGI, other HTTP/1.1 features, a memory pool, and WebDAV.
Can Zaver be used in production?
No, Zaver is primarily an educational project and is not intended for production use. It is limited to Linux 2.6+ and has many incomplete features.