Erbsland Core Documentation

Erbsland Core is a cross-platform C++20 foundation library for building secure, portable applications with little boilerplate. It provides a consistent API for Linux, macOS, and Windows and depends only on the C++ standard library.

Warning

Erbsland Core is in alpha. The available status is already useful for experiments and new applications, but the public API can change without a compatibility period. See Development Stages and Versioning for details.

Build elgrep — Start the Tutorial →

Choose Your Starting Point

Getting Started

Build a practical recursive search tool using the application framework, paths, streams, regular expressions, and safe terminal output.

Getting Started
Usage

Integrate Core as a Git submodule, configure its build, or consume an installed static library.

Usage
Feature Topics

Learn the concepts and patterns behind individual library areas.

Topics
API Reference

Look up public types, functions, and detailed behavior by API area.

Reference
Requirements

Check compiler, CMake, Git, platform, and contributor-tool requirements.

Requirements

Features Available Today

Text, data, and utilities

  • Unicode-aware strings, text, and formatting for UTF-8, UTF-16, and UTF-32

  • A safe, reliable regular-expression engine

  • Byte and text streams, text encodings, and buffers

  • Filesystem paths, file and directory operations, and file streams

  • Date and time types, durations, and system-independent time-zone calculation

  • Safe numeric utilities, including saturating arithmetic and checked conversions

  • Fast and secure random-number generators with safe APIs

  • Copy-on-write containers, coroutine primitives, enum flags, compression, and more

  • Template render framework with a Jinja like syntax.

Applications and system integration

  • Command-line option parsing with formatted help and version output

  • An application framework and application-part management to minimize boilerplate

  • A resource system for automatically compiled-in resources

  • Terminal output with colors, styles, cursor movement, and terminal-size detection

  • Error classes, diagnostics, and formatted diagnostic output

  • The Erbsland Configuration Language, including validation rules

  • Bounded asynchronous logging with hierarchical streams, runtime reconfiguration, and statistics

Events and networking

  • Event loops, schedulers, timers, function invocation, and event threads

  • Event-based TCP and UDP connections, host-name resolution, and more

  • A TLS 1.3 network layer over TCP

  • An event-based HTTP server and client framework for plain TCP and TLS

Cryptography

  • An extensive cryptography layer with no dependency on other libraries

All Documentation

The Guidelines section is contributor material for developing Core itself.

Documentation Indices