Is your feature request related to a problem? Please describe.
Currently, the rabbitmq-stream-client crate indirectly depends on aws-lc-sys through the rustls → ring → aws-lc-rs → aws-lc-sys chain. This causes build issues in environments where the required native build tools (NASM, CMake, MSVC, etc.) are not available — especially in CI/CD or Windows systems without a full C/C++ toolchain.
Describe the solution you'd like
It would be great if aws-lc (and therefore aws-lc-sys) could be made optional via a Cargo feature flag, such as:
[features]
default = ["tls"]
tls = ["rustls"]
pure-rust = []
When pure-rust is enabled (or tls is disabled), the crate could:
- Use a pure-Rust crypto backend if available, or
- Disable TLS entirely for local/insecure/test environments.
- This would dramatically simplify builds in constrained or non-developer environments.
Describe alternatives you've considered
Manually setting environment variables like AWS_LC_SYS_NO_ASM=1, which disables some assembly optimizations but doesn’t remove the dependency entirely. Pinning to older versions of dependencies (ring < 0.17) that predate the AWS-LC migration. Using local patches in Cargo.toml to override transitive dependencies — not ideal or maintainable.
Additional context
Making AWS-LC optional would:
- Improve portability and ease of use in CI/CD and Windows environments.
- Reduce dependency on external build tools.
- Allow developers to build lightweight or pure-Rust configurations when TLS is not required.
This change would help downstream users like plugin developers or embedded systems integrators who want to use rabbitmq-stream-client in minimal environments.
Is your feature request related to a problem? Please describe.
Currently, the rabbitmq-stream-client crate indirectly depends on aws-lc-sys through the rustls → ring → aws-lc-rs → aws-lc-sys chain. This causes build issues in environments where the required native build tools (NASM, CMake, MSVC, etc.) are not available — especially in CI/CD or Windows systems without a full C/C++ toolchain.
Describe the solution you'd like
It would be great if aws-lc (and therefore aws-lc-sys) could be made optional via a Cargo feature flag, such as:
[features]
default = ["tls"]
tls = ["rustls"]
pure-rust = []
When pure-rust is enabled (or tls is disabled), the crate could:
Describe alternatives you've considered
Manually setting environment variables like AWS_LC_SYS_NO_ASM=1, which disables some assembly optimizations but doesn’t remove the dependency entirely. Pinning to older versions of dependencies (ring < 0.17) that predate the AWS-LC migration. Using local patches in Cargo.toml to override transitive dependencies — not ideal or maintainable.
Additional context
Making AWS-LC optional would:
This change would help downstream users like plugin developers or embedded systems integrators who want to use rabbitmq-stream-client in minimal environments.