# 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](https://github.com/facil-io/cstl).

**[Download fio-stl.h](https://github.com/facil-io/cstl/releases/download/edge/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](https://facil.io/0.8.x/api/) generated from the headers. Press <kbd>/</kbd> or <kbd>⌘K</kbd> anywhere to search.

## <a id="group-core"></a> Core Library

Version macros, compiler shims, atomics, memory primitives, SIMD and math — the foundation everything builds on.

- [facil.io STL — Core](https://facil.io/0.8.x/facil-io-stl-core/)
- [Atomics and Locks](https://facil.io/0.8.x/atomics-and-locks/)
- [Bit Operations](https://facil.io/0.8.x/bit-operations/)
- [Compiler Attributes](https://facil.io/0.8.x/compiler-attributes/)
- [Constant-Time Helpers](https://facil.io/0.8.x/constant-time-helpers/)
- [Endian and Byte Ordering](https://facil.io/0.8.x/endian-and-byte-ordering/)
- [Linked Lists](https://facil.io/0.8.x/linked-lists/)
- [Logging and Assertions](https://facil.io/0.8.x/logging-and-assertions/)
- [Core Math Helpers](https://facil.io/0.8.x/core-math-helpers/)
- [Memory Alternatives and OS Patches](https://facil.io/0.8.x/memory-alternatives-and-os-patches/)
- [Memory Primitives](https://facil.io/0.8.x/memory-primitives/)
- [OS Detection](https://facil.io/0.8.x/os-detection/)
- [Core Random PRNG](https://facil.io/0.8.x/core-random-prng/)
- [Fake x86 SIMD](https://facil.io/0.8.x/fake-x86-simd/)
- [Static Scratch Allocator](https://facil.io/0.8.x/static-scratch-allocator/)
- [String and Buffer Information](https://facil.io/0.8.x/string-and-buffer-information/)
- [UTF-8 Helpers](https://facil.io/0.8.x/utf-8-helpers/)
- [Vector Math](https://facil.io/0.8.x/vector-math/)
- [Version and Settings](https://facil.io/0.8.x/version-and-settings/)

## <a id="group-util"></a> Utilities & Parsers

Text conversion, hashing, glob, sorting, threads and the wire-format parsers (HTTP/1.x, JSON, RESP3, WebSocket…).

- [String / Number Conversion](https://facil.io/0.8.x/string-number-conversion/)
- [CRC32](https://facil.io/0.8.x/crc32/)
- [Glob Matching](https://facil.io/0.8.x/glob-matching/)
- [Index Mapped Array (iMap)](https://facil.io/0.8.x/index-mapped-array-imap/)
- [Multi-Precision Math](https://facil.io/0.8.x/multi-precision-math/)
- [Pseudo-Random and Hashing](https://facil.io/0.8.x/pseudo-random-and-hashing/)
- [Signal Monitoring](https://facil.io/0.8.x/signal-monitoring/)
- [Sorting](https://facil.io/0.8.x/sorting/)
- [Portable Threads](https://facil.io/0.8.x/portable-threads/)
- [URL / URI Parsing](https://facil.io/0.8.x/url-uri-parsing/)
- [ML Entity Decoding](https://facil.io/0.8.x/ml-entity-decoding/)
- [File Helpers](https://facil.io/0.8.x/file-helpers/)
- [HTTP/1.x Parser](https://facil.io/0.8.x/http-1-x-parser/)
- [JSON Parser](https://facil.io/0.8.x/json-parser/)
- [MIME Multipart Parser](https://facil.io/0.8.x/mime-multipart-parser/)
- [RESP3 Parser](https://facil.io/0.8.x/resp3-parser/)
- [Basic Socket Helpers](https://facil.io/0.8.x/basic-socket-helpers/)
- [State Callbacks](https://facil.io/0.8.x/state-callbacks/)
- [Time Helpers](https://facil.io/0.8.x/time-helpers/)
- [URL-Encoded Parser](https://facil.io/0.8.x/url-encoded-parser/)
- [WebSocket Parser](https://facil.io/0.8.x/websocket-parser/)
- [CLI Helpers](https://facil.io/0.8.x/cli-helpers/)
- [Memory Allocator](https://facil.io/0.8.x/memory-allocator/)
- [String Core](https://facil.io/0.8.x/string-core/)
- [GFM Markdown Parser](https://facil.io/0.8.x/gfm-markdown-parser/)

## <a id="group-system"></a> System, Streams & Templates

Polling backends, task and timer queues, packet streams, Markdown and Mustache rendering.

- [POSIX Portable Polling API](https://facil.io/0.8.x/posix-portable-polling-api/)
- [POSIX Polling — epoll Backend](https://facil.io/0.8.x/posix-polling-epoll-backend/)
- [POSIX Polling — kqueue Backend](https://facil.io/0.8.x/posix-polling-kqueue-backend/)
- [POSIX Polling — poll Backend](https://facil.io/0.8.x/posix-polling-poll-backend/)
- [Task and Timer Queues](https://facil.io/0.8.x/task-and-timer-queues/)
- [Packet Data Stream](https://facil.io/0.8.x/packet-data-stream/)
- [Markdown to HTML bstr Renderer](https://facil.io/0.8.x/markdown-to-html-bstr-renderer/)
- [Mustache-ish Template Engine](https://facil.io/0.8.x/mustache-ish-template-engine/)

## <a id="group-crypto"></a> Cryptography & TLS

Hashes, AEAD, signatures, X.509, KDFs, password hashing, compression and a standalone TLS 1.3 stack.

- [Crypto Core](https://facil.io/0.8.x/crypto-core/)
- [BLAKE2](https://facil.io/0.8.x/blake2/)
- [ChaCha20 & Poly1305](https://facil.io/0.8.x/chacha20-poly1305/)
- [HKDF](https://facil.io/0.8.x/hkdf/)
- [SHA-1](https://facil.io/0.8.x/sha-1/)
- [SHA-2](https://facil.io/0.8.x/sha-2/)
- [SHA-3](https://facil.io/0.8.x/sha-3/)
- [AES-GCM](https://facil.io/0.8.x/aes-gcm/)
- [Ed25519 & X25519](https://facil.io/0.8.x/ed25519-x25519/)
- [P-256 (secp256r1)](https://facil.io/0.8.x/p-256-secp256r1/)
- [P-384 (secp384r1)](https://facil.io/0.8.x/p-384-secp384r1/)
- [ASN.1 DER](https://facil.io/0.8.x/asn-1-der/)
- [RSA Signatures](https://facil.io/0.8.x/rsa-signatures/)
- [ML-KEM-768](https://facil.io/0.8.x/ml-kem-768/)
- [X.509 Certificates](https://facil.io/0.8.x/x-509-certificates/)
- [PEM Parser](https://facil.io/0.8.x/pem-parser/)
- [Argon2](https://facil.io/0.8.x/argon2/)
- [Lyra2](https://facil.io/0.8.x/lyra2/)
- [OTP (TOTP)](https://facil.io/0.8.x/otp-totp/)
- [Secrets](https://facil.io/0.8.x/secrets/)
- [Brotli](https://facil.io/0.8.x/brotli/)
- [DEFLATE / Gzip](https://facil.io/0.8.x/deflate-gzip/)
- [TLS 1.3 Standalone Library](https://facil.io/0.8.x/tls-1-3-standalone-library/)

## <a id="group-types"></a> Dynamic Types

Dynamic strings, arrays, hash maps, reference counting and the FIOBJ soft dynamic types.

- [Dynamic Types — Module Group 200](https://facil.io/0.8.x/dynamic-types-module-group-200/)
- [Dynamic Strings — Module 201](https://facil.io/0.8.x/dynamic-strings-module-201/)
- [Dynamic Arrays — Module 202](https://facil.io/0.8.x/dynamic-arrays-module-202/)
- [Hash Maps and Sets — Module 210](https://facil.io/0.8.x/hash-maps-and-sets-module-210/)
- [Reference Counting Wrapper — Module 249](https://facil.io/0.8.x/reference-counting-wrapper-module-249/)
- [FIOBJ — Soft Dynamic Types — Module 250](https://facil.io/0.8.x/fiobj-soft-dynamic-types-module-250/)

## <a id="group-io"></a> 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)](https://facil.io/0.8.x/io-and-http-group-overview-400-range/)
- [IO Reactor API (401 io api.h)](https://facil.io/0.8.x/io-reactor-api-401-io-api-h/)
- [IPC — Inter-Process Communication (404 ipc.h)](https://facil.io/0.8.x/ipc-inter-process-communication-404-ipc-h/)
- [OpenSSL TLS Backend](https://facil.io/0.8.x/openssl-tls-backend/)
- [Native TLS 1.3 IO Backend](https://facil.io/0.8.x/native-tls-1-3-io-backend/)
- [Pub/Sub — Publish/Subscribe Messaging (420 pubsub.h)](https://facil.io/0.8.x/pub-sub-publish-subscribe-messaging-420-pubsub-h/)
- [Redis — Pub/Sub Engine and Command Client (422 redis.h)](https://facil.io/0.8.x/redis-pub-sub-engine-and-command-client-422-redis-h/)
- [HTTP Module](https://facil.io/0.8.x/http-module/)

## API Reference

Every macro, type and function, per header file:

- [Core](https://facil.io/0.8.x/api/#grp-core)
- [Utilities](https://facil.io/0.8.x/api/#grp-util)
- [System](https://facil.io/0.8.x/api/#grp-system)
- [Cryptography](https://facil.io/0.8.x/api/#grp-crypto)
- [Dynamic Types](https://facil.io/0.8.x/api/#grp-types)
- [IO & HTTP](https://facil.io/0.8.x/api/#grp-io)
