v0.3.0
What's new
This release introduces a new, optimized restorer engine that significantly improves performance while minimizing I/O requests to the backend. The new restorer replaces the previous blob-sequential implementation, being more suitable for backends with high latency and/or metered requests like SFTP or S3.
Changes
- Multi-platform Build System: Overhauled the build system to support static, cross-platform releases for Linux (x64/ARM), Windows, and macOS.
- Self-contained binary: Link all dependencies statically for release
- Redesigned Restorer: Implemented a new high-performance, pack-centric restoration engine with background prefetching, range-based downloads, and concurrent restoration to significantly improve I/O efficiency.
- Improved Metadata Restoration: File and directory metadata are now restored in a separate bottom-up pass to ensure consistency.
- Environment Variables: Added support for
MAPACHE_REPOSITORY,MAPACHE_USERNAME, andMAPACHE_PASSWORDto simplify automation and scripting. - Enhanced CLI UI: Improved error and warning messages with clearer formatting and better cross-platform color support.
- Added
--exclude-fileand--include-fileto read include and exclude paths from file. - Return codes: Mapache can now return error codes. Experimental support added for the
init,snapshot,restore,verify,clean,sync,forgetandlscommands.
Fixes
- Make sure that locks are always released under normal termination.
- Update dependencies patching some vulnerabilities.
- Security fixes:
- Ensure files are never restored outside of the target directory.
- Zeroize sensitive data (passwords, keys, etc.) after use.
- Hardened FUSE permissions.
- Stability and Safety:
- Optimized memory usage during restoration by using a fixed-size buffer for file verification.
- Hardened garbage collection and retention logic by replacing risky panics with structured error handling.
- Fixed a bug in
restorewith--deletewhere some nodes were not correctly identified for deletion.
Full Changelog: v0.2.3...v0.3.0