.・゜゜ 𝕊ℙ𝔸ℝ𝕂𝕃𝔼𝕊 ・゜゜・
Performance-focused library for capturing execution flow of application.

✧ Main parts
- sparkles: Ready-to-use library for capturing events and streaming them to receiving app over TCP
- sparkles-core: Common functionality for std and no_std version of sparkles.
- sparkles-macro: tracing_event! macro to encode event name into integer value.
- sparkles-receiver: This binary will listen to TCP port, capture and decode incoming events and save them to JSON file (Perfetto format).
✧ How to use
- Add sparkles as a dependency to your project
- Run receiving app in background
- Add some events to your code
use Duration;
use tracing_event;
use SparklesConfigBuilder;
// Refer to sparkles/examples/how_to_use.rs
- Run your code. As it finishes, trace.json is generated.
- Go to https://ui.perfetto.dev and drag'n'drop resulting json file.
- Observe the result:

✧ Requirements
🌟 STD support (works better on x86 architecture)
✧ Benches
Single event overhead on average x86 machine (Intel i5-12400) is 9ns.
˚ ༘ ⋆。˚ ✧ ˚ ༘ ⋆。˚ ༘ ⋆。˚ ✧ ˚ ༘ ⋆。˚˚ ༘ ⋆。˚ ✧ ˚ ༘ ⋆。˚ ༘ ⋆。˚ ✧ ˚ ༘ ⋆。˚༘ ⋆。˚ ✧ ˚ ༘
Up to 🫸100kk🫷 events can be captured in a local environment with no data loss.
༘ ⋆。˚ ༘ ⋆。˚ ✧ ˚ ༘ ⋆。˚༘ ⋆。˚ ✧ ˚ ༘ ⋆。˚༘ ⋆。˚ ✧ ˚ ༘ ⋆。˚༘ ⋆。˚ ✧ ˚ ༘ ⋆。˚༘ ⋆。˚ ✧ ˚
✧ Implementation status
Ready:
🌟 Timestamp provider
🌟 Event name hashing
🌟 Perfetto json format compatibility
TODO:
⚙️ Ranges (scopes) support
⚙️ Additional attached binary data
⚙️ Module info support: full module path, line of code
⚙️ Perfetto binary format support
⚙️ Abstraction over events transfer type (TCP/UDP/IPC/File)
⚙️ Capture and transfer loss detection with no corruption to other captured and transmitted data
⚙️ Async support
⚙️ Configuration support
⚙️ NO_STD implementation
⚙️ tags / hierarchy of events
⚙️ Viewer app
⚙️ Multi-app sync
⚙️ Global ranges
⚙️ Measurement overhead self-test
✧ Milestones
TODO
。゚゚・。・゚゚。
゚。SkyGrel19 ✨
゚・。・