Skip to content

Releases

v1.0.2

Choose a tag to compare

@github-actions github-actions released this 06 Oct 17:13

RunDB_Native v1.0.2: Stability and Performance Improvements

🚀 Highlights & Improvements

⚡ Performance & Networking

• Edge-Triggered I/O Drain Loop: Refactored Client::handle_read() to drain incoming bytes in a loop until EAGAIN / EWOULDBLOCK. Prevents edge-triggered epoll stalls during large bursts and pipelined workloads exceeding the single-read buffer threshold (16 KB).

• Zero-Allocation Map Lookups: Wired transparent heterogeneous lookup (std::string_view) directly into Database key lookups, eliminating transient std::string heap allocations past 15 characters on reads and writes.

🛡 Reliability & Correctness

• AOF Absolute Expiration Fix: Updated AOF snapshot serialization (dump_all) to use std::chrono::system_clock for wall-clock epoch timestamps rather than steady_clock (uptime- based). Keys replayed across server restarts now retain correct expiration deadlines.

• Neutral Latency Reporting: Cleaned up LATENCY DOCTOR telemetry messages, removing legacy hardcoded name references and aligning with modern production-grade diagnostic reporting.

📚 Documentation & Technical Accuracy

• Allocator & Memory Footprint Clarifications: Updated documentation detailing custom run_malloc tracking vs. standard allocator usage (custom SDS buffers, IntSets, QuickLists vs. standard map node overheads).

• Structure Sizing Precision: Corrected internal sizing references in architecture docs (sizeof(SDS) == 32, sizeof(RunDBObject) == 72).

• Metrics & Benchmarks: Added metrics redirection links and attribution notes across project documentation.

Full Changelog: v1.0.1...v1.0.2

v1.0.1

v1.0.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 04 Oct 06:10

RunDB Native v1.0.1: Optimization, Benchmarking & Test Suite Expansion

RunDB Native v1.0.1 introduces targeted engine optimizations, extended test suites, and streamlined test coverage for high-throughput in-memory caching and Redis-compatible workloads.


⚡ What's Changed

🚀 Performance & Memory Optimizations

  • Fast-Path String to Integer Parsing: Leveraged std::from_chars to accelerate numeric unboxing and inline scalar storage directly inside RunDBObject variants, avoiding redundant heap allocations.
  • Cache-Conscious Data Structures: Refined allocation patterns across the custom run_alloc engine, zero-heap SDS (SSO $\le$ 22 bytes), adaptive IntSet, and 32-element chunked QuickList nodes.
  • Lock-Free Atomic Counters: Relaxed atomic operations on LRU clock cycles and keyspace telemetry to minimize cross-core bus contention during heavy pipelines.

🧪 Tests & Verification Suite

  • Comprehensive Test Expansion: Added unit and integration coverage across core subsystems via ./build/rundb_tests, reaching 57 unit tests validating command dispatch, AOF persistence, and passive/active expiration loops.
  • Subsystem Test Filtering: Streamlined CTest execution and added targeted subsystem filtering (--filter <name>) for faster local testing and CI cycles.
  • High-Throughput Benchmarks: Updated native C++ benchmarking binaries (rundb_benchmark) to test TCP network pipelining and direct in-memory engine operations across multi-thousand client loads.

📦 Getting Started

1. Build from Source

# Clone the repository
git clone [https://github.com/DarshanAguru/rundb_native.git](https://github.com/DarshanAguru/rundb_native.git)
cd rundb_native

# Build release target using CMake presets
cmake --preset release
cmake --build --preset build-release

2. Run Test Suite

# Execute native test suite
./build/rundb_tests

# Run with ctest
ctest --test-dir build --output-on-failure

3. Launch Server & Connect

# Start server (default: port 7379)
./build/release/rundb --port 7379

# Connect via standard redis-cli
redis-cli -p 7379 PING

Full Changelog: https://github.com/DarshanAguru/rundb_native/commits/v1.0.1