boazsegev/facil.io
FreeYour high performance web application C framework
FreeFree tier
About boazsegev/facil.io
facil.io is a C micro-framework for web applications that provides high-performance TCP/IP network services for Linux, BSD, and macOS. It features a fast HTTP/1.1 and WebSocket static file and application server, support for custom network protocols for both server and client connections, dynamic types (Strings, Hashes, Arrays) designed for web applications, performant JSON parsing and formatting, a pub/sub process cluster engine for local and WebSocket pub/sub, and optional connectivity with Redis. The framework uses an evented design with thread pool and forking support to solve the C10K problem. It is the core technology behind the Iodine Ruby HTTP/WebSocket server.
Key Features
Fast HTTP/1.1 and WebSocket static file + application server
Support for custom network protocols for both server and client connections
Dynamic types including Strings, Hashes, and Arrays for web applications
Performant JSON parsing and formatting for network communication
Pub/sub process cluster engine for local and WebSocket pub/sub
Optional connectivity with Redis
Evented design with thread pool and forking for high concurrency (C10K)
C99 compatible with GNU make and CMake build support
Pros & Cons
Pros
- High performance evented design suitable for concurrent connections
- Lightweight C micro-framework with minimal dependencies
- Supports HTTP/1.1 and WebSockets out of the box
- Includes built-in pub/sub and optional Redis integration
- Offers dynamic types and JSON parsing for web development
Cons
- Master branch is development branch and may be unstable; use release versions for production
Best For
Building high-performance web applications and APIsReal-time applications using WebSocketsImplementing custom network protocolsPub/sub messaging systemsEmbedded web servers in C projects
FAQ
What is facil.io?
A high-performance C micro-framework for web applications, providing HTTP/1.1, WebSocket, custom protocols, pub/sub, and Redis support.
Is facil.io production-ready?
It is recommended to use a release version for production, as the master branch is the development branch and may be unstable.
Who uses facil.io?
The Iodine Ruby HTTP/WebSocket server is powered by facil.io.
How can I start a new project with facil.io?
Run the bash script: `bash (curl -s https://raw.githubusercontent.com/boazsegev/facil.io/master/scripts/new/app) appname`