RedisBloom
Author: Ludovic HENRY ludovic.henry@qti.qualcomm.com
Date: 2026-06-17
Scope: RISC-V (riscv64/linux) support status for RedisBloom
Audience: Technical leadership, resource allocation strategy
Verification policy: Every claim is cross-referenced to a primary upstream source. Items that could not be verified against a second source are marked [NEEDS VERIFICATION].
1. Project Overview
RedisBloom is a Redis module that adds probabilistic data structures to a Redis server: Bloom filter (BF.*), Cuckoo filter (CF.*), Count-Min Sketch (CMS.*), Top-K (TOPK.*), and t-digest (TDIGEST.*). It is implemented in C and loaded at runtime as a shared library (.so) into a running Redis process.
Deprecation status (as of May 2025): The standalone RedisBloom module is deprecated. Starting with Redis 8 GA (May 2025), all RedisBloom data structures are built into the core Redis Open Source codebase. No further standalone releases are planned. Future RISC-V work for these data structures must target redis/redis, not RedisBloom/RedisBloom.
Governance: Redis Ltd. (formerly Redis Labs) wholly owns and governs this project. There is no Linux Foundation, CNCF, or Apache Software Foundation membership. All active maintainers carry @redis.com email addresses: Tom Gabsow, Eran Hadad, and Momchil Marinov are the current active committers. Historical contributors Guy Korland and Mark Nunberg have left for other companies (FalkorDB and Valkey respectively). Contributions require signing the Redis Software Grant and Contributor License Agreement. Major features require pre-approval from Redis Ltd. staff designated as “project leaders.”
License: RSALv2 / SSPLv1 / AGPLv3 (AGPLv3 added with Redis 8 GA in May 2025; earlier releases were RSALv2/SSPLv1 only). The non-OSI-approved dual license has historically deterred Linux distribution packaging.
Culture toward new ports: No published platform tier or porting policy exists. Given the deprecation of the standalone module, Redis Ltd. has no stated interest in extending the standalone module’s platform support. RISC-V work is not on any public roadmap.
2. Port History and Upstreaming Timeline
| Date | Event | Source |
|---|---|---|
| Never | No riscv64-related issue, PR, commit, or discussion has ever appeared in the repository | GitHub code search, issue search, PR search - all return 0 results |
| May 2025 | Redis 8 GA released; RedisBloom data structures integrated into Redis core | README, Redis 8 announcement |
| 2026-08-14 | Standalone module confirmed deprecated; 12 open issues, none architecture-related | Live GitHub issue scan |
No RISC-V port has ever been attempted, proposed, or discussed for RedisBloom. There is no upstreaming timeline because there is no port to upstream.
3. Upstream Support Tier
No formal platform tier policy is published. The effective tier is determined by the CI matrix and the Makefile architecture allowlist.
| Criterion | amd64 (x64) | arm64 | riscv64 |
|---|---|---|---|
| Makefile allowlist | Yes | Yes (as arm64v8) |
No - hard build error |
| CI build | Yes | Yes | No |
| CI test | Yes | Yes | No |
| Official prebuilt binary | No (GitHub Releases have 0 assets) | No | No |
| Debian/Ubuntu package | No (package not in Debian; not in Ubuntu noble) | No | No |
| Explicit README mention | Implicit (default) | Implicit (default) | Not mentioned |
The Makefile contains an explicit allowlist that aborts compilation for any architecture other than x64 or arm64v8 before a single source file is compiled. This is not an oversight; it is a deliberate gate.
4. Technical Architecture and RISC-V-Specific Subsystems
RedisBloom’s source code is entirely portable C with no architecture-specific subsystems.
| Component | File(s) | Architecture-specific code | riscv64 status |
|---|---|---|---|
| Bloom filter core | deps/bloom/bloom.c (255 lines) |
None | Portable C, scalar |
| MurmurHash2 | deps/murmur2/MurmurHash2.c (190 lines) |
None (little-endian assumption; riscv64 is LE by default) | Portable C, scalar |
| Cuckoo filter | src/cuckoo.c (439 lines) |
None | Portable C, scalar |
| Count-Min Sketch | src/cms.c (193 lines) |
None | Portable C, scalar |
| Top-K | src/topk.c (244 lines) |
None | Portable C, scalar |
| t-digest | deps/t-digest-c/ (C99, CMake) |
None | Portable C, scalar |
| Redis module glue | src/rebloom.c, src/sb.c, etc. |
None | Portable C, scalar |
GitHub code search for __x86_64__, __aarch64__, __ARM_NEON, __riscv, and #ifdef __riscv in RedisBloom/RedisBloom returns 0 results for every query. There is no SIMD, no inline assembly, no JIT backend, no arch/ subdirectory, and no ISA dispatch layer anywhere in the codebase.
The absence of architecture-specific code means riscv64 is not behind any other architecture in the compiled logic. The only blocker is the Makefile allowlist, not a missing implementation.
MurmurHash2 uses unaligned 4-byte reads and assumes little-endian byte order. riscv64 Linux is little-endian by default, so there is no correctness issue for the standard deployment configuration.
5. Build System, Cross-Compilation, and Toolchain
Primary build system: GNU Make, wrapping CMake only for the deps/t-digest-c submodule. No top-level CMakeLists.txt exists. C standard: gnu99 (flag: -std=gnu99).
Architecture hard block (exact Makefile text):
ifneq ($(ARCH),x64)
ifneq ($(ARCH),arm64v8)
$(error RedisBloom only supports 64-bit architectures (x64, arm64v8). Current architecture: $(ARCH))
endif
endif
The ARCH variable is populated by deps/readies/paella/platform.py’s _identify_arch() function, which maps aarch64 to arm64v8 but has no mapping for riscv64. On riscv64, platform.machine() returns riscv64 verbatim, which is not in the allowlist, causing the immediate error.
CMake flags for t-digest-c (the only CMake component):
cmake -DBUILD_SHARED=OFF -DBUILD_STATIC=ON -DENABLE_CODECOVERAGE=OFF
-DBUILD_TESTS=OFF -DBUILD_BENCHMARK=OFF -DBUILD_EXAMPLES=OFF
-DCMAKE_C_FLAGS=-DTD_MALLOC_INCLUDE="..."
No architecture-specific CMake flags exist. No riscv64 toolchain file exists anywhere in the repository.
Cross-compilation: Not supported. No documented cross-compilation path, no Docker cross-build configuration, no QEMU build support.
Required fix to unblock a source build on riscv64:
- In
deps/readies/paella/platform.py, add ariscv64case to_identify_arch(). - In the Makefile, extend the architecture allowlist to include
riscv64.
No other source changes are required, as the source code itself is fully portable.
GCC/Clang minimum versions: Not documented. No compiler version guards exist in any Makefile or CMakeLists.txt. [NEEDS VERIFICATION]
6. Feature Coverage and Gap Analysis vs arm64 and amd64
| Feature | amd64 | arm64 | riscv64 |
|---|---|---|---|
BF.* Bloom filter commands |
Full | Full | Not buildable (build gate) |
CF.* Cuckoo filter commands |
Full | Full | Not buildable |
CMS.* Count-Min Sketch commands |
Full | Full | Not buildable |
TOPK.* Top-K commands |
Full | Full | Not buildable |
TDIGEST.* t-digest commands |
Full | Full | Not buildable |
| SIMD acceleration | None (scalar only) | None (scalar only) | None (scalar only) |
There are no SIMD-accelerated code paths on any architecture. riscv64 has no performance gap relative to amd64 or arm64 from missing SIMD - the baseline is uniformly scalar across all three. Any performance delta on riscv64 would be attributable to CPU microarchitecture, clock frequency, and memory subsystem, not to missing software optimization.
No floating-point correctness issues are known. The t-digest component uses IEEE 754 double-precision arithmetic; riscv64 has full hardware double-precision support in the D extension (included in riscv64gc, the standard Linux profile). [NEEDS VERIFICATION - no riscv64 test run has been executed to confirm t-digest numerical output parity]
No security hardening gaps specific to riscv64 are known from the research findings.
7. CI/CD Infrastructure
All 20 workflow files in .github/workflows/ were read in full. The string “riscv” (case-insensitive) appears in zero files across all 20.
| CI dimension | amd64 | arm64 | riscv64 |
|---|---|---|---|
| Build CI | Yes (ubuntu-latest) |
Yes (ubuntu24-arm64-4-16 self-hosted) |
No |
| Functional test CI | Yes | Yes | No |
| Nightly CI | Yes | Yes | No |
| Benchmark CI | Yes (redisfab/rmbuilder:6.2.7-x64-focal) |
No | No |
| QEMU emulation | No | No | No |
| RISE runners | No | No | No |
CI platforms tested (amd64 and arm64 only): Ubuntu focal, jammy, noble, resolute; Debian bullseye, bookworm, trixie; Rocky Linux 8/9/10; AlmaLinux 8/9/10; Amazon Linux 2 and 2023; Azure Linux 3; Alpine.
No RISE CI runners are used for any architecture. No .gitlab-ci.yml, Jenkinsfile, or .cirrus.yml exists in the repository.
8. Distribution and Release Status
| Channel | riscv64 binary | Notes |
|---|---|---|
| GitHub Releases | No | All recent releases (v2.8.24, v2.6.32, v2.4.27, v2.8.23, v2.6.31) have zero release assets attached |
| PyPI redisbloom v0.4.1 | N/A (pure Python) | py3-none-any wheel; architecture-agnostic Python client library, not the server module |
| Debian tracker | No | Package does not exist in Debian (HTTP 404) |
| Ubuntu 24.04 noble | No | Not in Ubuntu noble repository |
| Arch Linux RISC-V mirror | No | Not found in the Arch RISC-V package mirror |
What a user must do to get a working binary on riscv64:
- Remove the architecture allowlist from the Makefile (two
ifneqblocks, approximately 3 lines). - Add a
riscv64case todeps/readies/paella/platform.py. - Build from source using
make build. - Run against a Redis server that also supports riscv64 (see
project-reports/redis.mdfor Redis riscv64 status).
Note: the redisbloom PyPI package (the Python client) installs on riscv64 without any modification because it is a pure-Python library (py3-none-any). However, this client is useless without the server-side .so module also running.
Strategic note: Redis 8 integrates all RedisBloom data structures natively. Users on Redis 8 do not need the standalone module at all. The relevant binary question for RISC-V is the Redis 8 server binary, not the RedisBloom module.
9. Dependencies
| Dependency | Role | riscv64 Build | riscv64 Test | riscv64 Release | Blocker |
|---|---|---|---|---|---|
| Redis server | Required runtime host; RedisBloom loads as a .so module |
Builds (no hard arch gate in Redis source) | No riscv64 CI in Redis repo | No riscv64 binary release | See project-reports/redis.md |
Build system (Makefile + deps/readies/paella) |
Arch detection and build orchestration | BLOCKED - hard Makefile error for riscv64 | N/A | N/A | paella/_identify_arch() has no riscv64 case; Makefile allowlist is {x64, arm64v8} only |
deps/t-digest-c (submodule, tag v0.4.1) |
t-digest sketch for TDIGEST.* |
Builds (pure C99, no arch guards) | No riscv64 CI | No releases | Not a blocker once build gate is removed |
deps/bloom/bloom.c (vendored) |
Bloom filter for BF.* |
Builds (pure C) | Untested on riscv64 | N/A (vendored) | Not a blocker |
deps/murmur2/MurmurHash2.c (vendored) |
Hash function for Bloom and Cuckoo filters | Builds (little-endian assumption; riscv64 is LE) | Untested | N/A (vendored) | Not a blocker |
deps/RedisModulesSDK (submodule) |
Redis module API headers (redismodule.h) |
Builds (header-only) | N/A | N/A | Not a blocker |
The only dependency that constitutes a hard technical blocker is the build system itself. All compiled dependencies are portable C with no architecture-specific code. The Redis server dependency is a separate concern addressed in the Redis status report.
11. Known Bugs and Active Issues
No RISC-V related issues or bugs exist in the RedisBloom/RedisBloom repository. The 12 currently open issues cover macOS build failures, Rocky Linux build errors, Redis 8.x packaging, and user questions about filter behavior.
| Issue | Title | Status | Architecture relevance |
|---|---|---|---|
| All 12 open issues | Various build and usage topics | Open | None - zero riscv64 or architecture content |
GitHub searches for riscv, riscv64, performance, and floating-point topics all returned 0 results. No riscv64 tracking issue has ever been filed.
12. Objections and Upstream Blockers
Deprecation is the primary organizational blocker. RedisBloom is deprecated as of May 2025. Redis Ltd. has no stated interest in extending the standalone module’s platform support. Any riscv64 PR to RedisBloom/RedisBloom would be reviewed by a team that has declared the module end-of-life. The probability of acceptance for a riscv64 port to the standalone repo is low.
Correct upstream target is Redis 8. Since Redis 8 inlines all of these data structures, riscv64 enablement belongs in redis/redis, not in RedisBloom/RedisBloom. See project-reports/redis.md for the Redis riscv64 status. This report’s findings for the standalone module are strategically secondary.
License friction. The RSALv2/SSPLv1/AGPLv3 tri-license has historically prevented inclusion in major Linux distributions. Ubuntu and Debian do not package RedisBloom. This limits the value of a source-level port, since there is no distribution packaging path to deliver it to end users.
Technical blockers are minor. The build gate is a 3-line Makefile change plus a one-line Python addition. The source code itself is fully portable. There are no JIT backends, no SIMD paths, and no architecture-specific assembly to implement. The technical effort to build on riscv64 is trivial; the organizational and strategic barriers are the real constraints.
13. Investment Analysis
Given the deprecation of the standalone module and the integration of all data structures into Redis 8, investment in RedisBloom/RedisBloom specifically is not recommended. The correct investment target is the Redis 8 server (redis/redis).
If a specific use case requires the standalone module (e.g., Redis 6 or 7 deployments), the following applies.
13.1 Functional Enablement
The build system block is the only functional blocker. All algorithms are portable C and will compile and run correctly on riscv64 once the build gate is removed.
13.2 Performance Optimization
No SIMD or ISA-specific optimizations exist on any platform. There is no RISC-V Vector Extension (RVV) gap to close because there is no SIMD baseline to match. Performance is determined entirely by scalar C execution and memory access patterns.
Data not available: no riscv64 benchmark runs have been performed, so no quantitative throughput or latency comparison between riscv64 and amd64/arm64 exists.
13.3 CI/CD Infrastructure
No riscv64 CI exists. Adding it would require either a self-hosted riscv64 runner (hardware or QEMU) or a GitHub Actions runner with riscv64 support. No RISE runners are currently available to this project.
13.4 Ecosystem Enablement
Not applicable. The server-side module has no dependent package ecosystem. The Python client is pure Python and already works on riscv64 without modification.
13.5 Summary Table
| Area | Work Item | Effort (person-weeks) | Owner | Priority |
|---|---|---|---|---|
| Functional | Remove Makefile arch allowlist; add riscv64 case to paella/platform.py |
0.1 | External contributor | Low (module is deprecated; target Redis 8 instead) |
| Functional | Source build validation and correctness testing on riscv64 hardware or QEMU | 0.5 | External contributor | Low |
| CI/CD | Add riscv64 CI lane (QEMU or hardware runner) | 1.0 | External contributor + Redis Ltd. approval | Low |
| Performance | RVV-accelerated MurmurHash2 or Bloom filter inner loop | 2-4 | External contributor | Not recommended (module is deprecated) |
Recommendation: Do not invest in RedisBloom/RedisBloom riscv64 enablement. Direct equivalent effort to redis/redis riscv64 support, which delivers all of the same functionality via Redis 8 and has an active maintenance path.
14. Updates
No updates yet - initial report dated 2026-06-17.
15. References
- RedisBloom GitHub repository
- RedisBloom documentation - Probabilistic data types
- RISE Project member list
- PyPI redisbloom package
- Debian package tracker - redisbloom (404)
- Arch Linux RISC-V mirror
- Ubuntu package search - noble
- RedisBloom GitHub Releases
- RedisBloom CI workflow - flow-linux.yml
- RedisBloom CI workflow - benchmark-flow.yml
- t-digest-c submodule