Skip to content

Feature request: Make aws-lc-sys optional via Cargo feature flag #300

Description

@knrl

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions