Cross-platform library for system information fetching
heim
is an ongoing attempt to create the best tool for system information fetching
(ex., CPU, memory, disks or processes stats) in the Rust crates ecosystem.\
It targets to have at least the same functionality as
psutil,
gopsutil or
oshi eventually.
heim
has a few key goals which define its development and public interface:
Async-first.\ Async support in Rust has become a first class citizen and it's about time to use it. While many things here do not require async right now, it will help create better and faster implementations later.
Cross-platform.\
Any code from heim
should just work on any supported platforms.
OS-specific things do exist, but the API design forces users to
pay attention to them.
Modular design.\
Thanks to the various futures
combinators, it's up to you
to choose the exact information you want to get.
Idiomatic and easy to use.
heim
requires stable Rust 1.36+,
but examples, tests and benchmarks use the async_await
feature and therefore require a nightly
compiler.\
Of course, you can use heim
without the async
keyword,
just be aware that it is used by the examples.
heim
is using std::future::Future
and it is expected that users understand
how futures work, how to use them, and what differences there are
between futures versions 0.1
and 0.3/std::future::Future
.\
It is not a project goal to provide any kind of information about how to
combine heim
with actix
, hyper
, tide
, or any other Rust crate.
At the moment heim
is not dependant on any async runtime, but it will in the future
and it will most likely be a runtime crate.
Users may want to consider that fact during development.
At the moment, heim
is in MVP phase, which means that there is only only partial support
for Tier 1
platforms (Linux, macOS, and Windows for i686
and x86_64
).
You can check the GitHub projects page
for more information.
Please be aware that at the moment, heim
(and all sub-crates)
has the "experimental" status,
so consider double checking the results before pushing your code to production.
If you appreciate my work and want to support me or speed up the project development, you can do it here.
Licensed under either of Apache License 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.