Release Notes
Engula v1.0 Release Notes
Release window: January 2024 – November 2024
Focus: Compression capabilities and dictionary training, observability and metrics, testing and toolchain, stability fixes.
🚀 Highlights
The v1.0 release delivers compression capabilities along with the accompanying toolchain: it introduces ZSTD/FSST compression and adaptive dictionaries, improves metrics and statistics output, and rounds out the testing and release pipeline.
✨ New Features
Compression and dictionaries:
- Added FSST support and split FSST/ZSTD build.
- Added adaptive dictionaries for ZSTD compression.
- Added KV compression for hashtable and t_hash compression support.
- Added "MC DICTINFO" command and "MC OBJECT" command for compression inspection.
Observability and metrics:
- Added the engula info command to print internal statistics.
- Added new metrics and confirmed redis-exporter metrics.
- Added metrics and stats for dict recycle and LIST compression.
Cluster and operations:
- Cluster failover done.
- Added bgsave check.
Testing and tooling:
- Added ginkgo framework and updated ginkgo test cases.
- Added TCL test cases support.
- Added init.sh script for setting up development environment.
🛠 Improvements and Refactoring
Compression and resource reclamation:
- Refactored mc compress and dict train flow.
- Enhanced dict recycle policy and split reclaim process for HT entries.
- Removed confused compress_stats_tot_try_cnt_ metrics.
Licensing and compliance:
- License will be expired 90 days after the compile time.
- Changed the license expire date from 90 days to 30 days.
Release and versioning:
- Updated engula-server-lib version.
- Docs: update engula version to 1.0.1.
- Added engula-server Dockerfile and refined dockerfile/workflow image names.
🐛 Bug Fixes
- Fixed invalid memory access in compress_cron_task for hash object recycle.
- Fixed wrong database id for ht element.
- Fixed rdb checksum parsing issue.
- Fixed serverPanic issue.
- Fixed exception in human_readable_to_size() when str_size is '0B'.
- Fixed "access after free" issue when AOF reloading.
- Fixed memory double free in hrandfieldWithCountCommand().
- Fixed misc compile errors on Linux/macOS (including hiredis).
🛠 Infrastructure and CI
- Added workflow to auto release cross-platform tarball on tag.
- Added weekly auto build.
- Updated GitHub Actions workflows and build docker images.
Engula v2.0 Release Notes
Release window: December 2024 – March 2025
Focus: Core memory engine integration, basic defragmentation, data structure support.
🚀 Highlights
This release introduces the eallocator memory engine and integrates it deeply with Valkey, laying a foundation for high-performance memory management: including ZSTD compression, Memory Block defragmentation, and dedicated handling for complex data types (Hash, Set, Listpack).
✨ New Features
Core engine integration:
- Integrated Valkey with eallocator and wrapped the key-value store into ekvstore.
- Introduced eallocator support for basic memory arena management.
- Added support for Mutable and Immutable memory blocks.
Compression and encoding:
- Added support for ZSTD compression in earena.
- Implemented Variable Byte Encoding for integers.
Data structure support:
- Added eallocator support for Hash objects and Set objects.
- Refactored Listpack to support Set and Hash objects efficiently.
- Implemented eobj serialization and deserialization.
Observability:
- Introduced the engula info command to print internal statistics.
🛠 Improvements and Refactoring
Defragmentation:
- Rolled out Memory Defragmentation Phase 2 (merging blocks) and Phase 3.
- Added background threads specifically for zip and defragmentation tasks.
- Optimization: Empty blocks are no longer added to the defrag request list.
Memory management:
- Supported up to 32KB record contents in dense/sparse memory blocks.
- Optimized async deletion using a waitable queue in batch mode to reduce CPU usage.
- Refactored elpobj pointers.
🐛 Bug Fixes
- Fixed ZUNION errors when mixing Set and ZSet types.
- Fixed bugs related to HINCRBY results not saving to listpack.
- Resolved memory leaks in e-record and fixed "access after free" issues.
- Fixed Universal Test (UT) errors for bit operations.
Engula v2.1 Release Notes
Release window: April 2025 – November 2025
Focus: Performance tuning, large Value support, module system, upstream synchronization (Valkey 8.1 / Redis 7.2).
🚀 Highlights
The 2.1 release focuses on performance and scalability: it includes significant performance gains such as I/O thread and hash table optimizations, and adds support for Values larger than 4GB. It also aligns compatibility with the latest upstream versions of Valkey (8.1.4) and Redis (7.2).
✨ New Features
Scalability and storage:
- Added support for values larger than 4GB.
- Implemented Active Defragmentation.
- Added support for compress groups.
Module system:
- Added Engula module support.
- Implemented Module GIL (Global Interpreter Lock) support.
Upstream compatibility:
- Merged Valkey 8.1.4 and Valkey 8.1.1.
- Adapted codebase to support Redis 7.2 and related unit tests.
⚡ Performance Improvements
I/O and threading:
- Performance improvements for 8 IO threads and 2 IO threads.
- Added async IO notify functionality.
Hash table optimization:
- Improved overall performance for hashtable GET operations.
- Optimized rehash performance and reduced decompression counts for HMGET.
- Implemented memory prefetch for rehash operations.
Memory and latency:
- Reduced p99 latency.
- Implemented quick async free.
- Disabled lazyfree_lazy_user_flush by default to optimize flushing behavior.
- Supported 64KB page size for ARM64 architecture.
🛠 Infrastructure and CI
Build system:
- Added automated packaging for Linux EL7 (CentOS 7) tarballs.
- Added montplex/ubuntu-build docker image for actions.
- Updated GitHub Actions workflows significantly.
🐛 Bug Fixes
- Fixed VM_HSet bug in the module system.
- Fixed issues related to test scripts.
- Addressed compilation tasks in eallocator.