Skip to content

Releases: oshi/oshi

Release 7.4.1

Choose a tag to compare

@dbwiddis dbwiddis released this 18 Jul 21:46
Bug Fixes and Improvements
  • #3441: Wrap AppKit/Cocoa display-name calls in an autorelease pool, extract ObjCFunctions FFM bindings, and use ExceptionUtil for consistent error handling - @dbwiddis.
  • #3442: Convert static memoized suppliers to instance fields, allowing cached data to be reclaimed when users create new SystemInfo instances - @dbwiddis.
  • #3443: Share memoized iostat supplier across disk instances; cache pluggable hardware lists (displays, USB, sound cards, graphics cards) in the HAL with a 3-second TTL - @dbwiddis.
  • #3444: Consolidate try/catch-log-return-default patterns to use ExceptionUtil - @dbwiddis.
  • #3459: Deduplicate the Windows CentralProcessor frequency queries into the shared base, and fix the JNA per-processor current-frequency numbering, which mis-assigned frequencies to logical processors on multi-processor-group/NUMA systems - @dbwiddis.
  • #3473: Fix several macOS bugs: correct Intel Mac sensor temperatures that were under-reported by the SP78 fractional byte, decode process working directories and login sessions as UTF-8, and add missing null/bounds guards on native results - @dbwiddis.
  • #3478: Fix several Windows bugs: stop reporting a UPS/non-system battery as the system battery, restore the WMI fallback (and avoid an NPE) when a PDH wildcard collection fails, drop phantom file stores for volumes that can't be queried, keep enumerating sound cards past an incomplete registry key, retain sessions without a client address, and include processors in NUMA nodes spanning more than 64 logical processors - @dbwiddis.
  • #3479: Fix several Windows bugs: return all configured DNS servers instead of an empty list when more than one is present, keep querying the OpenHardwareMonitor/LibreHardwareMonitor namespaces after an initial failure so late-started sensors still appear, and classify CD-ROM drives as non-local - @dbwiddis.
  • #3480: Align remaining JNA/FFM inconsistencies: report disk type (Removable/SSD/HDD/Unknown) on the native-free Linux backend, allocate a large enough buffer for long UTF-16 device names in the Windows JNA DeviceTree, fix WMI query when COM is already initialized in another apartment, returning zeroed TCP/UDP stats instead of null on a query failure, detecting x86 via GetNativeSystemInfo (correct under WOW64), and retrying the initial PDH_NO_DATA performance-counter sample - @dbwiddis.
  • #3481: Share one registry-value parser between the JNA and FFM Windows installed-applications backends, so an application is resolved identically regardless of backend even when a value is stored as REG_DWORD or REG_BINARY rather than a string - @dbwiddis.
  • #3482: Fix macOS getThreadCount() on the default JNA backend, which under-reported the thread count (a proc_listpids buffer size passed as an element count, and stale reused-buffer data counted for processes proc_pidinfo could not fill), and release the CoreFoundation device dictionary and lookup keys leaked per disk enumeration in the JNA disk-type detection - @dbwiddis.
  • #3483: Fix several Windows backend issues: guard against a hard crash when enumerating a network session with a null client name, allocate the AMD ADL callback buffer from the C heap so the driver's free() is valid, close leaked system event-log handles, and read REG_QWORD/REG_BINARY registry values in the FFM backend so graphics-card VRAM is reported consistently with the JNA backend - @dbwiddis.
  • #3484: Fix several parsing and consistency issues: return empty instead of throwing from ParseUtil.getStringBetween on a single unmatched delimiter, throw the documented IllegalArgumentException (not ArrayIndexOutOfBoundsException) for mismatched tick arrays, correct an off-by-one bounds guard in Solaris Prtvtoc, decode FreeBSD/Solaris utmpx session strings as UTF-8, and read native utmpx for Solaris sessions in the FFM backend to match the JNA backend - @dbwiddis.

Full change log

Release 7.4.0

Choose a tag to compare

@dbwiddis dbwiddis released this 08 Jul 22:44
New Features
  • #3415: Add Display.getDisplayInfo() and a new DisplayInfo interface (exposing decoded attributes including isEdidSynthetic()), plus EDID-encoding methods in EdidUtil, allowing display attributes to be exposed without a raw EDID - @dbwiddis.
  • #3436: Detect the Apple Silicon built-in Retina display via IOMobileFramebuffer and synthesize a DisplayInfo from CoreGraphics and NSScreen properties (resolution, physical size, serial, model name) - @dbwiddis.
Bug Fixes and Improvements
  • #3424: Fix WrongMethodTypeException when freeing BSTR strings on the Windows FFM WMI path, caused by a void invokeExact in an expression lambda inferring an Object return - @dbwiddis.
  • #3425: Fix the Windows perf-counter process and thread maps occasionally mis-keying a real process/thread under ID 0, when PDH reports its "ID Process"/"ID Thread" sentinel for one that is starting or exiting - @dbwiddis.
  • #3432: Replace Logger#atLevel/setCause/isEnabledForLevel usage in ExceptionUtil, PerfDataUtil, and ForeignFunctions with level-switches to the classic SLF4J methods, so oshi no longer requires slf4j-api 2.x at runtime - @wolfs.
  • #3431: Declare the optional jlibrehardwaremonitor OSGi package imports as optional, so oshi-common resolves in OSGi environments that do not provide it - @MrEasy.
  • #3433: Restore optional JNA native access for NetBSD, falling back to the command-line implementation when the JNA native library is not installed - @dbwiddis.
  • #3437: Add ParseUtil.decodeIntOrDefault/decodeLongOrDefault and forbid direct use of Integer.decode, Long.decode, parseUnsignedInt, and parseUnsignedLong - @dbwiddis.
  • #3438: Deprecate Display.getEdid() in favor of Display.getDisplayInfo().getEdid(), consolidating display data access under DisplayInfo - @dbwiddis.

Full change log

Release 7.3.2

Choose a tag to compare

@dbwiddis dbwiddis released this 26 Jun 13:04
Bug Fixes and Improvements
  • #3409: Fix AIX getFileStores() inode collection: switch to AIX-native df -F %n %l, fix NFS mount filtering, correct column parsing, and fix free/used inode swap - @jank.
  • #3410: Fix Linux getFileStores() blocking indefinitely on stale NFS mounts by pre-checking NFS server reachability (TCP/2049) before calling statvfs() - @jank.

Full change log

Release 7.3.1

Choose a tag to compare

@dbwiddis dbwiddis released this 12 Jun 00:23
New Features
  • #3350: Add AIX support to the FFM (oshi-core-ffm) implementation - @dbwiddis.
  • #3360: Add NetBSD support to the FFM (oshi-core-ffm) implementation - @dbwiddis.
  • #3362: Add DragonFly BSD support to the FFM (oshi-core-ffm) implementation - @dbwiddis.
Bug Fixes and Improvements
  • #3349: Fix AIX Uptime.queryUpTime() regex to accept the mins suffix that appears in the first hour past each day boundary - @dbwiddis.
  • #3358: Add macOS 27 (Golden Gate) codename mapping - @dbwiddis.
  • #3365: Allow SystemInfoProvider SPI discovery on the class path - @dbwiddis.
  • #3373: Export the oshi package from oshi-core in the OSGi bundle so the documented new oshi.SystemInfo() entry point is usable in OSGi environments - @dbwiddis.

Full change log

Release 7.3.0

Choose a tag to compare

@dbwiddis dbwiddis released this 06 Jun 15:36
New Features
Bug Fixes and Improvements

Full change log

Release 7.2.1

Choose a tag to compare

@dbwiddis dbwiddis released this 25 May 07:01
Bug Fixes and Improvements
  • #3302: Fix WrongMethodTypeException for void invokeExact in expression lambdas - @dbwiddis.

Full change log

Release 7.2.0

Choose a tag to compare

@dbwiddis dbwiddis released this 24 May 23:05
New Features
  • #3234: Add SystemInfoProvider SPI and SystemInfoFactory for automatic selection of the best available OSHI implementation at runtime - @dbwiddis.
  • #3238: Add native-free Linux SystemInfoProvider implementation in oshi-common, enabling Linux system info without JNA or FFM dependencies - @dbwiddis.
  • #3255: Add BluetoothDevice enumeration for paired/connected Bluetooth peripherals on Linux, Windows, and macOS - @dbwiddis.
Bug Fixes and Improvements
  • #3245: Fix MacGlobalMemory.getPhysicalMemory() returning empty data on Apple Silicon Macs - @dbwiddis.
  • #3249: Read EDID from /sys/class/drm on Linux, fixing display detection on Wayland - @dbwiddis.
  • #3278, #3280: Add SystemInfoProvider convenience overloads to OshiMetrics constructor, bindTo, and builder methods - @dbwiddis.
  • #3281: Fix AIX processor count detection to use LPAR vcpu and SMT configuration instead of frame-level physical processor count - @dbwiddis.
  • #3283: Fix macOS JNA system CPU ticks overflowing to negative values after long uptimes - @dbwiddis.
  • #3299: Handle Linux LUKS device-mapper disks without LVM volume names and avoid synthetic null paths - @dbwiddis.
  • #3300: Fix macOS FFM open file limits and strengthen current-process limit coverage - @dbwiddis.

Full change log

Release 7.1.0

Choose a tag to compare

@dbwiddis dbwiddis released this 07 May 03:30
New Features
  • #3225: Add CgroupInfo API with Linux cgroup v1/v2 support - @rohan-coder02.
  • #3229: Support environment variables (OSHI_*) for configuration - @dbwiddis.
  • #3230, #3231: Add disk type information (SSD, HDD, Removable, Virtual) - @dbwiddis.
  • #3232: Add voluntary/involuntary context switch methods to OSProcess - @dbwiddis.
  • #3227: Add oshi-metrics module with Micrometer integration for system metrics following OpenTelemetry semantic conventions - @dbwiddis.
Bug Fixes and Improvements
  • #3233: Use WMI formatted % Processor Performance counter for Windows CPU frequency, reporting actual turbo boost speeds above base frequency - @dbwiddis.

Full change log

Release 7.0.1

Choose a tag to compare

@dbwiddis dbwiddis released this 02 May 16:32
JPMS Package Moves
  • #3220: Move oshi-core-ffm utility classes from oshi.util.gpu, oshi.util.platform.mac, and oshi.util.platform.windows packages to oshi.ffm.util.gpu, oshi.ffm.util.platform.mac, and oshi.ffm.util.platform.windows. This eliminates split-package conflicts so oshi-core and oshi-core-ffm can coexist on the module path - @dbwiddis.

Full change log

Release 7.0.0

Choose a tag to compare

@dbwiddis dbwiddis released this 30 Apr 20:15

See Upgrading for breaking changes and migration guide.

Breaking Changes
  • #3180: Rename oshi-core-java25 artifact to oshi-core-ffm; rename JPMS module from com.github.oshi to com.github.oshi.ffm. A redirection pom is provided for the old artifact ID - @dbwiddis.
  • #3181: Merge oshi-core-java11 into oshi-core; oshi-core now includes a module descriptor (com.github.oshi). A redirection pom is provided for the old oshi-core-java11 artifact ID - @dbwiddis.
  • #3182: Remove deprecated OSProcess.getResidentSetSize() (use getResidentMemory() or getPrivateResidentMemory()), oshi.PlatformEnum and oshi.PlatformEnumFFM (use oshi.util.PlatformEnum), SystemInfo.getCurrentPlatform() and SystemInfoFFM (use oshi.util.PlatformEnum.getCurrentPlatform() and oshi.ffm.SystemInfo), and misspelled GlobalConfig constants - @dbwiddis.
New Features
  • #3183: Add @PublicApi annotation to all SemVer-guaranteed API types in oshi.hardware, oshi.software.os, both SystemInfo entry points, and PlatformEnum - @dbwiddis.

Full change log