A data compression library for embedded and real-time systems with minimal memory usage.
heatshrink is a data compression library specifically designed for embedded systems and real-time applications. It implements LZSS compression with minimal memory requirements and incremental processing capabilities, solving the problem of adding compression to resource-constrained environments where traditional libraries are too heavy.
Embedded systems engineers and firmware developers working on memory-constrained devices like microcontrollers, IoT sensors, and real-time systems that require data compression.
Developers choose heatshrink because it provides usable compression with predictable resource consumption—operating in as little as 50 bytes of RAM with bounded CPU usage—unlike general-purpose compression libraries that are too resource-intensive for embedded contexts.
data compression library for embedded/real-time systems
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Can operate with as little as 50 bytes of RAM, making it ideal for severely memory-constrained embedded systems, as highlighted in the key features.
Handles input data in arbitrarily small chunks, ensuring bounded and predictable CPU usage for hard real-time environments, per the philosophy.
Supports both static and dynamic allocation, allowing developers full control over memory management in embedded contexts.
Adjustable window and lookahead sizes let developers balance memory usage against compression effectiveness, as detailed in the configuration section.
Optimal compression requires manual configuration of window and lookahead sizes, and the README admits that settings must be checked with representative data.
Based solely on LZSS, it lacks modern compression techniques, which may result in lower compression ratios compared to more advanced libraries.
Requires copying source files and configuring heatshrink_config.h manually, lacking pre-built binaries or easy package management.