#heim #system #information #sysinfo #psutil

heim

Cross-platform framework for system information

6 releases

✓ Uses Rust 2018 edition

0.0.6 Aug 8, 2019
0.0.5 Jul 24, 2019
0.0.2 May 13, 2019
0.0.1 Apr 11, 2019

#75 in Asynchronous

Download history 5/week @ 2019-04-25 2/week @ 2019-05-02 14/week @ 2019-05-09 7/week @ 2019-05-16 6/week @ 2019-05-23 4/week @ 2019-05-30 5/week @ 2019-06-06 1/week @ 2019-06-13 7/week @ 2019-06-20 28/week @ 2019-06-27 43/week @ 2019-07-04 26/week @ 2019-07-11 31/week @ 2019-07-18 136/week @ 2019-07-25 193/week @ 2019-08-01

171 downloads per month

Apache-2.0 OR MIT

117KB
2.5K SLoC

heim

Project banner

Latest Version Latest Version dependency status Build Status Coverage Status Minimum rustc version Apache 2.0 OR MIT licensed Gitter Platforms supported Backers on Open Collective Sponsors on Open Collective

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.

Why should I use heim instead of {crate-name}? See the comparison page.

Background

heim has a few key goals which define its development and public interface:

  1. 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.

  2. 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.

  3. Modular design.
    Thanks to the various futures combinators, it's up to you to choose the exact information you want to get.

  4. Idiomatic and easy to use.

Technical notes

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 async runtime agnostic, but in the future it may need to depend on runtime specific features. Note that if this becomes the case, it is likely that the required runtime(s) will be compatible with the runtime crate. Users may want to consider this fact during development. See #75 for more info.

Platform support

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.

License

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.

Donations

If you appreciate my work and want to support me or speed up the project development, you can do it here or support this project at Open Collective.

Contributors

This project exists thanks to all the people who contribute. Contributors

Backers

Thank you to all our backers! 🙏 [Become a backer]

Backers

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

Dependencies

~3MB
~52K SLoC