nfx-stringbuilder
0.7.0
Cross-platform C++20 library for zero-allocation string building with Small Buffer Optimization
Main Page
Related Pages
Classes
Files
Loading...
Searching...
No Matches
Changelog
[Unreleased]
Added
NIL
Changed
NIL
Deprecated
NIL
Removed
NIL
Fixed
NIL
Security
NIL
[0.7.0] - 2026-02-15
Added
build:
NFX_STRINGBUILDER_ENABLE_SIMD
option to control SIMD optimizations (ON by default, can be disabled for WASM targets)
Changed
build: simplified CMake packaging configuration (source packages only, removed DEB/RPM/WIX complexity)
build: cleaned up CMake structure and removed redundant configuration options
[0.6.2] - 2026-02-14
Changed
build: extend strict compiler warnings to benchmarks, samples, and tests targets
[0.6.1] - 2026-02-14
Changed
build: enforce strict compiler warnings (
-Wall -Wextra -Werror
for GCC/Clang,
/W4 /WX
for MSVC)
Fixed
Missing
#include <array>
in
samples/Sample_StringBuilder.cpp
[0.6.0] - 2026-02-11
Added
Line-based operations:
appendLine(str)
and
appendLn(str)
- append string with automatic newline character
Join operations:
join(container, delimiter)
- join collection elements with delimiter (supports both
string_view
and
char
delimiters)
Changed
chore(deps): bump google-benchmark from 1.9.4 to 1.9.5
[0.5.0] - 2026-01-27
Added
Template overloads for string literals with compile-time length deduction (zero
strlen()
overhead)
Cross-platform
NFX_STRINGBUILDER_FORCE_INLINE
macro (MSVC
__forceinline
, GCC/Clang
__attribute__((always_inline))
)
Changed
Numeric append methods write directly to buffer with
std::to_chars
Direct
m_buffer
pointer access eliminates helper method overhead
Move-optimized
toString() &&
overload for rvalue instances
Stack buffer aligned to 32 bytes for better compiler auto-vectorization
[0.4.1] - 2025-12-20
Added
Prepend operations -
StringBuilder::prepend()
methods for inserting content at the beginning of the buffer
[0.4.0] - 2025-12-18
Changed
BREAKING
: Simplified architecture - removed pooling system in favor of direct
StringBuilder
instantiation
Removed
BREAKING
:
StringBuilderPool
static factory class and three-tier pooling system (thread-local, shared, dynamic)
BREAKING
:
StringBuilderLease
RAII wrapper for pooled buffer management
DynamicStringBufferPool
internal class
[0.3.0] - 2025-12-07
Added
Method chaining support for all
StringBuilder::append()
methods (now return
StringBuilder&
)
Numeric
append()
methods for
int8_t
,
uint8_t
,
int16_t
,
uint16_t
,
int32_t
,
uint32_t
,
int64_t
,
uint64_t
,
float
, and
double
Variadic
append()
template overload for batch operations - append multiple arguments in a single call (supports strings, chars, and numeric types)
Changed
Stream operators (
operator<<
) for all numeric types optimized with
std::to_chars
implementation
Optimized capacity checks in
DynamicStringBuffer
append methods
SIMD optimizations (AVX2/SSE2) for string copy operations in
DynamicStringBuffer::append()
Growth factor increased from 1.5 to 2.0 for better reallocation performance
[0.2.0] - 2025-12-03
Added
StringBuilder::reserve()
method for consistent API with
DynamicStringBuffer
Changed
Reorganized CMake build configuration for better modularity
Decentralized dependency management to test/benchmark modules
Improved package portability with PATH_VARS configuration
[0.1.1] - 2025-11-28
Changed
Consolidated packaging tool detection in CMake configuration
Fixed
Removed incorrect runtime dependencies from DEB/RPM packages
[0.1.0] - 2025-11-23 - Initial Release
Added
Core String Building
DynamicStringBuffer
with Small Buffer Optimization (256-byte stack buffer)
StringBuilder
with fluent interface and stream operators (
<<
)
StringBuilderLease
RAII wrapper for automatic pool cleanup
StringBuilderPool
static factory with three-tier pooling strategy
std::formatter
specializations for
DynamicStringBuffer
and
StringBuilder
enabling direct usage in
std::format()
Numeric type support via
operator<<
overloads for
int32_t
,
uint32_t
,
int64_t
,
uint64_t
,
float
,
double
Type-safe formatting via
format(fmt, args...)
method using
std::format_to
with
std::back_inserter
Private
push_back(char)
method as inline alias to
append(char)
for
std::back_inserter
compatibility
Capacity hints via
StringBuilderPool::lease(size_t capacityHint)
for pre-sized buffer allocation
Performance Features
Thread-local caching for zero-lock hotpath performance
Shared cross-thread buffer pool with mutex protection
Automatic capacity management with 1.5x growth factor
Zero-copy operations using
string_view
High cache hit rates (90%+ in typical workloads)
Developer Experience
Iterator support for STL compatibility and range-based for loops
Pool statistics tracking (hit rates, allocations, requests)
Direct buffer access for low-level operations
Comprehensive error handling with move-only semantics
Documentation
README with feature overview
Detailed API documentation with Doxygen comments
Sample application demonstrating library usage
Build and installation instructions
Testing & Benchmarking
Unit test suite
Performance benchmarks for all operations
Cross-compiler performance validation
Generated by
1.15.0