2 releases
0.0.2 | Dec 31, 2023 |
---|---|
0.0.1 | Jul 29, 2023 |
#5 in #makeup
Used in makeup
5KB
makeup
Pretty CLI / TUI interfaces.
MSRV 1.67.
READ ME FIRST
makeup is still early-stage!!! Treat it like the alpha project it is.
Usage examples
See examples/
!
Demos
cargo run --example wave
Setup
Install pre-commit.
pre-commit install
pre-commit autoupdate
cargo install cargo-audit
Features
- 60fps by default.
- Input and render are fully decoupled, ie input can NEVER block rendering.
- Message-passing-like architecture
- Components are updated and rendered asynchronously.
- Components must not reference each other directly, but instead communicate via message passing.
- Component updates are just reading the message queue from the mailbox, and
updating the component's state accordingly. makeup assumes that any
potentially-blocking task will be moved out of the update/render loop via
tokio::spawn
or similar, and managed via message-passing.
- Render-backend-agnostic.
- Render backends are async.
- Default backends are memory and UNIX-compatible terminal.
- Render backends can be implemented for other protocols!
- Provided to the UI on instantiation.
- Ideas: WASM +
<canvas>
? Multiplex over the network?
Dependencies
~250–700KB
~17K SLoC