Skip to content

Version 3.0.0

Latest

Choose a tag to compare

@StormBytePP StormBytePP released this 04 Nov 12:28
· 2 commits to master since this release

[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_PATH with 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 VERSION changes 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>.cmake files. The find_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_LTO still 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 amd64 or arm64, libc and C++ standard library; previous asset names are not supported.