To create new wiki account, please join us on #znc at Libera.Chat and ask admins to create a wiki account for you. You can say thanks to spambots for this inconvenience.

ChangeLog/1.9.0: Difference between revisions

From ZNC
Jump to navigation Jump to search
No edit summary
 
(34 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{ChangeLog}}
{{ChangeLog}}
<!-- The following is generated via this command:
HEAD=$(git rev-parse master) ; echo "Last update at $HEAD" ; echo ; git log --format='* %s {{git|%h}}' --no-merges znc-0.098..$HEAD | cat
-->
<!-- Last update at eb607b9736386844dc1aac6005d6ec95e270f0c0 -->
See https://github.com/znc/znc/compare/znc-{{ZNC-Version}}...master for a list of changes since {{ZNC-Version}} stable.


== New ==
== New ==
* Update password hashing algorithm from SHA-256 to Argon2id (if libargon2 is installed). Existing passwords are transparently upgraded upon login. {{GH|1879}}
* Support for [https://ircv3.net/specs/extensions/capability-negotiation capability negotiation] 302 and <code>cap-notify</code>. ZNC now has API <code>AddServerDependentCapability()</code>, using which modules can easily implement new capabilities: if server supports a cap, it will automatically be offered to clients which support <code>cap-notify</code> and ZNC will notify the module when the capability is enabled or disabled for server and for each client. {{GH|1859}}
* Support for capability negotiation 3.2 and <code>cap-notify</code>. ZNC now has API, using which modules can easily implement new capabilities: if server supports a cap, it will automatically be offered to clients which support <code>cap-notify</code> and ZNC will notify the module when the capability is enabled or disabled for server and for each client. {{GH|1859}}
** Several capabilities ([https://ircv3.net/specs/extensions/away-notify away-notify], [https://ircv3.net/specs/extensions/account-notify account-notify], [https://ircv3.net/specs/extensions/extended-join extended-join]) were moved from the core to a new module: corecaps.
* Add support for cap account-tag {{GH|1746}}
** The [[corecaps]] module is loaded automatically when upgrading from old config and when creating new config, but it's possible to unload it.
* New User Options: DenySetIdent, DenySetNetwork, DenySetRealName, DenySetQuitMsg, DenySetCTCPReplies {{GH|1814}}
*** Note: users who were using pre-release versions of 1.9.x (from git or from nightly tarballs) won't have it loaded automatically, because the existing config states <code>Version = 1.9</code>. In such case you can load it manually. This is to honor choice of users who decide to unload it, since we don't know whether the module is missing intentionally.
** Added support for [https://ircv3.net/specs/extensions/account-tag account-tag] capability, also in corecaps module {{GH|1746}}
* Updated password hashing algorithm from SHA-256 to [[wikipedia:Argon2|Argon2id]] (if libargon2 is installed). Existing passwords are transparently upgraded upon login. {{GH|1879}}
* Allow ordering of channels: via ListChans, MoveChan and SwapChans commands, and via webadmin {{GH|1744}}
* New user options: DenySetIdent, DenySetNetwork, DenySetRealName, DenySetQuitMsg, DenySetCTCPReplies {{GH|1814}}
* Switch --makeconf wizard default network from freenode to Libera
* Switch --makeconf wizard default network from freenode to Libera
* Added Portuguese and Turkish translations
* znc-buildmod: output where the module was written to
* znc-buildmod: output where the module was written to


== Fixes ==
== Fixes ==
* Don't send invalid 333 (RPL_TOPICWHOTIME) to client if topic owner is unknown {{GH|1889}}
* Fixed crash when receiving SASL lines from server without having negotiated SASL via CAP
* Fix build with SWIG 4.2.0, drop support for SWIG < 4.0.1
* Fixed build with SWIG 4.2.0
* Fix handling of timezones when parsing server-time tags received from server {{GH|1857}} {{GH|1773}}
* Fixed build with LibreSSL {{GH|1828}}
* Don't crash when receiving SASL lines from server without having negotiated SASL via CAP
* Fixed handling of timezones when parsing server-time tags received from server {{GH|1857}} {{GH|1773}}
* Use module names as the module ident, otherwise some clients were merging conversations with different modules together. {{GH|1874}}
* Use module names as the module ident, otherwise some clients were merging conversations with different modules together. {{GH|1874}}
* Fix an ODR violation {{GH|1835}}
* Stopped sending invalid 333 (RPL_TOPICWHOTIME) to client if topic owner is unknown {{GH|1889}}
* Fixed an ODR violation {{GH|1835}}
* Better hide password in PASS debug lines, sometimes it was not hidden
* CAP REQ sent by client without CAP LS now suspends the registration as the spec requires {{GH|1820}}


== Modules ==
== Modules ==
* modpython: Rewrite how modpython loads modules from <code>imp</code> to <code>importlib</code>: this adds support for Python 3.12, but bumps the minimum supported python version to 3.4. Also now it's possible to structure the module as a python package (a subdirectory with <code>__init__.py</code> and other .py files), however it no longer supports loading a C python extension through modpython - just write the module on C++ in such case instead of python, or use the <code>__init__.py</code> format and implement some of the files in C. {{GH|1724}}
* [[autoop]]: In some cases settings were parsed incorrectly, resulting in failure to do the autoop, now it's fixed
* log: Add account to joins for the log module. {{GH|1870}}
* [[clientnotify]]: Added options to reduce amount of notifications depending on the IP and the client ID of the connecting client {{GH|1843}}
* clientnotify: Add options to reduce amount of notifications depending on the IP and the client ID of the connecting client {{GH|1843}}
* [[controlpanel]]: Fixed help output
* modpython: Implement Module.AddCommand() {{GH|1832}}
* [[log]]: Log nickserv account in the joins lines. {{GH|1870}}
* webadmin: Fix order of breadcrumbs in network page
* [[modperl]]: Allow overriding label for timers, which means now there can be more than 1 timer per module
* watch: Allow new entries to use spaces {{GH|1822}}
* [[modpython]]:
** Rewrote internals of how modpython loads modules. {{GH|1724}}
*** Main motivation for the switch from using <code>imp</code> to using <code>importlib</code> was to support Python 3.12+.
*** As an additional benefit, now it's possible to structure the module as a python package (a subdirectory with <code>__init__.py</code> and other .py files).
*** All the old python modules should load as they were before.
*** ZNC no longer supports loading a C python extension directly through modpython (though I doubt there were any users of that obscure feature): if you want to some parts of the module to be compiled, you can always import that from <code>__init__.py</code>.
** Implemented Module.AddCommand() {{GH|1832}} {{GH|1833}}
* [[route_replies]]:
** Added Solanum-specific 337 (RPL_WHOISTEXT) to possible replies of /whois {{GH|1881}}
** Route replies to /topic
* [[sasl]]: Don't forward 908 (RPL_SASLMECHS) to clients {{GH|1756}}
* [[webadmin]]: Fixed order of breadcrumbs in network page
* [[watch]]: Allow new entries to use spaces {{GH|1822}}


== Notes for package maintainers (TODO) ==
== Notes for package maintainers ==
* Require C++17 compiler. That is, GCC 8+ or Clang 5+. {{GH|1887}}
* Require C++17 compiler. That is, GCC 8+ or Clang 5+. {{GH|1887}}
* Remove autoconf, leave only CMake as the build system. The <code>configure</code> script is now merely a wrapper for CMake, and accepts mostly the same parameters as the old <code>configure</code>. Minimum supported CMake version is 3.13.
* Removed autoconf, leaving only CMake as the build system. The <code>configure</code> script is now merely a wrapper for CMake, and accepts mostly the same parameters as the old <code>configure</code>. You can use either <code>configure</code> as before, or CMake directly. Minimum supported CMake version is 3.13.
* cctz
* If cctz library is available on the system, it will be used, otherwise the bundled copy will be used
* libargon2
* libargon2 is new optional dependency
* python
* Dropped support for Python < 3.4
* swig
* Dropped support for SWIG < 4.0.1
* The systemd unit now passes <code>--datadir=/var/lib/znc</code>


== Internal ==
== Internal ==
* Document more functions.
* Switched to steady clock for cache map and for sockets to fix certain issues with leap seconds and DST
* Use steady clock for cache map and for sockets to fix certain issues with leap seconds and DST
* Made <code>CUser::Put...()</code> send to all clients instead of only networkless clients. Deprecate CUser::PutAllUser()
* Modernized the way how CMake is used
* Make some integration tests run faster by changing ServerThrottle value
* Setup Github Actions to replace old Travis CI setup
* Setup Github Actions to replace old Travis CI setup
* Added CIFuzz {{GH|1845}}
* Added CIFuzz {{GH|1845}}
* Added CodeQL {{GH|1846}}
* Added CodeQL {{GH|1846}}
* Various fixes to CI
* List of translators is now automatically generated from Crowdin
* Generate list of translators automatically from Crowdin
* Modernized the way how CMake is used
* Update default SSL settings from Mozilla recommmendations
* Updated default SSL settings from Mozilla recommendations
* Rewrite message parsing using std::string_view, improving the performance of the parser {{GH|1785}}
* Rewrote message parsing using std::string_view, improving the performance of the parser {{GH|1785}}
* Make CUser::Put* send to all clients instead of only networkless clients. Deprecate CUser::PutAllUser()
* Web: removed legacy xhtml syntax {{GH|1723}}
 
* Documented more functions
== TODO: to triage ==
* Made some integration tests run faster by changing ServerThrottle value in the test
* Update route_replies.cpp {{git|8c00ddb3}}
* route_replies: add 337 to whois {{git|b5edca59}}
* Add Portuguese translations/ files {{git|aebdf764}}
* Test module translation of commands {{git|9c855b5c}}
* Rename cmd/desc to command/description {{git|e0c05ddb}}
* DH_set0_pqg and DH_get0_key have existed since LibreSSL 2.7 {{git|7c8ac898}}
* Fix build with libressl {{git|dcb5f3df}}
* Fixed missing paragraph closing tag {{git|2a733cc9}}
* Hide password in PASS debug lines without : in trailing param {{git|e7b6a771}}
* route_replies: route TOPIC requests to client {{git|9ff9fa7c}}
* Fix controlpanel output {{git|4393b9d9}}
* change message when staying in foreground {{git|57c94b8b}}
* Fix other skins for #1744 {{git|d505a6d4}}
* Allow reordering of channels in webadmin {{git|92d04e6a}}
* List channels in order in webadmin {{git|3ff5aaf4}}
* Add MoveChan and SwapChans commands {{git|99b33ead}}
* Fix path in systemd service (which shouldn't be here at all) {{git|d4bfd143}}
* WIP fix autotop {{git|38081d5a}}
* sasl: don't forward 908 numeric to clienT {{git|f9fc9b40}}
* Show channel indexes in ListChans command {{git|dbd47b24}}
* Respect order of subconfigs in znc.conf {{git|926d140a}}
* modperl: allow overriding timer label {{git|1c9cb3f8}}
* Web: remove legacy xhtml syntax (#1723) {{git|17ec6095}}
* Fix PY_SSIZE_T_CLEAN python warning {{git|e8ff1612}}

Latest revision as of 19:31, 10 February 2024

← 1.8.2 ZNC 1.9.0 git →


New

  • Support for capability negotiation 302 and cap-notify. ZNC now has API AddServerDependentCapability(), using which modules can easily implement new capabilities: if server supports a cap, it will automatically be offered to clients which support cap-notify and ZNC will notify the module when the capability is enabled or disabled for server and for each client. (#1859)
    • Several capabilities (away-notify, account-notify, extended-join) were moved from the core to a new module: corecaps.
    • The corecaps module is loaded automatically when upgrading from old config and when creating new config, but it's possible to unload it.
      • Note: users who were using pre-release versions of 1.9.x (from git or from nightly tarballs) won't have it loaded automatically, because the existing config states Version = 1.9. In such case you can load it manually. This is to honor choice of users who decide to unload it, since we don't know whether the module is missing intentionally.
    • Added support for account-tag capability, also in corecaps module (#1746)
  • Updated password hashing algorithm from SHA-256 to Argon2id (if libargon2 is installed). Existing passwords are transparently upgraded upon login. (#1879)
  • Allow ordering of channels: via ListChans, MoveChan and SwapChans commands, and via webadmin (#1744)
  • New user options: DenySetIdent, DenySetNetwork, DenySetRealName, DenySetQuitMsg, DenySetCTCPReplies (#1814)
  • Switch --makeconf wizard default network from freenode to Libera
  • Added Portuguese and Turkish translations
  • znc-buildmod: output where the module was written to

Fixes

  • Fixed crash when receiving SASL lines from server without having negotiated SASL via CAP
  • Fixed build with SWIG 4.2.0
  • Fixed build with LibreSSL (#1828)
  • Fixed handling of timezones when parsing server-time tags received from server (#1857) (#1773)
  • Use module names as the module ident, otherwise some clients were merging conversations with different modules together. (#1874)
  • Stopped sending invalid 333 (RPL_TOPICWHOTIME) to client if topic owner is unknown (#1889)
  • Fixed an ODR violation (#1835)
  • Better hide password in PASS debug lines, sometimes it was not hidden
  • CAP REQ sent by client without CAP LS now suspends the registration as the spec requires (#1820)

Modules

  • autoop: In some cases settings were parsed incorrectly, resulting in failure to do the autoop, now it's fixed
  • clientnotify: Added options to reduce amount of notifications depending on the IP and the client ID of the connecting client (#1843)
  • controlpanel: Fixed help output
  • log: Log nickserv account in the joins lines. (#1870)
  • modperl: Allow overriding label for timers, which means now there can be more than 1 timer per module
  • modpython:
    • Rewrote internals of how modpython loads modules. (#1724)
      • Main motivation for the switch from using imp to using importlib was to support Python 3.12+.
      • As an additional benefit, now it's possible to structure the module as a python package (a subdirectory with __init__.py and other .py files).
      • All the old python modules should load as they were before.
      • ZNC no longer supports loading a C python extension directly through modpython (though I doubt there were any users of that obscure feature): if you want to some parts of the module to be compiled, you can always import that from __init__.py.
    • Implemented Module.AddCommand() (#1832) (#1833)
  • route_replies:
    • Added Solanum-specific 337 (RPL_WHOISTEXT) to possible replies of /whois (#1881)
    • Route replies to /topic
  • sasl: Don't forward 908 (RPL_SASLMECHS) to clients (#1756)
  • webadmin: Fixed order of breadcrumbs in network page
  • watch: Allow new entries to use spaces (#1822)

Notes for package maintainers

  • Require C++17 compiler. That is, GCC 8+ or Clang 5+. (#1887)
  • Removed autoconf, leaving only CMake as the build system. The configure script is now merely a wrapper for CMake, and accepts mostly the same parameters as the old configure. You can use either configure as before, or CMake directly. Minimum supported CMake version is 3.13.
  • If cctz library is available on the system, it will be used, otherwise the bundled copy will be used
  • libargon2 is new optional dependency
  • Dropped support for Python < 3.4
  • Dropped support for SWIG < 4.0.1
  • The systemd unit now passes --datadir=/var/lib/znc

Internal

  • Switched to steady clock for cache map and for sockets to fix certain issues with leap seconds and DST
  • Made CUser::Put...() send to all clients instead of only networkless clients. Deprecate CUser::PutAllUser()
  • Setup Github Actions to replace old Travis CI setup
  • Added CIFuzz (#1845)
  • Added CodeQL (#1846)
  • List of translators is now automatically generated from Crowdin
  • Modernized the way how CMake is used
  • Updated default SSL settings from Mozilla recommendations
  • Rewrote message parsing using std::string_view, improving the performance of the parser (#1785)
  • Web: removed legacy xhtml syntax (#1723)
  • Documented more functions
  • Made some integration tests run faster by changing ServerThrottle value in the test