Simple Dynamic Strings is a C string library developed to address the limitations of the standard C library’s string handling (null-terminated char pointers) by providing heap-allocated, binary-safe, efficient dynamic strings. The library was originally used internally in Redis, but pulled out as a standalone project to allow any C project to benefit from its features. SDS strings maintain metadata (length, allocation size) just before the pointer returned to the user, while still being compatible with standard C string APIs (null-terminated). They enable common operations like concatenation, formatted append, efficient growth and trimming, and safe binary data handling. The design emphasises simplicity, compatibility, performance and minimal overhead: you still get a C-style char * string pointer, but you also get length tracking, safe memory management, and higher-level string operations. As a mature library, it is used in performance-sensitive contexts.
Features
- Dynamic heap-allocated string type with metadata preceding the pointer returned to user
- Binary-safe operations (strings may contain zeros / null bytes internally)
- C API compatibility (null-terminated pointer so you can use standard C string functions for reading)
- Efficient growth, concatenation and trimming operations (e.g., sdscatfmt)
- Low overhead and small code footprint for embedding into C projects
- Widely used in high-performance systems (e.g., Redis) and MIT/BSD-style friendly license