giampaolo/psutil (psutil)
### [`v5.9.8`](https://togithub.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#598)
[Compare Source](https://togithub.com/giampaolo/psutil/compare/release-5.9.7...release-5.9.8)
\=====
2024-01-19
**Enhancements**
- 2343\_, \[FreeBSD]: filter `net_connections()`\_ returned list in C instead of
Python, and avoid to retrieve unnecessary connection types unless explicitly
asked. E.g., on an IDLE system with few IPv6 connections this will run around
4 times faster. Before all connection types (TCP, UDP, UNIX) were retrieved
internally, even if only a portion was returned.
- 2342\_, \[NetBSD]: same as above ([#2343](https://togithub.com/giampaolo/psutil/issues/2343)) but for NetBSD.
- 2349\_: adopted black formatting style.
**Bug fixes**
- 930\_, \[NetBSD], \[critical]: `net_connections()`\_ implementation was broken.
It could either leak memory or core dump.
- 2340\_, \[NetBSD]: if process is terminated, `Process.cwd()`\_ will return an
empty string instead of raising `NoSuchProcess`\_.
- 2345\_, \[Linux]: fix compilation on older compiler missing DUPLEX_UNKNOWN.
- 2222\_, \[macOS]: `cpu_freq()` now returns fixed values for `min` and `max`
frequencies in all Apple Silicon chips.
### [`v5.9.7`](https://togithub.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#597)
[Compare Source](https://togithub.com/giampaolo/psutil/compare/release-5.9.6...release-5.9.7)
\=====
2023-12-17
**Enhancements**
- 2324\_: enforce Ruff rule `raw-string-in-exception`, which helps providing
clearer tracebacks when exceptions are raised by psutil.
**Bug fixes**
- 2325\_, \[PyPy]: psutil did not compile on PyPy due to missing
`PyErr_SetExcFromWindowsErrWithFilenameObject` cPython API.
### [`v5.9.6`](https://togithub.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#596)
[Compare Source](https://togithub.com/giampaolo/psutil/compare/release-5.9.5...release-5.9.6)
\=====
2023-10-15
**Enhancements**
- 1703\_: `cpu_percent()`\_ and `cpu_times_percent()`\_ are now thread safe,
meaning they can be called from different threads and still return
meaningful and independent results. Before, if (say) 10 threads called
`cpu_percent(interval=None)` at the same time, only 1 thread out of 10
would get the right result.
- 2266\_: if `Process`\_ class is passed a very high PID, raise `NoSuchProcess`\_
instead of OverflowError. (patch by Xuehai Pan)
- 2246\_: drop python 3.4 & 3.5 support. (patch by Matthieu Darbois)
- 2290\_: PID reuse is now pre-emptively checked for `Process.ppid()`\_ and
`Process.parents()`\_.
- 2312\_: use `ruff` Python linter instead of `flake8 + isort`. It's an
order of magnitude faster + it adds a ton of new code quality checks.
**Bug fixes**
- 2195\_, \[Linux]: no longer print exception at import time in case /proc/stat
can't be read due to permission error. Redirect it to `PSUTIL_DEBUG`
instead.
- 2241\_, \[NetBSD]: can't compile On NetBSD 10.99.3/amd64. (patch by Thomas
Klausner)
- 2245\_, \[Windows]: fix var unbound error on possibly in `swap_memory()`\_
(patch by student\_2333)
- 2268\_: `bytes2human()` utility function was unable to properly represent
negative values.
- 2252\_, \[Windows]: `disk_usage()`\_ fails on Python 3.12+. (patch by
Matthieu Darbois)
- 2284\_, \[Linux]: `Process.memory_full_info()`\_ may incorrectly raise
`ZombieProcess`\_ if it's determined via `/proc/pid/smaps_rollup`. Instead
we now fallback on reading `/proc/pid/smaps`.
- 2287\_, \[OpenBSD], \[NetBSD]: `Process.is_running()`\_ erroneously return
`False` for zombie processes, because creation time cannot be determined.
- 2288\_, \[Linux]: correctly raise `ZombieProcess`\_ on `Process.exe()`*,
`Process.cmdline()`* and `Process.memory_maps()`\_ instead of returning a
"null" value.
- 2290\_: differently from what stated in the doc, PID reuse is not
pre-emptively checked for `Process.nice()`\_ (set), `Process.ionice()`*,
(set), `Process.cpu_affinity()`* (set), `Process.rlimit()`\_
(set), `Process.parent()`\_.
- 2308\_, \[OpenBSD]: `Process.threads()`\_ always fail with AccessDenied (also as
root).
### [`v5.9.5`](https://togithub.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#595)
[Compare Source](https://togithub.com/giampaolo/psutil/compare/release-5.9.4...release-5.9.5)
\=====
2023-04-17
**Enhancements**
- 2196\_: in case of exception, display a cleaner error traceback by hiding the
`KeyError` bit deriving from a missed cache hit.
- 2217\_: print the full traceback when a `DeprecationWarning` or `UserWarning`
is raised.
- 2230\_, \[OpenBSD]: `net_connections()`\_ implementation was rewritten
from scratch:
- We're now able to retrieve the path of AF_UNIX sockets (before it was an
empty string)
- The function is faster since it no longer iterates over all processes.
- No longer produces duplicate connection entries.
- 2238\_: there are cases where `Process.cwd()`\_ cannot be determined
(e.g. directory no longer exists), in which case we returned either `None`
or an empty string. This was consolidated and we now return `""` on all
platforms.
- 2239\_, \[UNIX]: if process is a zombie, and we can only determine part of the
its truncated `Process.name()`\_ (15 chars), don't fail with `ZombieProcess`\_
when we try to guess the full name from the `Process.cmdline()`\_. Just
return the truncated name.
- 2240\_, \[NetBSD], \[OpenBSD]: add CI testing on every commit for NetBSD and
OpenBSD platforms (python 3 only).
**Bug fixes**
- 1043\_, \[OpenBSD] `net_connections()`\_ returns duplicate entries.
- 1915\_, \[Linux]: on certain kernels, `"MemAvailable"` field from
`/proc/meminfo` returns `0` (possibly a kernel bug), in which case we
calculate an approximation for `available` memory which matches "free"
CLI utility.
- 2164\_, \[Linux]: compilation fails on kernels < 2.6.27 (e.g. CentOS 5).
- 2186\_, \[FreeBSD]: compilation fails with Clang 15. (patch by Po-Chuan Hsieh)
- 2191\_, \[Linux]: `disk_partitions()`*: do not unnecessarily read
/proc/filesystems and raise `AccessDenied`* unless user specified `all=False`
argument.
- 2216\_, \[Windows]: fix tests when running in a virtual environment (patch by
Matthieu Darbois)
- 2225\_, \[POSIX]: `users()`\_ loses precision for `started` attribute (off by
1 minute).
- 2229\_, \[OpenBSD]: unable to properly recognize zombie processes.
`NoSuchProcess`\_ may be raised instead of `ZombieProcess`\_.
- 2231\_, \[NetBSD]: *available* `virtual_memory()`\_ is higher than *total*.
- 2234\_, \[NetBSD]: `virtual_memory()`\_ metrics are wrong: *available* and
*used* are too high. We now match values shown by *htop* CLI utility.
- 2236\_, \[NetBSD]: `Process.num_threads()`\_ and `Process.threads()`\_ return
threads that are already terminated.
- 2237\_, \[OpenBSD], \[NetBSD]: `Process.cwd()`\_ may raise `FileNotFoundError`
if cwd no longer exists. Return an empty string instead.
### [`v5.9.4`](https://togithub.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#594)
[Compare Source](https://togithub.com/giampaolo/psutil/compare/release-5.9.3...release-5.9.4)
\=====
2022-11-07
**Enhancements**
- 2102\_: use Limited API when building wheels with CPython 3.6+ on Linux,
macOS and Windows. This allows to use pre-built wheels in all future versions
of cPython 3. (patch by Matthieu Darbois)
**Bug fixes**
- 2077\_, \[Windows]: Use system-level values for `virtual_memory()`\_. (patch by
Daniel Widdis)
- 2156\_, \[Linux]: compilation may fail on very old gcc compilers due to missing
`SPEED_UNKNOWN` definition. (patch by Amir Rossert)
- 2010\_, \[macOS]: on MacOS, arm64 `IFM_1000_TX` and `IFM_1000_T` are the
same value, causing a build failure. (patch by Lawrence D'Anna)
- 2160\_, \[Windows]: Get Windows percent swap usage from performance counters.
(patch by Daniel Widdis)
### [`v5.9.3`](https://togithub.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#593)
[Compare Source](https://togithub.com/giampaolo/psutil/compare/release-5.9.2...release-5.9.3)
\=====
2022-10-18
**Enhancements**
- 2040\_, \[macOS]: provide wheels for arm64 architecture. (patch by Matthieu
Darbois)
**Bug fixes**
- 2116\_, \[macOS], \[critical]: `net_connections()`\_ fails with RuntimeError.
- 2135\_, \[macOS]: `Process.environ()`\_ may contain garbage data. Fix
out-of-bounds read around `sysctl_procargs`. (patch by Bernhard Urban-Forster)
- 2138\_, \[Linux], **\[critical]**: can't compile psutil on Android due to
undefined `ethtool_cmd_speed` symbol.
- 2142\_, \[POSIX]: `net_if_stats()`\_ 's `flags` on Python 2 returned unicode
instead of str. (patch by Matthieu Darbois)
- 2147\_, \[macOS] Fix disk usage report on macOS 12+. (patch by Matthieu Darbois)
- 2150\_, \[Linux] `Process.threads()`\_ may raise `NoSuchProcess`. Fix race
condition. (patch by Daniel Li)
- 2153\_, \[macOS] Fix race condition in test_posix.TestProcess.test_cmdline.
(patch by Matthieu Darbois)
### [`v5.9.2`](https://togithub.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#592)
[Compare Source](https://togithub.com/giampaolo/psutil/compare/release-5.9.1...release-5.9.2)
\=====
2022-09-04
**Bug fixes**
- 2093\_, \[FreeBSD], **\[critical]**: `pids()`\_ may fail with ENOMEM. Dynamically
increase the `malloc()` buffer size until it's big enough.
- 2095\_, \[Linux]: `net_if_stats()`\_ returns incorrect interface speed for
100GbE network cards.
- 2113\_, \[FreeBSD], **\[critical]**: `virtual_memory()`\_ may raise ENOMEM due to
missing `#include ` directive. (patch by Peter Jeremy)
- 2128\_, \[NetBSD]: `swap_memory()`\_ was miscalculated. (patch by Thomas Klausner)
### [`v5.9.1`](https://togithub.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#591)
[Compare Source](https://togithub.com/giampaolo/psutil/compare/release-5.9.0...release-5.9.1)
\=====
2022-05-20
**Enhancements**
- 1053\_: drop Python 2.6 support. (patches by Matthieu Darbois and Hugo van
Kemenade)
- 2037\_: Add additional flags to net_if_stats.
- 2050\_, \[Linux]: increase `read(2)` buffer size from 1k to 32k when reading
`/proc` pseudo files line by line. This should help having more consistent
results.
- 2057\_, \[OpenBSD]: add support for `cpu_freq()`\_.
- 2107\_, \[Linux]: `Process.memory_full_info()`\_ (reporting process USS/PSS/Swap
memory) now reads `/proc/pid/smaps_rollup` instead of `/proc/pids/smaps`,
which makes it 5 times faster.
**Bug fixes**
- 2048\_: `AttributeError` is raised if `psutil.Error` class is raised
manually and passed through `str`.
- 2049\_, \[Linux]: `cpu_freq()`\_ erroneously returns `curr` value in GHz while
`min` and `max` are in MHz.
- 2050\_, \[Linux]: `virtual_memory()`\_ may raise `ValueError` if running in a
LCX container.
### [`v5.9.0`](https://togithub.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#590)
[Compare Source](https://togithub.com/giampaolo/psutil/compare/release-5.8.0...release-5.9.0)
\=====
2021-12-29
**Enhancements**
- 1851\_, \[Linux]: `cpu_freq()`\_ is slow on systems with many CPUs. Read current
frequency values for all CPUs from `/proc/cpuinfo` instead of opening many
files in `/sys` fs. (patch by marxin)
- 1992\_: `NoSuchProcess`\_ message now specifies if the PID has been reused.
- 1992\_: error classes (`NoSuchProcess`*, `AccessDenied`*, etc.) now have a better
formatted and separated `__repr__` and `__str__` implementations.
- 1996\_, \[BSD]: add support for MidnightBSD. (patch by Saeed Rasooli)
- 1999\_, \[Linux]: `disk_partitions()`\_: convert `/dev/root` device (an alias
used on some Linux distros) to real root device path.
- 2005\_: `PSUTIL_DEBUG` mode now prints file name and line number of the debug
messages coming from C extension modules.
- 2042\_: rewrite HISTORY.rst to use hyperlinks pointing to psutil API doc.
**Bug fixes**
- 1456\_, \[macOS], **\[critical]**: `cpu_freq()`\_ `min` and `max` are set to
0 if can't be determined (instead of crashing).
- 1512\_, \[macOS]: sometimes `Process.connections()`\_ will crash with
`EOPNOTSUPP` for one connection; this is now ignored.
- 1598\_, \[Windows]: `disk_partitions()`\_ only returns mountpoints on drives
where it first finds one.
- 1874\_, \[SunOS]: swap output error due to incorrect range.
- 1892\_, \[macOS]: `cpu_freq()`\_ broken on Apple M1.
- 1901\_, \[macOS]: different functions, especially `Process.open_files()`\_ and
`Process.connections()`*, could randomly raise `AccessDenied`* because the
internal buffer of `proc_pidinfo(PROC_PIDLISTFDS)` syscall was not big enough.
We now dynamically increase the buffer size until it's big enough instead of
giving up and raising `AccessDenied`\_, which was a fallback to avoid crashing.
- 1904\_, \[Windows]: `OpenProcess` fails with `ERROR_SUCCESS` due to
`GetLastError()` called after `sprintf()`. (patch by alxchk)
- 1913\_, \[Linux]: `wait_procs()`\_ should catch `subprocess.TimeoutExpired`
exception.
- 1919\_, \[Linux]: `sensors_battery()`\_ can raise `TypeError` on PureOS.
- 1921\_, \[Windows]: `swap_memory()`\_ shows committed memory instead of swap.
- 1940\_, \[Linux]: psutil does not handle `ENAMETOOLONG` when accessing process
file descriptors in procfs. (patch by Nikita Radchenko)
- 1948\_, **\[critical]**: `memoize_when_activated` decorator is not thread-safe.
(patch by Xuehai Pan)
- 1953\_, \[Windows], **\[critical]**: `disk_partitions()`\_ crashes due to
insufficient buffer len. (patch by MaWe2019)
- 1965\_, \[Windows], **\[critical]**: fix "Fatal Python error: deallocating None"
when calling `users()`\_ multiple times.
- 1980\_, \[Windows]: 32bit / WoW64 processes fails to read `Process.name()`\_ longer
than 128 characters resulting in `AccessDenied`\_. This is now fixed. (patch
by PetrPospisil)
- 1991\_, **\[critical]**: `process_iter()`\_ is not thread safe and can raise
`TypeError` if invoked from multiple threads.
- 1956\_, \[macOS]: `Process.cpu_times()`\_ reports incorrect timings on M1 machines.
(patch by Olivier Dormond)
- 2023\_, \[Linux]: `cpu_freq()`\_ return order is wrong on systems with more than
9 CPUs.
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR contains the following updates:
==5.8.0
->==5.9.8
Release Notes
giampaolo/psutil (psutil)
### [`v5.9.8`](https://togithub.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#598) [Compare Source](https://togithub.com/giampaolo/psutil/compare/release-5.9.7...release-5.9.8) \===== 2024-01-19 **Enhancements** - 2343\_, \[FreeBSD]: filter `net_connections()`\_ returned list in C instead of Python, and avoid to retrieve unnecessary connection types unless explicitly asked. E.g., on an IDLE system with few IPv6 connections this will run around 4 times faster. Before all connection types (TCP, UDP, UNIX) were retrieved internally, even if only a portion was returned. - 2342\_, \[NetBSD]: same as above ([#2343](https://togithub.com/giampaolo/psutil/issues/2343)) but for NetBSD. - 2349\_: adopted black formatting style. **Bug fixes** - 930\_, \[NetBSD], \[critical]: `net_connections()`\_ implementation was broken. It could either leak memory or core dump. - 2340\_, \[NetBSD]: if process is terminated, `Process.cwd()`\_ will return an empty string instead of raising `NoSuchProcess`\_. - 2345\_, \[Linux]: fix compilation on older compiler missing DUPLEX_UNKNOWN. - 2222\_, \[macOS]: `cpu_freq()` now returns fixed values for `min` and `max` frequencies in all Apple Silicon chips. ### [`v5.9.7`](https://togithub.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#597) [Compare Source](https://togithub.com/giampaolo/psutil/compare/release-5.9.6...release-5.9.7) \===== 2023-12-17 **Enhancements** - 2324\_: enforce Ruff rule `raw-string-in-exception`, which helps providing clearer tracebacks when exceptions are raised by psutil. **Bug fixes** - 2325\_, \[PyPy]: psutil did not compile on PyPy due to missing `PyErr_SetExcFromWindowsErrWithFilenameObject` cPython API. ### [`v5.9.6`](https://togithub.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#596) [Compare Source](https://togithub.com/giampaolo/psutil/compare/release-5.9.5...release-5.9.6) \===== 2023-10-15 **Enhancements** - 1703\_: `cpu_percent()`\_ and `cpu_times_percent()`\_ are now thread safe, meaning they can be called from different threads and still return meaningful and independent results. Before, if (say) 10 threads called `cpu_percent(interval=None)` at the same time, only 1 thread out of 10 would get the right result. - 2266\_: if `Process`\_ class is passed a very high PID, raise `NoSuchProcess`\_ instead of OverflowError. (patch by Xuehai Pan) - 2246\_: drop python 3.4 & 3.5 support. (patch by Matthieu Darbois) - 2290\_: PID reuse is now pre-emptively checked for `Process.ppid()`\_ and `Process.parents()`\_. - 2312\_: use `ruff` Python linter instead of `flake8 + isort`. It's an order of magnitude faster + it adds a ton of new code quality checks. **Bug fixes** - 2195\_, \[Linux]: no longer print exception at import time in case /proc/stat can't be read due to permission error. Redirect it to `PSUTIL_DEBUG` instead. - 2241\_, \[NetBSD]: can't compile On NetBSD 10.99.3/amd64. (patch by Thomas Klausner) - 2245\_, \[Windows]: fix var unbound error on possibly in `swap_memory()`\_ (patch by student\_2333) - 2268\_: `bytes2human()` utility function was unable to properly represent negative values. - 2252\_, \[Windows]: `disk_usage()`\_ fails on Python 3.12+. (patch by Matthieu Darbois) - 2284\_, \[Linux]: `Process.memory_full_info()`\_ may incorrectly raise `ZombieProcess`\_ if it's determined via `/proc/pid/smaps_rollup`. Instead we now fallback on reading `/proc/pid/smaps`. - 2287\_, \[OpenBSD], \[NetBSD]: `Process.is_running()`\_ erroneously return `False` for zombie processes, because creation time cannot be determined. - 2288\_, \[Linux]: correctly raise `ZombieProcess`\_ on `Process.exe()`*, `Process.cmdline()`* and `Process.memory_maps()`\_ instead of returning a "null" value. - 2290\_: differently from what stated in the doc, PID reuse is not pre-emptively checked for `Process.nice()`\_ (set), `Process.ionice()`*, (set), `Process.cpu_affinity()`* (set), `Process.rlimit()`\_ (set), `Process.parent()`\_. - 2308\_, \[OpenBSD]: `Process.threads()`\_ always fail with AccessDenied (also as root). ### [`v5.9.5`](https://togithub.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#595) [Compare Source](https://togithub.com/giampaolo/psutil/compare/release-5.9.4...release-5.9.5) \===== 2023-04-17 **Enhancements** - 2196\_: in case of exception, display a cleaner error traceback by hiding the `KeyError` bit deriving from a missed cache hit. - 2217\_: print the full traceback when a `DeprecationWarning` or `UserWarning` is raised. - 2230\_, \[OpenBSD]: `net_connections()`\_ implementation was rewritten from scratch: - We're now able to retrieve the path of AF_UNIX sockets (before it was an empty string) - The function is faster since it no longer iterates over all processes. - No longer produces duplicate connection entries. - 2238\_: there are cases where `Process.cwd()`\_ cannot be determined (e.g. directory no longer exists), in which case we returned either `None` or an empty string. This was consolidated and we now return `""` on all platforms. - 2239\_, \[UNIX]: if process is a zombie, and we can only determine part of the its truncated `Process.name()`\_ (15 chars), don't fail with `ZombieProcess`\_ when we try to guess the full name from the `Process.cmdline()`\_. Just return the truncated name. - 2240\_, \[NetBSD], \[OpenBSD]: add CI testing on every commit for NetBSD and OpenBSD platforms (python 3 only). **Bug fixes** - 1043\_, \[OpenBSD] `net_connections()`\_ returns duplicate entries. - 1915\_, \[Linux]: on certain kernels, `"MemAvailable"` field from `/proc/meminfo` returns `0` (possibly a kernel bug), in which case we calculate an approximation for `available` memory which matches "free" CLI utility. - 2164\_, \[Linux]: compilation fails on kernels < 2.6.27 (e.g. CentOS 5). - 2186\_, \[FreeBSD]: compilation fails with Clang 15. (patch by Po-Chuan Hsieh) - 2191\_, \[Linux]: `disk_partitions()`*: do not unnecessarily read /proc/filesystems and raise `AccessDenied`* unless user specified `all=False` argument. - 2216\_, \[Windows]: fix tests when running in a virtual environment (patch by Matthieu Darbois) - 2225\_, \[POSIX]: `users()`\_ loses precision for `started` attribute (off by 1 minute). - 2229\_, \[OpenBSD]: unable to properly recognize zombie processes. `NoSuchProcess`\_ may be raised instead of `ZombieProcess`\_. - 2231\_, \[NetBSD]: *available* `virtual_memory()`\_ is higher than *total*. - 2234\_, \[NetBSD]: `virtual_memory()`\_ metrics are wrong: *available* and *used* are too high. We now match values shown by *htop* CLI utility. - 2236\_, \[NetBSD]: `Process.num_threads()`\_ and `Process.threads()`\_ return threads that are already terminated. - 2237\_, \[OpenBSD], \[NetBSD]: `Process.cwd()`\_ may raise `FileNotFoundError` if cwd no longer exists. Return an empty string instead. ### [`v5.9.4`](https://togithub.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#594) [Compare Source](https://togithub.com/giampaolo/psutil/compare/release-5.9.3...release-5.9.4) \===== 2022-11-07 **Enhancements** - 2102\_: use Limited API when building wheels with CPython 3.6+ on Linux, macOS and Windows. This allows to use pre-built wheels in all future versions of cPython 3. (patch by Matthieu Darbois) **Bug fixes** - 2077\_, \[Windows]: Use system-level values for `virtual_memory()`\_. (patch by Daniel Widdis) - 2156\_, \[Linux]: compilation may fail on very old gcc compilers due to missing `SPEED_UNKNOWN` definition. (patch by Amir Rossert) - 2010\_, \[macOS]: on MacOS, arm64 `IFM_1000_TX` and `IFM_1000_T` are the same value, causing a build failure. (patch by Lawrence D'Anna) - 2160\_, \[Windows]: Get Windows percent swap usage from performance counters. (patch by Daniel Widdis) ### [`v5.9.3`](https://togithub.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#593) [Compare Source](https://togithub.com/giampaolo/psutil/compare/release-5.9.2...release-5.9.3) \===== 2022-10-18 **Enhancements** - 2040\_, \[macOS]: provide wheels for arm64 architecture. (patch by Matthieu Darbois) **Bug fixes** - 2116\_, \[macOS], \[critical]: `net_connections()`\_ fails with RuntimeError. - 2135\_, \[macOS]: `Process.environ()`\_ may contain garbage data. Fix out-of-bounds read around `sysctl_procargs`. (patch by Bernhard Urban-Forster) - 2138\_, \[Linux], **\[critical]**: can't compile psutil on Android due to undefined `ethtool_cmd_speed` symbol. - 2142\_, \[POSIX]: `net_if_stats()`\_ 's `flags` on Python 2 returned unicode instead of str. (patch by Matthieu Darbois) - 2147\_, \[macOS] Fix disk usage report on macOS 12+. (patch by Matthieu Darbois) - 2150\_, \[Linux] `Process.threads()`\_ may raise `NoSuchProcess`. Fix race condition. (patch by Daniel Li) - 2153\_, \[macOS] Fix race condition in test_posix.TestProcess.test_cmdline. (patch by Matthieu Darbois) ### [`v5.9.2`](https://togithub.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#592) [Compare Source](https://togithub.com/giampaolo/psutil/compare/release-5.9.1...release-5.9.2) \===== 2022-09-04 **Bug fixes** - 2093\_, \[FreeBSD], **\[critical]**: `pids()`\_ may fail with ENOMEM. Dynamically increase the `malloc()` buffer size until it's big enough. - 2095\_, \[Linux]: `net_if_stats()`\_ returns incorrect interface speed for 100GbE network cards. - 2113\_, \[FreeBSD], **\[critical]**: `virtual_memory()`\_ may raise ENOMEM due to missing `#includeConfiguration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Renovate Bot.