facebookarchive/libphenom logo

facebookarchive/libphenom

Free

An eventing framework for building high performance and high scalability systems in C.

FreeFree tier
Type
Open Source
Company
Facebook

About facebookarchive/libphenom

libPhenom is an eventing framework for building high performance and high scalability systems in C. Originally developed by Facebook, it provides a set of facilities including memory management with counters, job scheduling for decomposing work, streaming I/O with buffers, common data structures (hash tables, lists, queues), a variant data type for JSON serialization/deserialization, and a custom printf implementation with registerable object formatting. It supports multiple I/O event backends such as epoll (Linux), kqueue (BSD), and port (Illumos/Solaris). The framework is designed to balance ease of use with performance, be neutral to threaded or event-based dispatch, and minimize contention points for scalability across many cores. Note: This project has been deprecated and archived as of March 2019 and is no longer actively maintained.

Key Features

Memory management with counters to track usage
Job scheduling to decompose applications into work units
Streaming I/O with buffered operations
Common data structures: hash tables, lists, queues
Variant data type for JSON serialization and deserialization
Custom printf implementation with registerable object formatting
Support for multiple I/O event backends: epoll, kqueue, port
Designed to avoid contention points for scalable multi-core performance

Pros & Cons

Pros
  • Efficient memory management with built-in counters
  • Support for multiple operating system I/O event mechanisms (epoll, kqueue, port)
  • Includes useful data structures and JSON serialization out of the box
  • Designed for scalability with minimal contention points
  • Provides a job scheduler for balancing work across threads or events
Cons
  • Deprecated and no longer maintained (archived since March 2019)
  • Depends on Concurrency Kit, which is not widely distributed via package managers
  • Only available in C, limiting language flexibility
  • Requires manual build from source using autotools

Best For

Building high-performance network servers in CDeveloping event-driven applications requiring scalable event handlingSystems that benefit from decomposing work into managed jobsApplications needing efficient JSON manipulation and data structures

FAQ

What platforms does libPhenom support?
libPhenom supports Linux (with epoll), OS X, Illumos/Solaris (with port_create), and historically BSD systems with kqueue (FreeBSD, OpenBSD).
Is libPhenom still actively maintained?
No. The project was archived by its owner on March 8, 2019, and is no longer maintained. It is read-only.
What are the main features of libPhenom?
Key features include memory management with counters, job scheduling, streaming I/O with buffers, hash tables, lists, queues, JSON serialization via a variant type, and a custom printf with registerable formatters.