What's new in version 3.5.0

* Implement line editor for Search, Filter and (re)naming Screens
* Add digits editing for numeric options
* Backtrace screen feature (using libunwind-ptrace)
* Add CPU SMT label option
* MemoryMeter: rework to allow full platform-specific control
* Fix CPU virtualization bar color and help text in non-detailed mode
* Add --no-meters option to hide meters
* Implement explicit NO_COLOR env support
* fix: support *-256color in $TERM key detection
* Add COLORSCHEME_NORD: Nordic inspired theme
* Add Tctl temperature reading
* Add SecondsUptimeMeter
* Adjust GPUMeter text display
* Make Ctrl-U clear the current Filter or Search string while editing it
* Make empty --filter= command line arguments invalid
* Make Infoscreen also show uppercase FILTER when filtering (F4) is active
* Graph meter dynamic scaling and percent graph drawing
* Update "total" value for non-percent bar meters
* Fix logic bug while iterating processes
* Change NetworkIOMeter "packets per second" display
* Add NetworkIOMeter description
* Rework DiskIOMeter into a combined display of 2 sub-meters
* Introduce DiskIORateMeter and DiskIOTimeMeter
* DiskIOMeter: Adjust code indent and formatting
* DiskIOMeter: Move cache update code to a new function
* Add --no-function-bar option to hide functionbar
* Fix function bar labels in Screens panel rename mode
* Make Meters function bar consistent with the Screens one
* Display a FAILED message in the FunctionBar on host scan failure
* Cancel pending renaming action for a screen in dtor of ScreensPanel
* Move prevSelected from ScreensPanel to Panel
* Only issue KEY_RECLICK when the focussed item has not changed
* Track oldFocus correctly in ScreensPanel
* Add lost focus event, make mouse actions consistent, handle rename and move explicitly across screens / meters / columns
* Make Cancel (F2, Esc) remove a newly added screen tab and not only abort the implicit rename
* Use default key list for DisplayOptions "Dec/Inc" function bar
* Make first click select option line but not toggle it, toggle with next click, handle right click
* Make the Panel items actually match what receives a mouse click
* No need for "phantom" CPU threads
* Simplify offline CPU marking
* Make the physicalID default to 0 because old Intel processors only have that
* Don't draw Meter caption if width is not enough (bar & graph)
* CPUMeter: Fix negative "x" positions of sub-meters
* Add sensors logic for Snapdragon 410
* Add sensors logic for Amlogic S905W support
* Add foot terminal to terminalSupportsDefinedKeys
* No longer write to htoprc file if it's not owned by EUID
* Remove initial enforced delay to reduce startup latency
* Improve bootup time by caching all getpwuid result
* Fix a small file descriptor leak in Settings_write()
* Keep track of the biggest PID and scale the column accordingly
* Allocate COMMAND (cmdline) and comm buffers dynamically
* Improve "comm" string highlighting in Process_makeCommandStr()
* Improve process cmdline basename matching with procExe path
* Don't make highlights of zero-length cmdline basename
* Shadow path prefixes used by NixOS
* Improve Generic_unameRelease() related code
* Linux: Check for CPU number on s390
* Linux: Handle special cases for CPU frequency data in /proc/cpuinfo
* Linux: Added support for OpenRC init system and metrics
* Linux: fix detection of NUL argument separator
* Linux: Skip loopback and MD (multi-device) driver entries in /proc/diskstats
* Darwin: Add GPUMeter code for macOS
* Darwin: Rewrite & improve Platform_getOSRelease() code
* Darwin: implement macOS version reporting in SysArchMeter
* Darwin: Handle legacy references to kIOMainPortDefault
* Darwin: Bring back conversion of process CPU time on macOS (#1638)
* PCP: Automatically reconnect PCP metrics contexts on disconnect
* PCP: Fixes to use units-based scaling in pcp-htop on macOS
* PCP: Fix PCPDynamicColumn parsing after a bad section name
* FreeBSD: Update the internal priority reference point
* NetBSD: Improve process state retrieval code
* OpenBSD: Check on AC power value being nonzero
* OpenBSD: Document sysctl indices for ACPI battery & AC code
* Solaris: Update memory info on every refresh
* Add v1.0 of the AI-Assisted Contributions Policy
* Add a Code of Conduct document for the project
* README: Add Quick Start section
* README: update instructions for those who use Arch
* Add Japanese support in htop.desktop
* Add Armenian support in htop.desktop
* docs: fix COLORS bullet list formatting and capitalization in man page
* CI: Add Github Action workflow for Coverity checking
* CI: Add libiberty and demangling support to backtrace screen build
* CI: Update LLVM/Clang versions to 22
* CI: Update FreeBSD to 15.0
* CI: Update to use OpenBSD 7.7
* build: Add packages for OpenSUSE/SLES
* build: Fix Autoconf 2.69 compatibility regressions
* build: Simplify curses header checking code
* build: remove the --with-os-release configure option
* build: Fix redundant newlines in configure help strings
* build: Allow custom search path for libnl; try pkg-config when needed
* build: Use HTOP_PKG_CHECK_MODULES in hwloc and libnl checking
* build: Introduce HTOP_PKG_CHECK_MODULES wrapper macro
* build: Introduce 'htop_search_header_dir' configure function
* build: Add configure check on whether local unwinding works
* build: Automatically detect backtrace(3) return type
* build: Use pkg-config to detect libnl3 header path
* build: Also check libunwind through pkg-config
* build: Simplify configure netlink/*.h detection code
* build: Fix netlink/*.h detection logic in configure
* build: Fix '-ffinite-math-only' configure warning
* build: Fix configure '--enable-delayacct' help text
* build: Fix a macOS AC_COMPILE_IFELSE misquoting

What's new in version 3.4.1

* Support for PMAPI v3 for PCP
* PCP code cleanups
* Proper checks for strchrnul
* Code cleanup in the NetworkIOMeter
* Improved documentation for the --user option
* Display stuck processes on Darwin
* Handle issues when the monotonic clock runs backwards
* Fix builds using native curses on NetBSD

What's new in version 3.4.0

* More expressive version tag generated for development versions (htop --version, help screen)
* Improve Darwin support for ARM-based systems
* Fix static linking with libsystemd
* Various build fixes for DragonFlyBSD, Darwin, NetBSD, OpenBSD & Solaris
* Fix running task display (count)
* Fix sort order handling in tree mode
* Add warning when exiting with a signal (not saving .htoprc)
* Add Disk I/O and Network I/O meter for DragonFlyBSD
* Improve handling of invalid Unicode strings
* Disable basename checking for kernel tasks
* Updated documentation for pcp-htop
* Disable FOCUS_IN/FOCUS_OUT event handling
* Add GPU meter for Linux and PCP
* Add column for GPU time per process on Linux and PCP
* Avoid glibc FILE API voodoo
* Ignore previously unhandled signals USR1 and USR2
* Force locating the config file to only use absolute paths
* Prefer reading htoprc from ~/.config/htop/htoprc over legacy ~/.htoprc
* Force writing the configuration to a regular file
* Use distinct config files for htop and pcp-htop
* Link libnl3 at runtime
* Gather permitted capabilities via capget(2)
* Avoid fetching certain process information for each thread on Linux (speed up)
* Improved handling for invalid data in /proc/tty/drivers on Linux
* Various changes to avoid memory allocations inside signal handlers
* Add single column header layout
* Fix DivByZero bug on startup on Darwin
* Include thread information on Darwin
* Show process state on Darwin
* Update compat check for C23 compilers
* Improved detail in help screen
* Unicode support for CGROUP, CCGROUP, CONTAINER and SECATTR columns
* Mark newline characters in the process command line display
* Resolve nested derived metrics for PCP
* Make supported modes/styles specific to each meter
* Refined checks for terminals supporting to redefine keys
* Fix handling of the NICE value on FreeBSD
* Fix display of CPU utilization on FreeBSD
* Honour update interval adjustments properly without restart
* Force rebuild of display table after item removals
* Reworked handling for various temperature sensors
* Fix high CPU load when the strace'd process exits prematurely
* Document --drop-capabilities to require a compile time support
* Always call PKG_PROG_PKG_CONFIG in configure
* Make configure warn when pkg.m4 is absent
* Rewrite curses/terminfo detection code in configure
* Keep following a process when resuming process updates (Z key)
* Normalize Disk I/O usage and allow utilization above 100%
* Plug several memory leaks and improve performance for information parsing
* Allow to show or hide cache and buffers in memory usage meter
* Visibility hint and UX improvements in status bar of display options panel
* Remove IOKit / IOMainPort / IOMMasterPort logic for Darwin builds
* Replace BCC with metrics from BPF for pcp-htop

What's new in version 3.3.0

* Multiple refactorings and code improvements
* Shorten docker container IDs to 12 characters
* Settings: preserve empty header
* Fix execlp() argument without pointer cast
* OpenFilesScreen: Make column sizing dynamic for file size, offset and inode
* Add support for "truss" (FreeBSD equivalent of "strace")
* Darwin: add NetworkIOMeter support
* HeaderLayout: add "3 columns - 40/30/30", "... 30/40/30" & "... 30/30/40"
* Meter: use correct unicode characters for digit '9'
* Note in manual re default memory units of KiB
* Add column for process container name
* Add logic to filter the container name (+type) from the CGroup name
* Change NetworkIOMeter value unit from KiB/s to bytes/second
* Cap DiskIOMeter "utilisation" percentage at 100%
* PCP platform implementation of frontswap and zswap accounting
* Shorten podman/libpod container IDs to 12 characters
* Write configuration to temporary file first
* Incorporate shared memory in bar text
* Move shared memory next to used memory
* Correct order of memory meter in help
* Add recalculate to Ctrl-L refresh
* Update process list on thread visibility toggling
* Support dynamic screens with 'top-most' entities beyond processes
* Introduce Row and Table classes for screens beyond top-processes
* Rework ZramMeter and remove MeterClass.comprisedValues
* More robust logic for CPU process percentages (Linux & PCP)
* Show year as start time for processes older than a year
* Short-term fix for docker container detection
* default color preset: use bold blue for better visibility
* Document 'O' keyboard shortcut
* Implement logic for '--max-iterations'
* Update F5 key label on tab switch (Tree <-> List)
* Force re-sorting of the process list view after switching between list/treeview mode
* Linux: (hack) work around the fact that Zswapped pages may be SwapCached
* Linux: implement zswap support
* {Memory,Swap}Meter: add "compressed memory" metrics
* Darwin: add DiskIOMeter support
* Fix scroll relative to followed process
* ZramMeter: update bar mode
* Use shared real memory on FreeBSD
* Increase Search and Filter max string length to 128
* Improve CPU computation code
* Remove LXC special handling for the CPU count
* Create new File Descriptor meter
* PCP: add IRQ PSI meter
* Linux: add IRQ PSI meter
* Linux: highlight username if process has elevated privileges
* Add support for scheduling policies
* Add a systemd user meter to monitor user units.
* FreeBSD: remove duplicate zfs ARC size subtraction

What's new in version 3.2.2

* CPUMeter now can show frequency in text mode
* Add option to render distribution path prefixes shadowed
* DiskIOMeter converts to bytes per second (not per interval)
* DiskIOMeter uses complete units, including missing "iB/s"
* DiskIOMeter indicates read and write in meter mode
* NetworkIOMeter converts to packets per second, shows packet rate
* Allow continued process following when changing display settings
* Update the panel header when changing to another tab
* Drop margin around the header if there are no meters
* Use Unicode replacement character for non-printable characters
* Default color preset uses bold blue for better visibility
* Update the Panel header on sort order inversions ('I')
* Toggle the header meters with pound key
* Fix ScreenPanel to handle quitting the panel while renaming
* Add fallback for HOME environment variable using passwd database
* Replace meaningless ID column with FD column in lock screen
* Use device format in the lock screen matching the files screen
* On Linux, improvements to file-descriptor lock detection
* On Linux, further distinguish systemd states in the SystemdMeter
* On Linux, improvements to cgroup and container identification
* On Linux, support openat(2) without readlinkat(2) platforms
* On Darwin, fix current process buffer handling for busy systems
* On DragonFly BSD, fix incorrect processor time of processes
* On FreeBSD, fix an issue with the memory graph not showing correctly
* On FreeBSD, add support for displaying shared memory usage
* On PCP, use pmLookupDescs(3) if available for efficiency
* On PCP, normalize generic columns values for consistent display
* On PCP, changes preparing for configurable, dynamic screens
* Handle invalid process columns from the configuration file
* Avoid undefined behaviour with deeply nested processes
* Fix crash when removing the currently active screen
* Prevent possible crash on a very early error path
* Include automake for Debian/Ubuntu
* Restore non-mouse support
* Reject unsupported command line arguments
* Document idle process state
* Clarify M_TRS/M_DRS columns

What's new in version 3.2.1

* Fix setting to show all branches collapsed by default
* Restore functionality of stripExeFromCmdline setting
* Fix some command line display settings not being honored without restart
* Display single digit precision for CPU% greater than 99.9%
* On Linux, FreeBSD and PCP consider only shrinkable ZFS ARC as cache
* On Linux, increase field width of CPUD% and SWAPD% columns
* Colorize process state characters in help screen
* Use mousemask(3X) to enable and disable mouse control
* Fix heap buffer overflow in Vector_compact
* On Solaris, fix a process time scaling error
* On Solaris, fix the build
* On NetBSD, OpenBSD and Solaris ensure env buffer size is sufficient
* On Linux, resolve processes exiting interfering with sampling
* Fix ProcessTable quadratic removal when scanning processes
* Under LXC, limit CPU count to that given by /proc/cpuinfo
* Improve container detection for LXC
* Some minor documentation fixes

What's new in version 3.2.0

* Support for displaying multiple tabs in the user interface
* Allow multiple filter and search terms (logical OR, separate by "|")
* Set correct default sorting direction (defaultSortDesc)
* Improve performance for process lookup and update
* Rework the IOMeters initial display
* Removed duplicate sections on COMM and EXE
* Highlight process UNINTERRUPTIBLE_WAIT state (D)
* Show only integer value when CPU% more than 99.9%
* Handle rounding ambiguity between 99.9 and 100.0%
* No longer leaves empty the last column in header
* Fix header layout and meters reset if a header column is empty
* Fix PID and UID column widths off-by-one error
* On Linux, read generic sysfs batteries
* On Linux, do not collect LRS per thread (it is process-wide)
* On Linux, dynamically adjust the SECATTR and CGROUP column widths
* On Linux, fix a crash in LXD
* On FreeBSD, add support for showing process emulation
* On Darwin, lazily set process TTY name
* Always set SIGCHLD to default handling
* Avoid zombie processes on signal races
* Ensure last line is cleared when SIGINT is received
* Instead of SIGTERM, pre-select the last sent signal
* Internal Hashtable performance and sizing improvements
* Add heuristics for guessing LXC or Docker from /proc/1/mounts
* Force elapsed time display to zero if process started in the future
* Avoid extremely large year values when printing time
* Fix division by zero when calculating IO rates
* Fix out of boundary writes in XUtils
* Fix custom thread name display issue
* Use AC_CANONICAL_HOST, not AC_CANONICAL_TARGET in configure.ac
* Support libunwind of LLVM

What's new in version 3.1.2

* Bugfix for crash when storing modified settings at exit
* Generate xz-compressed source tarball (with configure) using github actions
* Allow -u UID with numerical value as argument
* Added documentation for obsolete/state libraries/program files highlighting
* Some obsolete/stale library highlighting refinements
* Column width issues resolved
* Dynamic UID column sizing improved
* Discard stale information from Disk and Network I/O meters
* Refined Linux kernel thread detection
* Reworked process state handling
* New CCGROUP column showing abbreviated cgroup name
* New OFFSET column in the list of open files screen

What's new in version 3.1.1

* Update license headers to explicitly say GPLv2+
* Document minimum version for libcap (thanks to James Brown)
* Fix mouse wheel collision with autogroups nice adjustment
* Adjust Makefile.am macro definitions for older automake versions
* Ensure consistent reporting of MemoryMeter 'used' memory
* Report hugepage memory as real and used memory (as before)
* Handle procExeDeleted, usesDeletedLib without mergedCommandline mode
* Validate meter configuration before proceeding beyond htoprc parsing
* Properly release memory on partially read configuration
* Handle interrupted sampling from within libpcp PDU transfers
* On Linux, provide O_PATH value if not defined
* On Linux, always compute procExeDeleted if already set
* Workaround for Rosetta 2 on Darwin (thanks to Alexander Momchilov)
* Fix FreeBSD cmdline memory leak in Process_updateCmdline, and
* Plug a Disk I/O meter memory leak on FreeBSD (thanks to Ximalas)

What's new in version 3.1.0

* Updated COPYING file to remove the PLPA exemption (appendix 2)
  With this change the license is now GPLv2 without any additional wording.
* Improved default sort ordering
  Note for users: This may lead to an inverted sort order on startup of
  htop 3.1.0 compared to previous versions.
  This is due to what is stored in your htoprc file. Solution: Press I
  (to invert sort order).
  This changed setting will be saved by htop on exit as long as it can
  write to your htoprc file.
* The compile-time option to cater specifically for running htop as
  setuid has been removed
* Add read-only option
  This allows htop to be run in an non-intrusive fashion where it acts only
  as a process viewer disabling all functions to manipulate system state.
  Note: This is not a security feature!
* Move the code for handling the command line formatting related tasks
  to be shared across all platforms
  This means important features like stale binary/library highlighting
  can now be available on all supported platforms.
* Make the EXE and COMM columns available on all platforms
  All supported platforms have the name of the executable (EXE) and a
  self-chosen thread/command name (COMM) available one way or the other.
  Moving this column to be handled as a platform-independently available
  information simplifies the markup of the command line.
* Introduce configuration file versioning and config_reader_min_version
  Starting with this version the configuration file contains a version
  identifying the minimum version of the configuration parser needed to
  fully understand the configuration file format.
  Old configuration file formats are automatically upgraded when
  saving the config file (htoprc).
* Make the configuration parser friendlier to users (thanks to Bart Bakker)
  With this change only settings that cannot be parsed properly are
  reset to their defaults.
* Improve default display for systems with many CPUs
* Add the process ELAPSED time column
* Improve the process STATE column sorting
* Reworked handling resize and redrawing of the UI
* Fixed an issue where the LED meter mode could overflow allotted space
* Allow text mode Meters to span empty neighbors to the right
* Rescale graph meters when value of total changes
  (thanks to Michael Schönitzer)
* Update generic process field display
  Usually "uninteresting" values in columns like 1 thread, nice value
  of 0, CPU and memory of 0%, idle/sleeping state, etc. are shown with
  reduced intensity (dark grey)
* Option and key ("*") to collapse / expand all branches under PID 1
  (and PID 2 if kernel threads are shown) (thanks to Krishna Chaitanya)
* Keep following a process when inverting the sort order, displaying
  the help screen or hiding/unhiding userland threads.
  If a thread is currently selected the selection is updated to point
  to the thread's parent process. (thanks to Gonzalo, et.al.)
* Reorder process scanning to be performed before updating the display
  of the meters in the header
* Always check the user for a process for any changes.
  This affects multiple platforms that previously didn't correctly handle
  the user field for a process to change at runtime (e.g. due to seteuid
  or similar syscalls).
* Disable mouse option when support is unavailable
* Support curses libraries without ncurses mouse support
  (thanks to Santhosh Raju)
* Support offline and hot-swapping of CPUs on all platforms
* Fix the CPU Meter for machines with more than 256 CPUs
* Supplemented the "show updated/deleted executables" feature (red basename)
  to indicate when linked libraries were updated (yellow basename)
* Apply the stale binary highlighting for the EXE column in addition to
  the command line field
* Add new combined Memory and Swap meter
* Implement bar and graph mode for NetworkIO Meter
  (thanks to Michael F. Schönitzer)
* Rework TTY column to be more consistent across platforms
* Make the CWD column generally available on all platforms
  (thanks to Santhosh Raju et. al.)
* Add Performance Co-Pilot (PCP) platform support
  This is added via a separate pcp-htop(1) binary which provides remote host
  analysis, new Meters for any PCP metric and new Columns for any PCP process
  metric - see the pcp-htop(5) man page for further details.
  (thanks to Sohaib Mohamed)
* Add Linux columns and key bindings for process autogroup identifier
  and nice value
* Change available and used memory reporting on Linux to be based on
  MemAvailable (Kernel 3.14+) (thanks to Chris Cheney and Tomas Wido)
* Add a new SysArchMeter showing kernel and platform information
  (thanks to ahgamut)
* Linux memory usage explicitly treats tmpfs memory usage as shared memory
  This is to make memory used by tmpfs visible as this cannot be freed
  unlike normal filesystem cache data.
* Exclude zram devices when calculating DiskIO on Linux
* Use PATH lookup for systemctl in systemd meter (thanks to Scott Olson)
* Add native platform support for NetBSD
  This allows htop to run on NetBSD without the need for active Linux
  emulation of the procfs filesystem.
  (thanks to Santhosh Raju and Nia Alarie)
* Add NetworkIO, DiskIO, CPU frequency, and battery meter support on NetBSD
  (thanks to Nia Alarie)
* Fix NetBSD display of in-use and cached memory (thanks to Nia Alarie)
* Rework NetBSD CPU and memory accounting (thanks to Santhosh Raju)
* Fix NetBSD accounting of user and kernel threads (thanks to Santhosh Raju)
* Initial work to allow building with default libcurses on NetBSD
  (thanks to Santhosh Raju)
* FreeBSD updates - implement process majflt and processor column values
* Add FreeBSD support for CPU frequency and temperature
* Fixes and cleanups for ZFS Meters and metrics
* Correctly color the ZFS ARC ratio (thanks to Ross Williams)
* Bugfixes related to CPU time display/calculations for darwin on M1 systems
  (thanks to Alexander Momchilov)
* Harmonize the handling of multiple batteries across different platforms.
  The system is now considered to run on AC if at least one power supply
  marked as AC is found in the system.
  Battery capacity is summed up over all batteries found.
  This also changes the old behavior that batteries reported by the
  system after the first AC adapter where sometimes ignored.
* Correctly handle multiple batteries on Darwin.
  Resolves a possible memory leak on systems with multiple batteries.
* Handle Linux Shmem being part of Cached in the MemoryMeter
* Add SwapCached to the Linux swap meter (thanks to David Zarzycki)
* Convert process time to days if applicable (thanks to David Zarzycki)
* Always show the number of threads in the TaskMeter, even when threads
  are not shown in the process list
* Fix Linux --drop-capabilities option handling
* Correctly detect failure to initialize Linux boottime
* Overhaul the Linux memory fields to partition them like free(1) now does
* Improve the Linux process I/O column values
* Rework the libsensors parsing on Linux
* Update the MemoryMeter to display shared memory
* Update OpenBSD platform - implement additional columns, scan LWP,
  proper markup for STATE, show CPU frequency
* Fix the tree view on OpenBSD when hiding kernel threads
* Remove old InfoScreen lines before re-scanning (thanks to Øystein Hiåsen)
* Document historic naming of Light-Weight Processes column aka threads
* Improve user interaction when the last process entry is selected
* Draw the panel header on the TraceScreen (thanks to Youngjae Lee)
* Add mouse wheel scroll and fix mouse selection on the InfoScreen
  (thanks to Youngjae Lee)
* Add a HugepageMeter and subtract hugepages from normal memory
* Display wide characters in LED meters and restore non-wide ncurses support
* Add command line option to drop Linux capabilities
* Support scheduler affinity on platforms beyond Linux
* Report on any failure to write the configuration file
* Cache stderr to be able to print assert messages.
  These messages are shown in case htop terminates unexpectedly.
* Print current settings on crash
* Reset signal handlers on program exit
* Add configure script option to create a static htop binary
* Resolved longer-standing compilation issues on Solaris/Illumos
* Check for availability of set_escdelay in configure
  (thanks to Stefan Polluks)
* Build system updates for autotools 2.70

What's new in version 3.0.5

* BUGFIX / SECURITY: InfoScreen: fix uncontrolled format string
* BUGFIX: Improve white text in the Light Terminal colour scheme
  (both of the above thanks to V)
* Enable the function bar on the main screen to be hidden (see Setup -> Display options)
* BUGFIX: Reduce layout issues esp. around printing wide characters (not complete yet)
* BUGFIX: Make the follow function exit cleanly after followed process died
* Solaris: make Process callbacks static
* Update help and man page for improved -t / -s options
* Drop usage of formatted error messages from <err.h>
* Show arrow indicating order of sorted process column
* Lots of plumbing around the internal Hashtable, hardening and code cleanups
* LibSensors: add support for Ryzen CPUs
  (thanks to Matej Dian)
* BUGFIX: Fix CPU percentage on M1 silicon Macs
  (thanks to Luke Groeninger)
* LoadMeter: dynamically adjust color and total of bar
* Find libsensors.so.4 for Fedora and friends
* Add support to display CPU frequencies on Solarish platforms
  (thanks to Dominik Hassler)
* Enable going back to previous search matches (Shift-F3)
* Added keybind 'N' for sorting by PID (drops 'n'/'N' as not used before much)
  (thanks to Jake Mannens)

What's new in version 3.0.4

* Separate tree and list sort orders
* Invert Process_compare so that superclass matches run first
  (thanks to Hisham Muhammad)
* Unhardcode Mac OS tick-to-milliseconds conversion
  (thanks to Alexander Momchilov)
* Check if clock_gettime needs linking of librt
* Define O_PATH if not already defined
  (thanks to Chris Burr)
* Add column on Mac for processes running under translation
  (thanks to Dániel Bakai)
* Configure check for additional linker flags for keypad(3)
* PSI Meter: constant width and only print ten-duration as bar
* Sort in paused mode after inverting sort order
* Handle absence of package CPU temperature
* Meter: restore non-wide-character build
* LibSensors: restore temperature for Raspberry Pi
* MainPanel: do not reset hideProcessSelection on KEY_SHUFFLE
* BarMeter: rework text padding
* Panel: rework drawing of FunctionBar
* Meter: fix artifacts with very tiny width
* DragonFlyBSD updates
* BUGFIX: Fix dlopen issue for libsensors5 for some platforms
* BUGFIX: Fix broken tree display on inverted sort order
* BUGFIX: Fix pause mode ("Z") in tree view
* BUGFIX: Correct timebase for non-x86 CPUs on Darwin
* BUGFIX: Avoid NULL dereference on zombie processes
* Document dynamic bindings and assumed external configuration
* Update key mapping documentation for sorting

What's new in version 3.0.3

* Process sorting in 'tree' mode
  (thanks to Maxim Zhiburt)
* Improved command display/sort functionality
  (thanks to Narendran Gopalakrishnan)
* Add screen for active file locks
  (thanks to Fynn J. Wulf)
* Calculate library size (M_LRS column) from maps file
  (thanks to Fynn J. Wulf)
* Add a Zram meter
  (thanks to Murloc Knight)
* Add Linux cwd process column
* Dynamically load libsensors at runtime
* Improve PressureStall Meter display strings
* Hide process selection on ESC
* Fully support non-ascii characters in Meter-Bar
* Add support to change numeric options in settings screen
* Rename virtual memory column from M_SIZE to M_VIRT
* Add process column for normalized CPU usage
* Show CPU temperature in CPU meter
* Drop hideThreads Setting
* Add a systemd meter
* Add a network IO meter
* Add a SELinux meter
* Compress size of default FunctionBar
* Updates to the OpenFiles screen
* Continue updating header data in paused mode
* BUGFIX: Handle data wraparounds in IO meters
* BUGFIX: Update InfoScreen content on resize
* Add security attribute process column
* Add DiskIOMeter for IO read/write usage
* Read CPU frequency from sysfs by default
* Add Linux process column for context switches
* Several FreeBSD and Mac OS X platform updates
  (thanks to Christian Göttsche)
* Add process environment for FreeBSD
  (thanks to Ross Williams)
* Parse POWER_SUPPLY_CAPACITY for Linux Battery meter
  (thanks to Jan Palus)
* Add octuple-column CPU meters.
* BUGFIX: On Linux consider ZFS ARC to be cache
  (thanks to @multi)
* BUGFIX: Limit screen title length to window width
* Show selected command wrapped in a separate window
  (thanks to @ryenus)
* Allow to pass '/' for item search
* Document implicit incremental search
* Handle 'q' as quit if first character
* Avoid expensive build of process tree when not using it
* Include documentation for COMM and EXE
* Distinguish display of no permissions for reading M_LRS
* Only calculate M_LRS size every 2 seconds
* Improvements to comm / cmdline display functionality
* Merged view for COMM, EXE and cmdline
  (thanks to Narendran Gopalakrishnan and Benny Baumann)
* Consistent kernel thread display for COMM/EXE columns
* Central fault handling for all platforms
* Handle parsing envID & VPid from process status file
* Use threshold for display of guest/steal/irq meters
* Enhance highlighting of semi-large and large numbers
* Documentation on the repository style guide
  (thanks to Benny Baumann)
* Align processor identifier to the right
  (thanks to Christian Hesse)
* Document M_PSS, M_PSSWP, M_SWAP in man page
* Add Date and DateTime meters
  (thanks to Michael F. Schönitzer)
* BUGFIX: Fix Solaris 11.4 due to missing ZFS ARC kstats
  (thanks to @senjan)
* Code hardening, speedups, fd and memory leak fixes
  (thanks to Christian Göttsche and Benny Baumann)
* Number CPUs from zero by default
  (thanks to Zev Weiss)
* Remove residual python checks during the build process
  (thanks to Stephen Gregoratto)

What's new in version 3.0.2

* BUGFIX: Drop 'vim_mode' - several issues, needs rethink
* BUGFIX: fix regression in -u optional-argument handling
* Build system rework to remove python, header generation
  (thanks to Zev Weiss and Hugo Musso Gualandi)
* BUGFIX: report nice level correctly on Solaris
  (thanks to Dominik Hassler)
* CI, code quality improvements
  (thanks to Tobias Kortkamp, Christian Hesse, Benny Baumann)

What's new in version 3.0.1

* Coverity fixes, CI improvements, documentation updates
* BUGFIX: Fix early exit with longer sysfs battery paths
* BUGFIX: Improve OOM output, fix sorting
  (thanks to Christian Göttsche)
* Rework check buttons and tree open/closed
  (thanks to Bert Wesarg)
* Add -U/--no-unicode option to disable unicode
  (thanks to Christian Hesse)
* Improvements to the affinity panel
  (thanks to Bert Wesarg)

What's new in version 3.0.0

* New maintainers - after a prolonged period of inactivity
  from Hisham, the creator and original maintainer, a team
  of community maintainers have volunteered to take over a
  fork at https://htop.dev and https://github.com/htop-dev
  to keep the project going.
* Support ZFS ARC statistics
  (thanks to Ross Williams)
* Support more than 2 smaller CPU meter columns
  (thanks to Christoph Budziszewski)
* Support Linux proportional set size metrics
  (thanks to @linvinus, @ntninja and @himikof)
* Support Linux pressure stall information metrics
  (thanks to Ran Benita)
* New display option to show CPU frequency in CPU meters
  (thanks to Arnav Singh)
* Update Linux sysfs battery discovery for recent kernels
  (thanks to @smattie)
* Add hardware topology information in the affinity panel
  (thanks to Bert Wesarg)
* Add timestamp reporting to the strace screen
  (thanks to Mario Harjac)
* Add simple, optional vim key mapping mode
  (thanks to Daniel Flanagan)
* Added an option to disable the mouse
  (thanks to MartinJM)
* Add Solaris11 compatibility
  (thanks to Jan Senolt)
* Without an argument -u uses $USER value automatically
  (thanks to @solanav)
* Support less(1) search navigation shortcuts
  (thanks to @syrrim)
* Update the FreeBSD maximum PID to match FreeBSD change
  (thanks to @multiplexd)
* Report values larger than 100 terabytes
  (thanks to @adrien1018)
* Widen ST_UID (UID) column to allow for UIDs > 9999
  (thanks to DLange)
* BUGFIX: fix makefiles for building with clang
  (thanks to Jorge Pereira)
* BUGFIX: fix <sys/sysmacros.h> major() usage
  (thanks to @wataash and Kang-Che Sung)
* BUGFIX: fix the STARTTIME column on FreeBSD
  (thanks to Rob Crowston)
* BUGFIX: truncate overwide jail names on FreeBSD
  (thanks to Rob Crowston)
* BUGFIX: fix reported memory values on FreeBSD
  (thanks to Tobias Kortkamp)
* BUGFIX: fix reported CPU meter values on OpenBSD
  (thanks to @motet-a)
* BUGFIX: correctly identify other types of zombie process
  (thanks to @joder)
* BUGFIX: improve follow-process handling in some situations
  (thanks to @wangqr)
* BUGFIX: fix custom meters reverting to unexpected setting
  (thanks to @wangqr)
* BUGFIX: close pipe after running lsof(1)
  (thanks to Jesin)
* BUGFIX: meters honour setting of counting CPUs from 0/1
  (thanks to @rnsanchez)

What's new in version 2.2.0

* Solaris/Illumos/OpenIndiana support
  (thanks to Guy M. Broome)
* -t/--tree flag for starting in tree-view mode
  (thanks to Daniel Flanagan)
* macOS: detects High Sierra version to avoid OS bug
  (thanks to Pierre Malhaire)
* OpenBSD: read battery data
  (thanks to @nerd972)
* Various automake and build improvements
  (thanks to Kang-Che Sung)
* Check for pkg-config when building with --enable-delayacct
  (thanks to @florian2833z for the report)
* Avoid some bashisms in configure script
  (thanks to Jesin)
* Use CFLAGS from ncurses*-config if present
  (thanks to Michael Klein)
* Header generator supports non-UTF-8 environments
  (thanks to @volkov-am)
* Linux: changed detection of kernel threads
* Collapse current subtree pressing Backspace
* BUGFIX: fix behavior of SYSCR column
  (thanks to Marc Kleine-Budde)
* BUGFIX: obtain exit code of lsof correctly
  (thanks to @wangqr)
* BUGFIX: fix crash with particular keycodes
  (thanks to Wellington Torrejais da Silva for the report)
* BUGFIX: fix issue with small terminals
  (thanks to Daniel Elf for the report)
* BUGFIX: fix terminal color issues
  (thanks to Kang-Che Sung for the report)
* BUGFIX: preserve LDFLAGS when building
  (thanks to Lance Frederickson for the report)
* BUGFIX: fixed overflow for systems with >= 100 signals

What's new in version 2.1.0

* Linux: Delay accounting metrics
  (thanks to André Carvalho)
* DragonFlyBSD support
  (thanks to Diederik de Groot)
* Support for real-time signals
  (thanks to Kang-Che Sung)
* 'c' key now works with threads as well
* Session column renamed from SESN to SID
  (thanks to Kamyar Rasta)
* Improved UI for meter style selection
  (thanks to Kang-Che Sung)
* Improved code for constructing process tree
  (thanks to wangqr)
* Compile-time option to disable setuid
* Error checking of various standard library operations
* Replacement of sprintf with snprintf
  (thanks to Tomasz Kramkowski)
* Linux: performance improvements in battery meter
* Linux: update process TTY device
* Linux: add support for sorting TASK_IDLE
  (thanks to Vladimir Panteleev)
* Linux: add upper-bound to running process counter
  (thanks to Lucas Correia Villa Real)
* BUGFIX: avoid crash when battery is removed
  (thanks to Jan Chren)
* BUGFIX: macOS: fix infinite loop in tree view
  (thanks to Wataru Ashihara)

What's new in version 2.0.2

* Mac OS X: stop trying when task_for_pid fails for a process,
  stops spamming logs with errors.
* Add Ctrl+A and Ctrl+E to go to beginning and end of line
* FreeBSD: fixes for CPU calculation
  (thanks to Tim Creech, Andy Pilate)
* Usability: auto-follow process after a search.
* Use Linux backend on GNU Hurd
* Improvement for reproducible builds.
* BUGFIX: Fix behavior of Alt-key combinations
  (thanks to Kang-Che Sung)
* Various code tweaks and cleanups
  (thanks to Kang-Che Sung)

What's new in version 2.0.1

* OpenBSD: Various fixes and improvements
  (thanks to Michael McConville and Juan Francisco Cantero Hurtado)
* FreeBSD: fix CPU and memory readings
  (thanks to Tim Creech, Hung-Yi Chen, Bernard Spil, Greg V)
* FreeBSD: add battery support
  (thanks to Greg V)
* Linux: Retain last-obtained name of a zombie process
* Mac OS X: Improve portability for OS X versions
  (thanks to Michael Klein)
* Mac OS X: Fix reading command-line arguments and basename
* Mac OS X: Fix process state information
* Mac OS X: Fix tree view collapsing/expanding
* Mac OS X: Fix tree organization
* Mac OS X: Fix memory accounting
* Fix crash when emptying a column of meters
* Make Esc key more responsive

What's new in version 2.0.0

* Platform abstraction layer
* Initial FreeBSD support
* Initial Mac OS X support
  (thanks to David Hunt)
* Swap meter for Mac OSX
  (thanks to Ștefan Rusu)
* OpenBSD port
  (thanks to Michael McConville)
* FreeBSD support improvements
  (thanks to Martin Misuth)
* Support for NCurses 6 ABI, including mouse wheel support
* Much improved mouse responsiveness
* Process environment variables screen
  (thanks to Michael Klein)
* Higher-resolution UTF-8 based Graph mode
  (Thanks to James Hall from vtop for the idea!)
* Show program path settings
  (thanks to Tobias Geerinckx-Rice)
* BUGFIX: Fix crash when scrolling an empty filtered list.
* Use dynamic units for text display, and several fixes
  (thanks to Christian Hesse)
* BUGFIX: fix error caused by overflow in usertime calculation.
  (thanks to Patrick Marlier)
* Catch all memory allocation errors
  (thanks to Michael McConville for the push)
* Several tweaks and bugfixes
  (See the Git log for details and contributors!)

What's new in version 1.0.3

* Tag all children ('c' key)
* Fixes in accounting of guest time when using virtualization
  (thanks to Patrick Marlier)
* Performance improvements
  (thanks to Jann Horn)
* Further performance improvements due to conditional parsing
  of IO data depending on selected fields.
* Better consistency in coloring.
* Increase limit of buffer when tracing a deep nested process tree.
* Display pagefault stats.
* BUGFIX: Fix crash when adding meters and toggling detailed CPU time.
  (thanks to Dawid Gajownik)
* Add column to track the OOM-killer score of processes
  (thanks to Leigh Simpson)

What's new in version 1.0.2

* Add IO priority support ('i' key)
* Avoid deleting .htoprc if it is a symlink
* Fail gracefully when /proc is not mounted
  (thanks to Philipp Hagemeister)
* Option to update process names on every refresh
  (thanks to Rob Hoelz)
* BUGFIX: Fix crashes when process list is empty

What's new in version 1.0.1

* Move .htoprc to XDG-compliant path ~/.config/htop/htoprc,
  respecting $XDG_CONFIG_HOME
  (thanks to Hadzhimurad Ustarkhan for the suggestion.)
* Safer behavior on the kill screen, to make it harder to kill the wrong process.
* Fix for building in FreeBSD 8.2
  (thanks to Trond Endrestol)
* BUGFIX: behavior of 'F' (follow) key was broken, also affecting the
  persistence of mouse selections.
* BUGFIX: keep main panel up-to-date when running the screen manager,
  to fix crash when processes die while on the F9/Kill screen.

What's new in version 1.0

* Performance improvements
* Support for splitting CPU meters into two or four columns
  (thanks to Wim Heirman)
* Switch from PLPA, which is now deprecated, to HWLOC.
* Bring back support for native Linux sched_setaffinity,
  so we don't have to use HWLOC where we don't need to.
* Support for typing in user names and column fields in selection panels.
* Support for UTF-8 tree drawing
  (thanks to Bin Guo)
* Option for counting CPUs from zero
  (thanks to Sean Noonan)
* Meters update in every screen (no longer halting while on Setup, etc.)
* Stricter checks for command-line options
  (thanks to Sebastian Pipping)
* Incremental filtering
  (thanks to Seth Heeren for the idea and initial implementation)
* Try harder to find the ncurses header
  (thanks to Moritz Barsnick)
* Man page updates
  (thanks to Vincent Launchbury)
* BUGFIX: Support larger numbers for process times.
  (thanks to Tristan Nakagawa for the report.)
* BUGFIX: Segfault in BarMeterMode_draw() for small terminal widths
  (patch by Sebastian Pipping)

What's new in version 0.9

* Add support for "steal"/guest CPU time measurement
  in virtualization environments
* Expand and collapse subtrees using '+' and '-' when in tree-view
* Support for cgroups
  (thanks to Guillaume Zitta and Daniel Lezcano)
* Show custom thread names
  (thanks to Anders Torger)
* Add support for STARTTIME field
* Upgrade PLPA to version 1.3.2
* Fix license terms with regard to PLPA
  (thanks to Tom Callaway)
* getopt-based long options and --no-color
  (thanks to Vincent Launchbury)
* BUGFIX: Fix display of nan% in CPU meters
  (thanks to Steven Hampson)
* BUGFIX: Fix memory leak
  (thanks to Pavol Rusnak)
* Add Bash/emacs style navigation keys
  (thanks to Daniel Schuler)
* Improve battery meter support
  (thanks to Richard W.)
* BUGFIX: Fix IO-wait color in "Black on White" scheme
* BUGFIX: Fix search by process name when list is filtered by user.
  (thanks to Sergej Pupykin for the report.)
* BUGFIX: Fix alignment for display of memory values above 100G (sign of the times!)
  (thanks to Jan van Haarst for the report.)

What's new in version 0.8.3

* BUGFIX: Fix crash on F6 key
  (thanks to Rainer Suhm)
* BUGFIX: Fix a minor bug which affected the build process.

What's new in version 0.8.2

* Integrated lsof (press 'l')
* Fix display of gigabyte-sized values
  (thanks to Andika Triwidada)
* Option to display hostname in the meters area
* Rename VEID to CTID in OpenVZ systems
  (thanks to Thorsten Schifferdecker)
* Corrections to the desktop entry file
  (thanks by Samuli Suominen)
* BUGFIX: Correct page size calculation for FreeBSD systems
  (thanks to Andrew Paulsen)
* Allow compilation without PLPA on systems that don't support it
  (thanks to Timothy Redaelli)
* BUGFIX: Fix missing tree view when userland threads are hidden
  (thanks to Josh Stone)
* BUGFIX: Fix for VPID on OpenVZ systems
  (thanks to Wolfgang Frisch)

What's new in version 0.8.1

* Linux-VServer support
  (thanks to Jonathan Sambrook and Benedikt Bohm)
* Battery meter
  (thanks to Ian Page Hands)
* BUGFIX: Fix collection of IO stats in multithreaded processes
  (thanks to Gerhard Heift)
* Remove assertion that fails on hardened kernels
  (thanks to Wolfram Schlich for the report)

What's new in version 0.8

* Ability to change sort column with the mouse by
  clicking column titles (click again to invert order)
* Add support for Linux per-process IO statistics,
  enabled with the --enable-taskstats flag, which
  requires a kernel compiled with taskstats support.
  (thanks to Tobias Oetiker)
* Add Unicode support, enabled with the --enable-unicode
  flag, which requires libncursesw.
  (thanks to Sergej Pupykin)
* BUGFIX: Fix display of CPU count for threaded processes.
  When user threads are hidden, process now shows the
  sum of processor usage for all processors. When user
