Revision history for Perl module DNS::Unbound

0.29 Sat, 12 Mar 2022
- Reject NULs in input strings where relevant.
- Tweak memory handling. This hopefully will stop the random
  (unreproducible?) segfaults seen in occasional CPAN Testers runs.
- Stop needlessly exporting non-XS C functions from the XS module.
- Tweak documentation; add reference to alternative implementation.
- Fix tests on 5.8. It really shouldn’t matter since X::Tiny requires 5.10,
  but some CPAN installers happily install X::Tiny anyway when installing
  DNS::Unbound on 5.8. It’s an easy enough fix, though, and it usefully
  tests the object properties of the thrown errors. So hey.
- Fix install with old libunbound (e.g., 1.4.17).
- Require a new-ish X::Tiny (since tests assume it).
- Fix trivial warning in Makefile.PL.
- Make feature-detection logic mimic build configuration better.
- Test suite is now much “quieter”.

0.28 Wed, 15 Dec 2021
- Make all Unbound-created errors X::Tiny::Base instances.
- Import error codes from unbound.h.
- Add more tests.

0.27 Tue, 23 Nov 2021
- BUG FIX: Close dup()ed file descriptors when setting debugout() away from them.
- UB_* constants are now defined and documented.
- Add test coverage metrics.
- Add Cygwin CI.
- Tweak documentation verbiage to clarify why this moduule exists.

0.26 Tue, 10 Aug 2021
- Fix t/mojo.t to ignore spurious warning from some older Mojo versions.

0.25 Mon, 9 Aug 2021
- BUG FIX: Make the C code not depend on (pure) Perl for memory handling.
  This intends to fix some longstanding (and hard-to-reproduce)
  memory-handling nits, but it’s also just much cleaner besides.
- BUG FIX: We now honour $Config{'ccflags'} when building the module.
  (This broke at some point on 32-bit RaspiOS.)
- BUG FIX: Previously we set ub_ctx_debugout() to STDERR immediately before
  destroying the Unbound instance. This worked around a bug in libunbound,
  but it also seems occasionally to cause “leftover” log messages then to
  go to STDERR. We now apply a different workaround: dup() the file descriptor
  when calling debugout(), which obviates the need to set it back to STDERR
  (since this is now libunbound’s very own file descriptor).
- BUG FIX: DNS::Unbound::Mojo no longer tight-loops.
- BUG FIX: DNS::Unbound::Mojo now removes itself from Mojo’s reactor at
  DESTROY time; previously it neglected this cleanup step.
- Fix t/load.t:
    - The test now runs to completion rather than silently failing.
    - The test now accommodates old Unbounds that lack `ttl`.
    - Long TTLs. Unbound’s default was 86400, so responses
      that had longer TTLs caused a conflict between Net::DNS’s parse
      and Unbound’s response.
- Objects now warn() on DESTROY at global destruction. This helps to
  identify memory leaks. (It also entails a higher Promise::ES6 version
- Internal style improvements.
- All tests now fail on warnings.

0.24 Tue, 27 Jul 2021
- BUG FIX: Several memory leaks from errantly-high reference counts.
- Various tweaks for efficiency: pre-extend arrays, etc.

0.23 Tue, 1 Jun 2021
- Make unbound_version() a regular XSUB rather than a constant. This avoids
  the need to recompile perlcc-compiled binaries when updating Unbound.

0.22 Thu, 25 Feb 2021
- BUG FIX: Use byte representation to send strings to C. This fixes
  encoding problems with non-ASCII strings.

0.21 Sat, 9 Jan 2021
- Fix author test resolvconf.t after default port changed from 53 to 5353
  in Net::DNS::Nameserver version 1.28.
- Special classes for AnyEvent, IO::Async, and Mojolicious are added.
- Spruce up typemap’s mismatch error reporting.
- Internal improvements.

0.20 Mon, 3 Aug 2020
- BUG FIX: Don’t free the unbound context if its reference is already gone.
- BUG FIX: Use the “real” finally() rather than wrapping then() (badly).
- Trivial simplification to XS code.

0.19 Tue, 18 Feb 2020
- Fix compatibility with old libunbounds that didn’t include ub_result.ttl.
- Forgo version detection in favor of feature detection.
- Fail Makefile.PL on systems where libunbound or its header is unavailable.
- Make tests output UTF-8.
- Fix a couple test warnings on old perls.

0.18 Fri, 31 Jan 2020
- Skip unreliable resolvconf test when installing the module.

0.17 Fri, 31 Jan 2020
- BREAKING CHANGE: DNSSEC functions (introduced in 0.15) now throw errors and
  return $self.
- Add hosts() and resolvconf() methods.
- The Promise::ES6 async query implementation is now always loaded.

0.16 Sun, 5 Jan 2020
- Fix use with old libunbound versions.
- (undocumented) experimental support for promise engines besides Promise::ES6

0.15 Thu, 2 Jan 2020
- Add DNSSEC setup (i.e., trust anchor) methods.

0.14 - Thu, 14 Nov 2019
- Rewrite to avoid Promise::ES6 internals.

0.13 - Fri, 8 Nov 2019
- BUG FIX: Accommodate having loaded at compile time.
- Add answer_packet() accessor to DNS::Unbound::Result.
- Deprecate to_net_dns_rrs().
- Add examples to demonstrate interaction with AnyEvent and IO::Async.

0.12 - Sat, 14 Sep 2019
- Rename count_pending_promises() to count_pending_queries().

0.11 - Sat, 14 Sep 2019
- Fix memory leak when an asynchronous query is canceled.
- Add count_pending_promises() method.

0.10 - Mon, 26 Aug 2019
- Query results are now represented as instances of DNS::Unbound::Result
  rather than simple hash references. Existing implementations should
  continue to work.
- DNS::Unbound::Result’s method to convert a query result to Net::DNS::RR
  instances obviates the need to decode query results manually.
  The decode_name() and decode_character_strings() functions will be
  retained as a convenience for contexts where they’re useful.
- resolve() and resolve_async() now fall back on Net::DNS::Parameters
  to parse any unrecognized query types.

0.09 - Sat, 27 July 2019
- Remove dependency on recent ExtUtils::MakeMaker version.
- Split DNS::Unbound::AsyncQuery off to a separate file; add POD & test.
- Beef up documentation.

0.08 - Thu, 13 June 2019
- Tweak verbiage (no code changes)

0.07 - Sun, 9 June 2019
- Add error checking for debugout().
- Work around libunbound debugout bug (

0.06 - Fri, 7 June 2019
- Add debug control support.

0.05 - Fri, 7 June 2019
- Add asynchronous query support.
- Fix instantiation of ResolveError exception.

0.04 - Sun, 19 May 2019
- BUG FIX: Prevent excess destruction of context struct.
- OPTIMIZATION: Store ints as IV rather than NV.

0.03 - Thu, 16 May 2019
- Fix bugtracker in Makefile.PL.

0.02 - Mon, 25 March 2019
- Resolve configure_requires issue.
- Fix dangling “1;” in POD.

0.01 - Thu, 21 March 2019
- Initial release