boazsegev/facil.io logo

boazsegev/facil.io

Free

Your high performance web application C framework

FreeFree tier
Type
Open Source

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`