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.