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 0.90.0 (Beta 1) is the first beta release. The public API can change without a compatibility period. Minor version updates may introduce breaking API changes. 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
Library Development

Prepare a checkout to work on Core itself, run repository maintenance commands, or extend the maintenance tool.

Development

Features Available Today

Text, data, and utilities

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

  • JSON, BSON, CBOR, and XML value and document APIs for parsing and serialization

  • A safe, reliable regular-expression engine

  • Byte and text streams, text encodings, and buffers

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

  • UTC timestamps, calendar 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

  • Text layout rendering with a Jinja-like template language

Applications and system integration

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

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

  • Release-package tooling for Windows and macOS applications

  • 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

  • Signed byte blocks and challenge-response authentication tokens

All Documentation

Documentation Indices