Repository navigation
[Summary]
StormByte Base is the C++26 foundation of the StormByte suite.
Every other module links this library.
This repository is not Buffer, Config, Crypto, Database, Logger, Multimedia, Network or System — those live in their own repos and depend on Base.
Public headers under StormByte/ cover exceptions, Expected, little-endian Serializable, strings, paths, UUID v4, bitmasks, clonable types, ThreadLock, Size, and StormByte::Type concepts.
StormByte::Safe is the owned surface that crosses a DLL without the caller's CRT: collections, wait, and Safe::Thread.
If you landed here from a release link and have not read the tree:
- What this module is, how to build it, and short examples: README.md
- Since 2.0.0 license changed: original source in this repository is dual-licensed, LGPL v3 or later or a commercial license from the copyright holder. The grant does not cover other StormByte modules or
thirdparty/. LICENSE
Added
- Allow using the system SDS library with
-DSTORMBYTE_USE_SYSTEM_SDS=ON; bundled SDS remains the default.
Fixed
- PGO training runner now prepends its library directories to
LD_LIBRARY_PATH/DYLD_LIBRARY_PATHwith the:separator (previously;, which broke library lookup on musl) and no longer appends an empty entry when the variable is unset. find_package(StormByte)identifies Windows import libraries and propagates DLL-import definitions for Base and its components, while retaining static-library behavior.find_package(StormByte COMPONENTS Network)discovers and links Crypto transitively, matching Network's public TLS dependency.- Reconfigure automatically when
VERSIONchanges so rebuilt and installed artifacts use the updated project version.
Changed
- Breaking: Split installed CMake discovery into Base's shared foundation and component-owned
FindStormByte<Component>.cmakefiles. Thefind_package(StormByte ... COMPONENTS ...)interface and target names remain, but older component releases without their own finder are unsupported. - Leave CPU targeting and build-type optimization levels to the toolchain instead of imposing architecture-specific flags;
ENABLE_LTOstill controls interprocedural optimization. - Build the same Linux amd64/arm64, glibc/musl and GCC/libstdc++ or Clang/libc++ variants in CI and releases. CI disables PGO and LTO; releases enable both and use the shared action's automatic CPU baselines.
- Breaking: Linux release ZIP names now include
amd64orarm64, libc and C++ standard library; previous asset names are not supported.