Home

Awesome

Windows Linux+macOS Coverage

Sane C++ Libraries

YouTube X (formerly Twitter) Follow Discord GitHub Repo stars

Sane C++ Libraries is a set of C++ platform abstraction libraries for macOS, Windows and Linux.

Sane Cpp

Principles:

✅ Fast compile times
✅ Bloat free
✅ Simple readable code
✅ Easy to integrate
⛔️ No C++ Standard Library / Exceptions / RTTI
⛔️ No third party dependencies (prefer OS API)

Visit the documentation website for more information.

Libraries

LibraryDescription
Algorithms🟥 Placeholder library where templated algorithms will be placed
Async🟨 Async I/O (files, sockets, timers, processes, fs events, threads wake-up)
Build🟨 Minimal build system where builds are described in C++
Containers🟨 Generic containers (SC::Vector, SC::SmallVector, SC::Array etc.)
File🟩 Synchronous Disk File I/O
File System🟩 File System operations { exists, copy, delete } for { files and directories }
File System Iterator🟩 Enumerates files and directories inside a given path
File System Watcher🟩 Notifications {add, remove, rename, modified} for files and directories
Foundation🟩 Primitive types, asserts, limits, Function, Span, Result, Tagged Union
Hashing🟩 Compute MD5, SHA1 or SHA256 hashes for a stream of bytes
Http🟥 HTTP parser, client and server
Plugin🟨 Minimal dependency based plugin system with hot-reload
Process🟩 Create child processes and chain them (also usable with Async library)
Reflection🟩 Describe C++ types at compile time for serialization
Serialization Binary🟨 Serialize to and from a binary format using Reflection
Serialization Text🟨 Serialize to / from text formats (JSON) using Reflection
Socket🟨 Synchronous socket networking and DNS lookup
Strings🟩 String formatting / conversion / manipulation (ASCII / UTF8 / UTF16)
Testing🟨 Simple testing framework used by all of the other libraries
Threading🟥 Atomic, thread, thread pool, mutex, condition variable
Time🟨 Time handling (relative, absolute, high resolution)

Each library is color-coded to signal its status:

C Bindings

Some Libraries have C bindings

BindingDescription
sc_hashingBindings for the Hashing Library

Building

Libraries can be used as is, adding a single file to your project and without needing any build system.
See Building (user) to just use the library

Shortly:

Windows

macOS / iOS

Linux

Examples

SCExample showcases integration of Sane C++ Libraries together with Dear ImGui and sokol libraries (see Examples page).

macOS

https://github.com/user-attachments/assets/2a38310c-6a28-4f86-a0f3-665dc15b126d

iOS

https://github.com/Pagghiu/SaneCppLibraries/assets/5406873/5c7d4036-6e0c-4262-ad57-9ef84c214717

Tests

Tests are built with the self-hosted SC::Build project generator, describing the builds in C++.
Check Building (contributor) to run the tests.

Getting in touch

Alternatively I am also reading the following discords too:

Videos

Blog posts:

You can find some YouTube Videos and Blog posts describing some bits of the development process:

Contributing

Please take some time to read the Principles and Coding Style.

After that you can read the CONTRIBUTING.md guide.

License

Sane C++ Libraries are licensed under the MIT License, see LICENSE.txt for more information.