2 releases
| 0.1.1 | Nov 11, 2024 |
|---|---|
| 0.1.0 | Sep 1, 2024 |
#750 in Debugging
161 downloads per month
Used in crashy
575KB
13K
SLoC
Indigo in Rust
This is the home of the following crates published on crates.io:
- buildinfy: include build information in your executable, such as current GitLab CI pipeline.
- commandy: small command line argument parser with small binary size.
- crashy: small crash reporter that prints more info than the default crash reporter and has support for Sentry.io.
- expry: evaluates expressions, on binary JSON-like representations.
- hairy: text templating system with error checking (missing values can be detected compile time).
- libpep: implementation of polymorphic encryption and pseudonimisation.
- markdowny: parser for Markdown to AST, so it can be easily converted to other formats.
- searchy: small embedded in-memory search engine supporting evaluation expressions.
- sshboard: a clipboard for SSH.
- tmuxstatus: small utility that shows a CPU usage histogram and current memory usage.
- tweetnacly: Bindings for TweetNaCl, with a couple of additions: flexible SHA2-512 hash, detached mode.
Shared design goals
- Energy efficiency when running the code;
- Small memory footprint;
- Error handling.
We try to achieve this with:
- event-driven programming;
- shifting as much as possible to compile time, and avoid runtime costs;
- use memory efficient data representations.
Dependencies
We distinguish 3 types of dependencies:
- development related dependencies, such as testing frameworks;
- loose coupled dependencies, such as a UUID generating framework;
- tightly coupled dependencies, such as an event framework.
We focus on minimizing the type 3 dependencies, as these are hard to change. Type 2 dependencies should be included in a wrapper function, so it easy to swap out alternative implementations (or implement it on our own in the future).
List of (some) external crates used by multiple crates in indigo-ng:
imageqrcodebcryptxxhash-rust(with xxh32)tokiohyper- TLS related based on
rustls(including rustls-native-certs and tokio-rustls)
Installation
For Debian, Ubuntu, and Raspbian, add the bitpowder repository. See the instructions on that repository page.
For macOS (for tmuxstatus, genny, butlery, libpep-rust, nanoproxy, sshboard):
brew tap bitpowder/indigo-ng https://bitpowder.com:2443/bitpowder/indigo-ng.git
brew install --HEAD bitpowder/indigo-ng/tmuxstatus
Update with brew reinstall bitpowder/indigo-ng/tmuxstatus.
Dependencies
~4–13MB
~145K SLoC