Repository navigation
Releases
v1.0.2
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
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_charsto accelerate numeric unboxing and inline scalar storage directly insideRunDBObjectvariants, avoiding redundant heap allocations. -
Cache-Conscious Data Structures: Refined allocation patterns across the custom
run_allocengine, zero-heapSDS(SSO$\le$ 22 bytes), adaptiveIntSet, and 32-element chunkedQuickListnodes. - 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-release2. Run Test Suite
# Execute native test suite
./build/rundb_tests
# Run with ctest
ctest --test-dir build --output-on-failure3. Launch Server & Connect
# Start server (default: port 7379)
./build/release/rundb --port 7379
# Connect via standard redis-cli
redis-cli -p 7379 PINGFull Changelog: https://github.com/DarshanAguru/rundb_native/commits/v1.0.1