#facil.io 0.8.x Documentation
The 0.8.x line re-organizes facil.io as the fio-stl library — a single-header-style C STL plus IO, HTTP, Pub/Sub and TLS 1.3 modules. Source code: facil-io/cstl.
Download fio-stl.h — the entire library as a single header file (edge build, always current, one click).
Upcoming release — the fio-stl library: single-header C core, IO reactor, HTTP, Pub/Sub and TLS 1.3.
The documentation is organized into module guides below, plus a complete API Reference generated from the headers. Press / or ⌘K anywhere to search.
# Core Library
Version macros, compiler shims, atomics, memory primitives, SIMD and math — the foundation everything builds on.
- facil.io STL — Core
- Atomics and Locks
- Bit Operations
- Compiler Attributes
- Constant-Time Helpers
- Endian and Byte Ordering
- Linked Lists
- Logging and Assertions
- Core Math Helpers
- Memory Alternatives and OS Patches
- Memory Primitives
- OS Detection
- Core Random PRNG
- Fake x86 SIMD
- Static Scratch Allocator
- String and Buffer Information
- UTF-8 Helpers
- Vector Math
- Version and Settings
# Utilities & Parsers
Text conversion, hashing, glob, sorting, threads and the wire-format parsers (HTTP/1.x, JSON, RESP3, WebSocket…).
- String / Number Conversion
- CRC32
- Glob Matching
- Index Mapped Array (iMap)
- Multi-Precision Math
- Pseudo-Random and Hashing
- Signal Monitoring
- Sorting
- Portable Threads
- URL / URI Parsing
- ML Entity Decoding
- File Helpers
- HTTP/1.x Parser
- JSON Parser
- MIME Multipart Parser
- RESP3 Parser
- Basic Socket Helpers
- State Callbacks
- Time Helpers
- URL-Encoded Parser
- WebSocket Parser
- CLI Helpers
- Memory Allocator
- String Core
- GFM Markdown Parser
# System, Streams & Templates
Polling backends, task and timer queues, packet streams, Markdown and Mustache rendering.
- POSIX Portable Polling API
- POSIX Polling — epoll Backend
- POSIX Polling — kqueue Backend
- POSIX Polling — poll Backend
- Task and Timer Queues
- Packet Data Stream
- Markdown to HTML bstr Renderer
- Mustache-ish Template Engine
# Cryptography & TLS
Hashes, AEAD, signatures, X.509, KDFs, password hashing, compression and a standalone TLS 1.3 stack.
- Crypto Core
- BLAKE2
- ChaCha20 & Poly1305
- HKDF
- SHA-1
- SHA-2
- SHA-3
- AES-GCM
- Ed25519 & X25519
- P-256 (secp256r1)
- P-384 (secp384r1)
- ASN.1 DER
- RSA Signatures
- ML-KEM-768
- X.509 Certificates
- PEM Parser
- Argon2
- Lyra2
- OTP (TOTP)
- Secrets
- Brotli
- DEFLATE / Gzip
- TLS 1.3 Standalone Library
# Dynamic Types
Dynamic strings, arrays, hash maps, reference counting and the FIOBJ soft dynamic types.
- Dynamic Types — Module Group 200
- Dynamic Strings — Module 201
- Dynamic Arrays — Module 202
- Hash Maps and Sets — Module 210
- Reference Counting Wrapper — Module 249
- FIOBJ — Soft Dynamic Types — Module 250
# IO, HTTP & Pub/Sub
The IO reactor, TLS backends, Pub/Sub, Redis and the HTTP module that ties it all together.
- IO and HTTP — Group Overview (400-range)
- IO Reactor API (401 io api.h)
- IPC — Inter-Process Communication (404 ipc.h)
- OpenSSL TLS Backend
- Native TLS 1.3 IO Backend
- Pub/Sub — Publish/Subscribe Messaging (420 pubsub.h)
- Redis — Pub/Sub Engine and Command Client (422 redis.h)
- HTTP Module
#API Reference
Every macro, type and function, per header file: