Crates.io | tracers |
lib.rs | tracers |
version | 0.1.0 |
source | src |
created_at | 2019-11-20 16:37:53.086172 |
updated_at | 2019-11-20 16:37:53.086172 |
description | Generates very low overhead native trace points using stable Rust |
homepage | |
repository | https://github.com/anelson/tracers |
max_upload_size | |
id | 183022 |
size | 87,001 |
tracers
is intended to be an easy to use and cross-platform Rust crate which makes it easy to add high-performance
low-overhead probes to Rust programs. Underneath it will use each platform's native probing mechanism, like System Tap
on Linux, DTrace on BSD, and ETW on Windows. Those platforms without a supported probing mechanism will fall back to
a no-op implementation.
A key goal of this crate is to be able to drop it in to any Rust project, create and fire probes wherever it makes sense, and leave those probes in place all the time. When probes are disabled at compile time, there should be zero runtime impact, and when probes are compiled in but not enabled at runtime the probe impact should be no more than one or two CPU instructions.
IMPORTANT: tracers
is still in the early experimental stages. The author hereby guarantees it will not work on
your system, may cause data loss, and definitely contributes to premature hair loss. Do not use it.
Except where otherwise indicated, this project is licensed under either of
at your option.
However, the following -sys
crates have the license
corresponding to the third-party code which they wrap:
tracers-libelf-sys
- Wraps elfutils
libraries and thus is licensed LGPLv3tracers-libstapsdt-sys
- Wraps libstapsdt
and thus is licensed MITUnless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in tracers
by you, as defined in the Apache-2.0 license, shall be
dual licensed as above, without any additional terms or conditions.
This section applies to maintainers only.
To release a new version, dependent crates must be released first. The bin/publish.sh
script helps to automate the
process but it's still quite manual.
Release process:
Update the version
property of all crates and of all crates' dependencies on other tracers
crates to the new
target version.
Ensure all dependencies have both a path dependency for local development, and a version dependency for publishing. These must be consistent with the new version being published.
Update the documentation
link to reflect the current version.
Crates must be published in this order:
tracers-core
tracers-libelf-sys
tracers-libstapsdt-sys
tracers-codegen
tracers-macros-hack
tracers-macros
tracers-dyn-stap
tracers-dyn-noop
tracers-build
tracers