Relay 0.1.2 — A more personal explanation
Relay 0.1.2
Relay started with a question I kept asking while reading control code: when a call waits here,
what quietly stops running somewhere else?
Version 0.1.2 tells that story more clearly. I rewrote the public documentation in the voice I
use when explaining the project to another person—direct, personal, and honest about what the
analysis can and cannot prove.
What changed
- The README now explains why I built Relay and walks through how an analysis works.
- Tutorials connect each command to the reason I would use it during a review.
- Architecture, configuration, timing, and limitation pages explain the decisions behind their
technical details. - Support, contributing, security, conduct, roadmap, and GitHub templates now sound like a
maintainer speaking directly to a contributor. - Commands, rule meanings, report formats, and safety boundaries remain precise and unchanged.
Oh—and that last point is important. This release changes how I explain Relay, not what Relay
claims to know. Findings are still conservative review prompts; timing values are still estimates;
and source is still analysed locally without being executed, imported, compiled, or uploaded.
How Relay works
Relay first discovers supported files within explicit bounds. It parses Python with the standard
AST and C-family sources with a position-preserving structural parser. From there, it identifies
blocking patterns, connects simple direct calls, and compares reachable delays with any timing
contracts you provide. The output keeps source facts, inferred paths, and timing estimates
separate so each conclusion can be reviewed.
Compatibility
- Python 3.9–3.14
- Arduino, ESP32, embedded C++, MicroPython, and Python sources
- Local and offline operation after installation
- No analyser rule, report schema, Python API, or CLI behaviour changes from 0.1.1
Install
python -m pip install relay_lint-0.1.2-py3-none-any.whl
relay --version
relay check examplesRelay does not guarantee real-time or physical-machine safety. Test every change on the actual
target before deployment.