zyearn/zaver
FreeYet another fast and efficient HTTP server
FreeFree tier
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.