Loop version 1.99.4 is available

Loop version 1.99.4 is available

July 14, 2025


Loop version 1.99.4 has been released (tagged at 1.99.4-20250713141817.bfebf34e59). This is in a series of releases made from the 1.99 development branch.

The following are release notes for Loop 1.99.4:

  • RT1513: Support for Fedora 40 has been dropped as it has reached EOL upstream.
  • RT1524: Support for RHEL 7 has been dropped as it has reached end-of-maintenance support upstream. Compiling Loop packages for RHEL 7 had needed extra dependencies such as a newer C compiler from devtoolset-7-gcc with support for <stdatomic.h>, and several code and build farm customizations. These have now been dropped.
  • RT1543: Several files missing from the dist tarball (source code tarball) were added to EXTRA_DIST. These are not user-visible as they're not packaged in the binary packages.
  • RT1544: A unittest suite was added for the database versioning functionality (dbversion).
  • RT1550: A seperate memory context is now used for OpenSSL 3 library's memory allocations. This allows the user to do accounting of OpenSSL 3 library's memory allocations.
  • RT1551: A benchmark program called benchmark-zone-queries was added. This program is not packaged in the binary packages currently.
  • RT1557: The task manager (taskmgr) was refactored to use atomic operations and remove mutex locking in several places.
  • RT1558: Loop's worker threads (part of the task manager) have been refactored to use event loops instead of condition variables. The user visible aspect of this would be that in backtraces, worker threads would no longer be seen blocked on pthread_cond_wait() waiting for work. Instead they would be seen blocked on epoll_wait() (Linux) or kevent() (FreeBSD).
  • RT1560: Some unnecessary arrays (proportional to the <maximum-sockets> value) and mutex arrays (and associated locking) were removed from the socket manager (socketmgr). This was possible due to the use of struct epoll_event->data.ptr and struct kevent->udata fields available as part of epoll and kevent respectively. Now, the <maximum-sockets> value as provided to named -S is simply a limit and does not use any additional resources. It could become an advisory limit in the future.
  • RT1562: A member of the socket structure was not initialized leading to a single Valgrind memcheck report which was fixed. There are no more Valgrind memcheck reports generated for named during any of our unit and system tests currently.
  • RT1515: The object attribute's value provided to dnssec-keyfromlabel -l is now properly URI percent-encoded per RFC 7512 and RFC 3986.
  • RT1564: The PIN command-line argument for DNSSEC programs has been removed. A PIN can now be provided as part of the PKCS#11 URI itself (see RFC 7512 for the pin-source and pin-value attributes).
  • RT1516: A PKCS#11 HOWTO has been added to the Loop User Manual.
  • RT1565: Release notes are now available in the Loop User Manual.

RT1560 and RT1558 involve significant changes to the socketmgr and taskmgr respectively. If there are any issues observed while using Loop, please contact us.

Other changes were made to the tree that are not ready for public release.

Some more development releases will be made from this branch until Loop 2.0 is ready to be branched. You can read about Loop branches and version numbering.

Loop Posts RSS