Contributing guide
August 15, 2026 ยท View on GitHub
Thank you for investing your time in contributing to pimalaya-stream.
Whether you are a human or an AI agent, read these in order before touching the code:
- the Pimalaya README for what the project is and how its repositories stack;
- the Pimalaya CONTRIBUTING guide, which chains to the shared architecture and guidelines;
- the inline header documentation, starting with src/lib.rs: it is the architecture document of this crate;
- the cairn/ folder for the development history and living plans (the Cairn convention: spec/, changes/, log/).
Everything below documents only what differs from the Pimalaya standards.
Cairn
This repository follows Cairn: a living spec, reviewable change proposals and a dated log, kept next to the code. Non-trivial work starts with a change folder under cairn/changes, and nothing behavioural is done until its delta is folded into cairn/spec and an entry is appended to cairn/log. The activation stanza is AGENTS.md.
Every io- protocol crate sits on this transport, so a behaviour change here reaches all of them at once: name the consumers it moves in the proposal.
Deliberately std
pimalaya-stream wraps TLS providers and sockets and exposes no I/O-free coroutines, so the no_std layer checks of the org guide do not apply: there is no coroutine core to keep std-free. The layers to build against are the feature-gated transport and TLS providers:
cargo build --no-default-features # tls config vocabulary only
cargo build --no-default-features --features std # + transport and proxy, no TLS
cargo build # rustls-ring (default)
cargo build --no-default-features --features rustls-aws
cargo build --no-default-features --features native-tls
There is no async twin planned, so the modules sit flat at the crate root rather than under a runtime one. Should one ever land, that is the decision to revisit first.