Skip to content

Releases: eminence/procfs

v0.16.0

29 Oct 16:54
Compare
Choose a tag to compare

This release contains a fairly large internal restructuring, which has noticeable public API changes. A lot of core functionality has been brought into a new procfs-core crate that contains platform-independent data structures and parsing. This crate can be used on all platforms. The procfs crate now depends on procfs-core, and contains all of the Linux-specific code (and thus remains only usable on Linux).

Some procfs functions require information about the running system. For example, the rss_bytes() function needs to know the page size. These functions now have a more complicated API. See the docs for more information, but generally you now have to add a call to .get(), for example:

Old:

let prc = procfs::process::Process::myself().unwrap();
let stat = prc.stat().unwrap();
println!("RSS:   {} bytes", stat.rss_bytes());

New:

use procfs::prelude::*;  // to bring `WithCurrentSystemInfo` into scope

let prc = procfs::process::Process::myself().unwrap();
let stat = prc.stat().unwrap();
println!("RSS:   {} bytes", stat.rss_bytes().get());

We think this new complication is unavoidable, but if you have some thoughts on this, your ideas are welcome in a new issue or discussion thread

New Features

Bug Fixes

  • Don't hide process creation errors in all_processes by @tatref in #260
  • Fix O_PATH for old kernels by @tatref in #266

Full Changelog: v0.15.1...v0.16.0

v0.15.1

18 Feb 17:22
16ccc15
Compare
Choose a tag to compare

New features

New Contributors

Full Changelog: v0.15.0...v0.15.1

v0.15.0

15 Feb 04:10
391bd13
Compare
Choose a tag to compare

New Features

Bug fixes

  • fix chrono::Local::timestamp deprecated in chrono 0.4.23 by @tatref in #220
  • Fix some minor documentation issues by @eminence in #225
  • Fixes the reported path when a task's function returns an error by @eminence in #230
  • fix shm size type by @tatref in #243

Breaking changes

New Contributors

Full Changelog: v0.14.2...v0.15.0

MSRV Note

This v0.15 release is only tested against the latest stable rust compiler, but is known to work with older versions (down to rust 1.48). Support for these older compilers may break in procfs patch releases. See also #223

v0.14.2

04 Dec 06:54
Compare
Choose a tag to compare

New Features

  • Process: Namespace: Use openat instead of building a path by @arilou in #192
  • add serde serialize/deserialize derives for public types by @eliad-wiz in #193
  • Disabling default features on the chrono crate by @Will-Low in #210
  • Implement smaps_rollup by @TaborKelly in #214

Bug fixes

Dependency Updates

Full Changelog: v0.14.0...v0.14.2

v0.14.1

21 Aug 00:16
Compare
Choose a tag to compare

Bug fixes

Full Changelog: v0.14.0...v0.14.1

v0.13.3

20 Aug 23:56
Compare
Choose a tag to compare

Bug fixes

Full Changelog: v0.13.2...v0.13.3

v0.14.0

29 Jul 20:19
Compare
Choose a tag to compare

Breaking changes

  • Process: namespaces: Change from Vec to HashMap by @arilou in #185

New features

  • Add suport for /proc/[pid]/task/[tid]/children by @zmjackson in #180
  • Add 'from_reader' for LoadAverage struct by @ludo-c in #191

Other changes

Full Changelog: v0.13.2...v0.14.0

v0.13.2

11 Jul 19:24
Compare
Choose a tag to compare

New features

v0.13.1

11 Jul 15:17
Compare
Choose a tag to compare

Bug fixes

  • Process: Correct AUXV to support 64bit Linux by @arilou in #178

Note: This fix is technically a breaking change, as the return value for a public API changed from HashMap<u32, u32> to HashMap<u64, u64>. However, since this function has been 100% broken for 4 years, I feel confident that no one is actually using this API.

New features

Other improvements

  • Remove obsolete document about stat field by @dalance in #177
  • Small update to doc comment on fd_count() by @eminence in #183

Full Changelog: v0.13.0...v0.13.1

v0.13.0

02 Jul 20:07
Compare
Choose a tag to compare

Breaking changes

This release has several breaking API changes you should be aware of:

  • MSRV has been changed from 1.34 to 1.48
  • The Process struct has been changed in some important ways:
    • Internally, it now maintains a handle to an opened /proc/<pid> directory. So each Process will have an open file handle, which can matter in extreme cases when you have a large number of Process objects created.
    • Because each Process has a handle to its opened proc directory, there is no longer any PID reuse problems (that is, there is no risk of accidentally getting process information for a new process that has reused a PID)
    • Process no longer implements Clone.
    • Process no longer has a public member stats member that gets pre-populated on construction. If you want this info, you now need to explicitly call the Process::stat() function

New features

Internal changes

Full Changelog: v0.12.0...v0.13.0