For MANY more details please see release notes in NEWS.adoc or rendered as https://networkupstools.org/docs/release-notes.chunked/NUT_Release_Notes.html#_release_notes_for_nut_2_8_5_what_8217_s_new_since_2_8_4 and UPGRADING.adoc or rendered as https://networkupstools.org/docs/release-notes.chunked/NUT_Upgrading_Notes.html#_changes_from_2_8_4_to_2_8_5
Some highlights follow:
Further troubleshooting improvements, to help make sense of logs.
This release brings a number of improvements in NUT STARTTLS handling, complete with NIT testing scenarios for OpenSSL and NSS builds. Python and C++ client libraries also learned new tricks about this. There is still a feature disparity between the two SSL backends, to be addressed in a later release with #3331.
Several new drivers were added, and older ones improved. Added support for driver name aliasing (in several places this is checked for consistency), to open certain paths in future development.
Added an experimental (currently read-only) libwinhid backend to usbhid-ups builds on Windows, for direct access to the UPS via OS facilities -- without additional WinUSB or Zadig installations.
Also that driver (in debug mode) should now summarize which data points from the mapping it never saw in the device reports, and which reports it has no mapping for. Similar changes happened in snmp-ups too. This should help with future improvements of semi-supported devices.
Multiple mishaps fixed about service startup, especially on Windows, were addressed. Numerous changes and new features in upsdrvctl and upssched.
Systemd units for some daemons were revised to honour the MODE setting from nut.conf, if available, to gracefully not-start when explicitly not-requested (e.g. do not start upsd in MODE=netclient), even though the unit is nominally enabled; this should make packaging and providing service pre-sets more simple. [issue #837, PR #3233]
NUT CGI and upsc clients can now optionally output JSON. Modern-looking HTML/CSS/JS templates for upsstats CGI are now an option. MS IIS works as a CGI web server, example setup was documented.
In upsd, extended processing of MAXCONN setting to allow larger values than the operating system allows to handle, by only waiting for that amount of Unix sockets or Windows HANDLE's at a time, and moving on to another chunk.
The system-provided value can be further limited by NUT_SYSMAXCONN_LIMIT environment variable (e.g. in tests). [#3302]
- This is separate from
ulimiton the amount of open file descriptors.
Work proceeded on data type usage strictness and codebase unification, and portability across 25 years worth of operating systems. Optimized (parallel) build recipes some more.
Introduced a configure --enable-shared-private-libs build-time option to provide internal common NUT code as a set of shared libraries, to reduce installation footprint (otherwise a copy of used objects is linked into each binary).
A family of configure --with-confdir* options was introduced to fine-tune production and example config file installation, and to move away from abusing --with-sysconfdir (which should really be /etc not /etc/nut), in a backwards-compatible manner (existing detailed build recipes should not break).
Default settings were changed to prefer python3 if available, else python2, else python -- e.g. some one generation of the interpreter. It is still possible to explicitly request a build targeting both. [#1792]
Added a --with-systemdsysusersdir=PATH option to have systemd pre-create the user and group accounts for NUT, before packaging or manually executed commands do (this is particularly important for immutable-image operating environments). [PR #3262]
The new tools/semver-compare.sh helper script (split off from tools/gitlog2version.sh) can be used directly to expand and strip version strings, sort and compare multiple versions as one simple operation (handling the different amount of digits in version components gracefully). [issue #3055, PRs #3213, #3217]
Added a GitHub Actions CI job to generate, upload and recycle make dist and make dist-docs tarballs, so they are easier to obtain for people and other CI systems (which might not want to follow a Git repository). Links to these artifacts can be seen in workflow page (or its logs), and added as a line in GitHub Checks list associated with a commit. Note that the GitHub Action storage keeps artifacts for at most 90 days. [#1400, #2829]
Upstreamed reference packaging recipes (DEB, RPM) from the 42ITy project which can be used with OBS (Open Build Service by SUSE), both to eventually support end-user testing of NUT development, and to have a yet another NUT CI farm player with a distinct opinion on code quality. Many of the changes listed above happened thanks to this effort, and due to concerns raised by OBS build agents with various Linux distributions. [#1209, #1316, #3144]
Great thanks to all contributors, old and new!