You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A native, first-class Rust client for Valkey OSS built directly on glide-core. Since glide-core is itself Rust, this wrapper links to it directly — no FFI, no socket bridge — making it the thinnest/fastest GLIDE binding.
This is the epic issue to track Rust preview release. The new Rust client will be added to the valkey-glide repository instead of a separated repository.
Here is the high level effort estimations. For detailed task descriptions, please see below comments.
Deliverables for the Rust preview release. The client itself is preview-ready (async+sync, full command coverage, IAM/PubSub/OpenTelemetry, 3-layer test suite green in CI over Valkey 8.1/8.0/7.2 + Redis 7.2 × x64/arm64); remaining work is release/packaging.
Docs: README / DESIGN / DEVELOPER / CHANGELOG — pending review from team + PM; docs.rs pending publish
VAN team
CI/CD: release/publish workflow — publishes the crate chain in dependency order + version tagging (cargo publish --workspace on Cargo 1.90+)
Package management: crates.io publishing of the chain (source in glide-core repo)
Performance framework: integrate into cross-language benchmark harness
Decisions
Open: the wrapper crate is on its own repo under valkey-io. Our recommendation is that the redis-rs fork, logger_core, and telemetrylib stay embedded in the glide-core repo (no separate repos) and are published to crates.io from that workspace. Additional crates - glide-core, redis-rs fork, logger_core, telemetry.
Open — preview delivery: recommendation is to ship the preview from crates.io (publish chain on the preview critical path), rather than a git-installable preview.
The vendored redis-rs crate should use a more descriptive name, glide-core-aux does not say what it is. Preferably glide-redis, or something protocol-related like glide-resp or glide-protocol. So the full set of names would be glide-logger, glide-telemetry, glide-redis (or whatever we choose), glide-core, and glide (main wrapper/client).
The internal crates should all use 0.x versions to signal they are not meant for direct consumption (README in crates.io would also specify that). The wrapper would follow the same versioning as other clients (e.g. 2.6.0).
We can use dual path and version dependencies to ensure they work locally, in CI, and via crates.io (e.g. logger_core = { path = "../logger_core", version = "0.1" }).
As part of the preview release we should audit the core and ensure that no internals (classes, env vars, etc) are leaked to avoid having to make breaking changes later. Internal crate methods/types like CoreClient should not be exposed. And env vars (GLIDE_NAME, GLIDE_VERSION) should have defaults so users don't have to set these themselves.
Regarding the open decisions:
The wrapper should live in this repo (new rust/ dir), not a separate repo. The wrapper is tightly coupled to the other Rust crates, and most changes to the core and other crates will also require a change to the wrapper at the same time (not the case for other clients that use an FFI layer/API). Also, the Rust crates must all be published so it would be much easier to publish together in the same repo/CI.
Agree we should do a preview/RC release, the internal clients could just use 0.x versions and the wrapper could use a *-rc version to start, published in dependency order (glide-logger, glide-telemetry, glide-redis, glide-core, glide).
Assumes the wrapper is in this repo (rust/ dir), crates are renamed with glide- prefix, and internal crates use 0.x versions with dual path and version dependencies (per discussion above).
1. Pre-publish readiness
Fix GLIDE_VERSION/GLIDE_NAME env vars to have defaults (no .cargo/config.toml needed for users)
Perform an API surface audit; hide core() accessor, add #[non_exhaustive] to error type, update crate metadata/descriptions
Activity
omerrubi-amzn commentedon Jul 29, 2026
Deliverables for the Rust preview release. The client itself is preview-ready (async+sync, full command coverage, IAM/PubSub/OpenTelemetry, 3-layer test suite green in CI over Valkey 8.1/8.0/7.2 + Redis 7.2 × x64/arm64); remaining work is release/packaging.
TLV team
custom_command, batches/transactions, dynamic auth incl. AWS IAM, runtime Pub/Sub, OpenTelemetry)glide-rs/glide-rust/glide-core/glide-telemetry/glide-logger/glide-core-aux(forked redis-rs)../logger_core→glide-logger./telemetry(telemetrylib) →glide-telemetry./redis-rs/redis(forked redis-rs) →glide-core-aux(new name)glide-core→glide-coreglide-core = "x.y")VAN team
cargo publish --workspaceon Cargo 1.90+)Decisions
Open: the wrapper crate is on its own repo under
valkey-io. Our recommendation is that the redis-rs fork,logger_core, andtelemetrylibstay embedded in theglide-corerepo (no separate repos) and are published to crates.io from that workspace. Additional crates - glide-core, redis-rs fork, logger_core, telemetry.Open — preview delivery: recommendation is to ship the preview from crates.io (publish chain on the preview critical path), rather than a git-installable preview.
jeremyprime commentedon Jul 31, 2026
A few thoughts:
glide-core-auxdoes not say what it is. Preferablyglide-redis, or something protocol-related likeglide-resporglide-protocol. So the full set of names would beglide-logger,glide-telemetry,glide-redis(or whatever we choose),glide-core, andglide(main wrapper/client).logger_core = { path = "../logger_core", version = "0.1" }).CoreClientshould not be exposed. And env vars (GLIDE_NAME,GLIDE_VERSION) should have defaults so users don't have to set these themselves.Regarding the open decisions:
rust/dir), not a separate repo. The wrapper is tightly coupled to the other Rust crates, and most changes to the core and other crates will also require a change to the wrapper at the same time (not the case for other clients that use an FFI layer/API). Also, the Rust crates must all be published so it would be much easier to publish together in the same repo/CI.0.xversions and the wrapper could use a*-rcversion to start, published in dependency order (glide-logger,glide-telemetry,glide-redis,glide-core,glide).jeremyprime commentedon Aug 7, 2026
VAN team (updated)
Assumes the wrapper is in this repo (
rust/dir), crates are renamed withglide-prefix, and internal crates use 0.x versions with dual path and version dependencies (per discussion above).1. Pre-publish readiness
GLIDE_VERSION/GLIDE_NAMEenv vars to have defaults (no.cargo/config.tomlneeded for users)core()accessor, add#[non_exhaustive]to error type, update crate metadata/descriptions2. CI/CD
rust-client.ymlworkflow (lint, build, test matrix, cargo-deny); rename existingrust.yml→rust-core.ymlrust-client-cd.ymlpublish workflow (5 crates in dependency order) and crates.io team ownership/tokens3. Publish and verify
glide-logger→glide-telemetry→glide-redis→glide-core→glide(RC version)cargo add glideworks in fresh project without extra config4. Performance framework
Decisions
benchmarks/?Makefiletargets for the Rust client #6865lintjob for the Rust client #6867deny.tomlandrustfmt.tomlfrom Rust client #6868rust/targetin the Rust client tests job #6869testworkflow parity with other clients #6870dependabotcargo entry for the Rust client #6871SCANon cluster clients (usecluster_scan) #687221 remaining items
build(rust): use in-repo path deps for glide-core and redis fork
ci(rust): scan the rust client with cargo-deny against the root config
yipin-chen commentedon Oct 9, 2026
Preview release is released on Oct 6.