What’s new in PyLink: June 8, 2017

This month, PyLink 1.2 continues to progress, with numerous bug fixes added and cleanup work ongoing since 1.2-alpha1:

  • Performance improvements for outgoing message queuing: the queue engine now blocks when no messages are in the queue instead of needlessly polling it multiple times a minute.
  • Added a new $and exttarget, which allows chaining multiple ban masks together in the form $and:(mask1+mask2+mask+...). The new Exttargets guide doc shows some interesting examples on how to use this.
    • Also, negating hostmasks (e.g. !*!*@localhost) is allowed now; previously this was limited to exttargets only (e.g. !$oper was OK)
  • PyLink now supports configurable per-server encodings via an aptly-named encoding option. Previously, PyLink hardcoded UTF-8 decode/encode for all text, which is now only a default.
  • Two bug fixes regarding service bot protection, which have also been backported to 1.1 Git (i.e. the master branch):
    • Fix rejoin on KILL not working at all (this was broken for months but left unnoticed, oops!)
    • Fix rejoin on KICK not working on P10/IRCu when join modes is activated (#465)
  • Various bug fixes aimed at speeding up shutdown and preventing sporadic startup freezes with the Relay plugin.

What to expect next

High up on the list of goals for PyLink 1.2 is cleaning up PyLink’s Irc/Protocol stack, which powers the core of the services framework. Specific tasks include standardizing the coding style (camel case->snake case, consistently marking private methods with _, etc.) and breaking up the Irc class into protocol-agnostic state tracker(s). The latter, when implemented, will allow future expansion to non-IRC protocols which don’t use a simple socket for communication.

Other priorities include making more parts of the Relay plugin configurable per network (e.g. clientbot styles, server suffix), and adding (likely to PyLink-Contrib) an in-place restart command. The final list of new features for 1.2 is not yet set in stone, and will likely change as new tasks are added and others get bumped between releases.


A few reports have mentioned sporadic SSL disconnections with OpenSSL 1.0.2: https://github.com/GLolol/PyLink/issues/463. Unfortunately, I have not been able to reproduce the issue, and so cannot offer a fix. OpenSSL 1.0.2 ships with Ubuntu 16.04 LTS, so the impact will likely enlarge as that adoption grows. (It is also unknown at this point which versions of PyLink this bug affects; my assumption isĀ all of them!)


PyLink 1.2-alpha1+ is available in the devel branch of PyLink’s source tree; you can switch to it by running git checkout devel and re-running setup.py. It is worth noting that 1.2 is in its pre-release stages, so there will probably be bugs!
Debian and Ubuntu users can also install nightly builds of the devel branch through their respective APT repositories.


Jjjjjohn GIF - Find & Share on GIPHY

Leave a Comment