[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Announcing ERC 5.5

From: J.P.
Subject: Announcing ERC 5.5
Date: Sat, 04 Mar 2023 06:48:14 -0800
User-agent: Gnus/5.13 (Gnus v5.13)

This release comes with a host of bug fixes to core functionality, like
buffer naming, and to various library integrations. It also finally
delivers on the long-awaited promise of SASL support. Here's the full
rundown from etc/ERC-NEWS [1]:

  Changes in ERC 5.5

  * Smarter buffer naming for withstanding collisions.

    ERC buffers now remain tied to their logical network contexts, even
    while offline. These associations can survive regional server
    changes and the intercession of proxies. As has long been practiced
    in other areas of Emacs, "uniquified" buffer renaming prevents
    collisions between buffers of different contexts. ERC's approach
    prioritizes predictability over economy, favoring fully qualified
    suffixes without elided or omitted components. Potential avenues for
    confusion remain but will die out with the adoption of emerging
    protocol extensions.

  * Option 'erc-rename-buffers' deprecated.

    The promises made by its old "on" state are now fully realized and
    enabled permanently by default. Its old behavior when disabled has
    been preserved and will remain available (with warnings) for years
    to come.

  * Option 'erc-reuse-buffers' deprecated.

    This ancient option has been a constant source of confusion, as
    exhibited most recently when its "disabled" meaning was partially
    inverted. Introduced in ERC 5.4 (Emacs 28.1), this regression saw
    existing channel buffers transparently reassociated instead of
    created anew. The pre-5.4 "disabled" behavior has been restored and
    will remain accessible for the foreseeable future, warts and all
    (e.g., with its often superfluous "/DIALED-HOST" suffixing always

  * The 'networks' module is now quasi-required.

    The 'networks' module is now all but required for everyday
    interactive use. A default member of 'erc-modules' since ERC 5.3,
    'networks' has grown increasingly integral to core client operations
    over the years. From now on, only the most essential operations will
    be officially supported in its absence, and users will see a warning
    upon invoking an entry point, like 'erc-tls', when that's the case.

    On a related note, the function 'erc-network' now always returns
    non-nil in buffers created by a successfully established IRC
    connection, even after that connection has been closed. This was
    done to aid the overall effort to improve buffer association.
  * Tighter auth-source integration.

    The days of hit-and-miss auth-source queries are hopefully behind
    us. With the overhaul of the services module temporarily shelved and
    the transition to SASL-based authentication still underway, users
    may feel left in the lurch to endure yet another release cycle of
    backtick hell. For some, auth-source may provide a workaround in the
    form of nonstandard server passwords. See the section entitled
    "auth-source" in the Integrations chapter of ERC's manual.

  * Rudimentary SASL support has arrived.

    A new module, 'erc-sasl', now ships with ERC. See Info node "(erc)
    SASL" in the manual for details.

  * Username argument for entry-point commands.

    Commands 'erc' and 'erc-tls' now accept a ':user' keyword argument,
    which, when present, becomes the first argument passed to the "USER"
    IRC command. The traditional way of setting this globally, via
    'erc-email-userid', is still honored.
  * Changes to display options for new ERC buffers.

    The default value for the option 'erc-join-buffer', which determines
    how new buffers are displayed, has been changed to 'bury' for
    security reasons. Although the old value of 'buffer' is still
    accessible, along with its original behavior, users wanting a safer
    alternative can now opt for an improved 'window-noselect' instead.
    It still offers the same pronounced visual cue when connecting and
    joining but now avoids any hijacking of the active window as well.

    Beyond this, additional flexibility is now available for controlling
    the behavior of newly created target buffers during reconnection.
    See the option 'erc-reconnect-display' for more.
  * Improved handling of multiline prompt input.

    This means better detection and handling of intervening and trailing
    blanks when 'erc-send-whitespace-lines' is active. New options have
    also been added for warning when input spans multiple lines.
    Although off by default, new users are encouraged to enable them.
    See options 'erc-inhibit-multiline-input' and

  * URL handling has improved.

    Clicking on 'irc://' and 'ircs://' links elsewhere in Emacs now does
    the right thing most of the time. However, for security reasons,
    users are now prompted to confirm connection parameters prior to
    lift off. See the new '(erc) Integrations' section in the Info
    manual for details.

  * ERC's major-mode hook now runs slightly later.

    The function 'erc-open' now delays running 'erc-mode-hook' until
    ERC's prompt and its bounding markers and many essential local
    variables have been initialized. Those essentials include the
    familiar 'erc-default-recipients', 'erc-server-users', and
    'erc-network', as well as the various "session" variables, like
    'erc-session-connector'. ERC activates "local modules" immediately
    afterward, just before running 'erc-connect-pre-hook', which is
    still useful for gaining a full accounting of what's been set.

    In similar news, 'erc-open' no longer calls 'erc-update-modules'.
    However, it still activates modules in a similar fashion, meaning,
    among other things, global-module setup still occurs before
    major-mode activation (something that's here to stay for
    compatibility reasons).
  * Miscellaneous behavioral changes impacting the user experience.

    A bug has been fixed that saw prompts being mangled, doubled, or
    erased in server buffers upon disconnection. Instead, input prompts
    now collapse into an alternate form designated by the option
    'erc-prompt-hidden'. Behavior differs for query and channel buffers
    but can be fine-tuned via the repurposed, formerly abandoned option

    Another fix-turned-feature involves certain commands provided by the
    'erc-match' module, such as 'erc-add-keyword', 'erc-add-pal', and
    others, which now optionally offer to 'regexp-quote' the current
    input. The old behavior, if desired, can still be had via the new
    option 'erc-match-quote-when-adding'.

    In 5.4, support for using network symbols as keys was added for
    'erc-autojoin-channels-alist'. This has been extended to include
    explicit symbols passed to 'erc-tls' and 'erc' as so-called
    network-context identifiers via a new ':id' keyword. The latter
    carries wider significance beyond autojoin and can be used for
    unequivocally identifying a connection in a human-readable way.

    A number of UX-centric bug fixes accompany this release. For
    example, spaces are now possible in server passwords, and users of
    the Soju bouncer should no longer see outgoing messages pile up
    during periods of heavy traffic. See the Emacs change log for the
    full complement.

  * Miscellaneous behavioral changes in the library API.

    A number of core macros and other definitions have been moved to a
    new file called erc-common.el. This was done to help mitigate
    various complications arising from the mutual dependency between
    'erc' and 'erc-backend'.

    Also on the maintainability front, ERC now relies on the Compat
    library from GNU ELPA to supply forward compatibility shims for
    users running older versions of Emacs. The required Compat version
    resides atop ERC's main library file, in the 'Package-Requires'
    header. Third-party modules should benefit automatically from its

    In an effort to help further tame ERC's complexity, the variable
    'erc-default-recipients' is now expected to hold but a single
    target. As a consequence, functions like 'erc-add-default-channel'
    that imagine an alternate, aspirational model of buffer-target
    relations have been deprecated. See Emacs change-log entries from
    around July of 2022 for specifics.

    A number of less consequential deprecations also debut in this
    release. For example, the function 'erc-auto-query' was deemed too
    difficult to understand, behavior wise, and has thus been stricken
    from the client code path with no public replacement. Although
    likely uncontroversial, such changes may still spell disruption for
    some. If you find yourself among them and in need of explanations,
    please see related entries in the change log and discussions on the
    bug tracker.

    Although this release is light on API features, some groundwork has
    been laid for what may become a new breed of ERC module, namely,
    "connection-local" (or simply "local") modules. This marks a small
    but crucial step forward toward a more flexible and granular
    revamping of ERC's long touted extensibility. See the Info node
    "(erc) Local Modules" for details.

    Lastly, a few internal variables have been introduced that could
    just as well have been made public, possibly as user options.
    Likewise for some internal functions. As always, users needing such
    functionality officially exposed are encouraged to write to

Special thanks are owed to the following individuals (in no particular
order) for contributing to this release:

  - The Emacs maintainers, obviously
  - Amin, of course, for patiently enduring the neverending patch set
    from hell
  - Stefan Kangas for code review, doc fixes, and background maintenance
  - Philip Kaludercic and Daniel Mendler for writing and maintaining
  - Akib Azmain Turja for detailed help with the auth-source integration
  - Mike Kazantsev for reporting and testing the many-faceted
    query-buffers bug
  - Christer Enfors for improving the docs
  - Dick R. Chiang for untangling the mutual-dependency nightmare
  - Libera user jrm for reporting the custom-options regression
  - Mattias EngdegÄrd for help with the DCC issue and various regexp
  - Michael Albinus, Alex Schroeder, Michael Olson, Stefan Monnier, and
    Damien Cassou for administrative advice and guidance
  - Bug filers and discussion participants Fernando de Morais, Rostislav
    Svoboda, Emanuel Berg, Corwin Brust, GNU Hacker, Guy Gastineau, Lin
    Jian, Will Mengarini, Matheus Fillipe, Pankaj Jangid, Bob Proulx,
    Tohiko Looka, Nacho Barrientos, TRS-80, and others

For anyone else thinking of getting involved, please step forward and
answer the call. We could definitely use a hand in any area, especially

  - Bug fixes and code review
  - Architecture and design
  - Test coverage
  - Documentation
  - External support (Libera.Chat, Reddit, Stack Overflow, EmacsWiki)

Look forward to hearing from you, and please enjoy the release!


[1] https://git.savannah.gnu.org/cgit/emacs.git/tree/etc/ERC-NEWS

reply via email to

[Prev in Thread] Current Thread [Next in Thread]