A modern, cross-platform C library for creating, reading, and modifying ZIP archives with extensive compression and encryption support.
minizip-ng is a ZIP archive manipulation library written in C, serving as a modern, maintained fork of the original minizip from the zlib distribution. It enables developers to programmatically create, extract, and modify ZIP files with support for multiple compression algorithms, encryption standards, and advanced features like large file handling and Unicode. The project solves the need for an up-to-date, feature-complete, and cross-platform ZIP library that addresses bugs and limitations of the older codebase.
System programmers, embedded developers, and software engineers working in C or C++ who need reliable, high-performance ZIP file handling in their applications, especially those targeting multiple operating systems.
Developers choose minizip-ng for its extensive feature set, active maintenance, and cross-platform reliability. Its unique selling points include support for modern compression methods like ZSTD, strong WinZIP AES encryption, a clean refactored codebase for better maintainability, and a compatibility layer for easy migration from the original minizip.
Fork of the popular zip manipulation library found in the zlib distribution.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports ZSTD, LZMA, PPMD, and other advanced algorithms listed in the features, allowing developers to optimize for speed or compression ratio in diverse scenarios.
Explicitly targets Windows, macOS, and Linux with a unified API, ensuring reliable archive manipulation across operating systems without platform-specific code.
Offers compile-time flags like MZ_COMPRESS_ONLY and MZ_DECOMPRESS_ONLY for tailored builds, reducing footprint or enabling specific use cases as documented in the README.
Includes features to recover corrupt central directories and handle large files via ZIP64, enhancing reliability in real-world archive processing.
The CMake setup with over 20 options (e.g., MZ_FETCH_LIBS, MZ_ZLIB_FLAVOR) can be daunting and error-prone, requiring deep understanding for optimal tuning.
Relies on third-party libraries like bzip2, liblzma, and ZSTD; if not present, CMake fetches them, increasing build time and potential licensing or version conflicts.
As a low-level C library, it demands familiarity with manual memory management and API intricacies, making it less accessible compared to higher-level wrappers.