Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
5848ec0
Add artifact build to the CI
MichaelTimbert Feb 24, 2026
b488e48
fixing missing .mo files
MichaelTimbert Mar 3, 2026
bb55908
add gettext dependency
MichaelTimbert Mar 3, 2026
90e2ebe
fix sha commit
MichaelTimbert Mar 3, 2026
c61eeaa
Merge pull request #1513 from zonemaster/master
matsduf Mar 10, 2026
14cd91d
Update obsolete test in t/asn.t
marc-vanderwal Mar 25, 2026
074a577
Remove some redundant tests in t/recursor.t
marc-vanderwal Mar 25, 2026
a84a53f
Update t/Test-connectivity03.t
marc-vanderwal Mar 26, 2026
576c24d
Update t/Test-delegation.t
marc-vanderwal Mar 26, 2026
286606e
Fix possibly incorrect fake delegations in unit tests
marc-vanderwal Mar 26, 2026
fe7e70c
Fix test in t/nameserver.t if running offline
marc-vanderwal Mar 30, 2026
d53d04d
CI: Target Perl version 5.42
marc-vanderwal Apr 2, 2026
b824654
Update DNSSEC10 implementation
tgreenx Apr 29, 2026
d6e7b20
Remove tag DS10_ERR_MULT_NSEC3PARAM and associated code
tgreenx May 12, 2026
f8d1b28
Update unit tests and data
tgreenx May 19, 2026
8ec78c2
Merge pull request #1516 from marc-vanderwal/refactor/unit-test-maint…
marc-vanderwal May 26, 2026
15777cf
Merge pull request #1523 from tgreenx/update-dnssec10
tgreenx May 28, 2026
26140b4
Add string escape routine
marc-vanderwal May 26, 2026
bbceb1f
Nameserver15: escape bytes in TXT data
marc-vanderwal May 26, 2026
16fc249
escape(): Work around bug in old Perls
marc-vanderwal May 27, 2026
7d53344
Rename escape() to escape_unprintable()
marc-vanderwal Jun 1, 2026
32ce8a5
Merge pull request #1528 from marc-vanderwal/bugfix/nameserver15-hard…
marc-vanderwal Jun 1, 2026
e37c8e0
Scope caching of custom name server in recursive lookups
tgreenx Apr 14, 2026
1d95878
Avoid potential variable mutation issue
tgreenx Apr 14, 2026
13de9e3
Rename variable to prevent shadowing
tgreenx Apr 14, 2026
26b4826
Minor documentation changes
tgreenx Apr 14, 2026
d329b14
Properly qualify 'get_ns_from()' as an internal method
tgreenx Apr 14, 2026
6829c00
Update documentation of %recurse_cache
tgreenx Apr 14, 2026
2849caf
Update unit tests
tgreenx Apr 14, 2026
d6cf9cc
Use Memoize to cache results from recursive lookups instead
tgreenx May 5, 2026
868de7b
Add unit test for memoized recurse()
tgreenx May 5, 2026
ed8fb3b
Update unit tests data
tgreenx May 12, 2026
0f431c1
Apply suggestion from @marc-vanderwal
tgreenx May 12, 2026
50aa293
Rework unit tests
tgreenx May 12, 2026
1570a9c
Update unit tests
tgreenx Jun 2, 2026
0972da0
Merge pull request #1521 from tgreenx/resolver-isolation
tgreenx Jun 3, 2026
f5b46f6
Remove INIT block and call init_engine() explicitly in Engine
tgreenx Jun 4, 2026
dc57046
Remove circular dependencies in some modules and update unit tests
tgreenx Jun 4, 2026
0d373c9
Add missing method import
tgreenx Jun 4, 2026
33f3ec3
Update method documentation
tgreenx Jun 4, 2026
2acfe30
Nameserver: refactor and untangle query() method
marc-vanderwal Feb 2, 2026
afbc931
Set up the stage for migrating to new cache format
marc-vanderwal Apr 2, 2026
49b7cbf
Migrate all t/*.data files proper
marc-vanderwal Apr 2, 2026
10dacbf
Remove all support for the legacy cache format
marc-vanderwal Apr 2, 2026
bb5ddfb
Remove obsolete TO_JSON methods
marc-vanderwal Mar 30, 2026
7e02155
Update util/data2dig script after format change
marc-vanderwal Mar 31, 2026
fb01372
Make AXFR queries go through the cache
marc-vanderwal Apr 1, 2026
1ab0527
Cache AXFR errors in fake EDEs
marc-vanderwal Apr 1, 2026
541b9d1
Merge pull request #1530 from tgreenx/fix-init
tgreenx Jun 9, 2026
eae2a01
Merge pull request #1517 from marc-vanderwal/feature/#938
marc-vanderwal Jun 9, 2026
ebc6000
Test stringification of logs containing DNS names
marc-vanderwal Jun 10, 2026
b791874
Revert "Remove obsolete TO_JSON methods"
marc-vanderwal Jun 9, 2026
9c39b18
Merge pull request #1531 from marc-vanderwal/bugfix/dns-names-in-logs
marc-vanderwal Jun 10, 2026
9c033d6
Documentation: add artifact section
MichaelTimbert Jun 11, 2026
8a6702d
Merge pull request #1506 from MichaelTimbert/artifact
MichaelTimbert Jun 11, 2026
9a7b22b
Merge pull request #1520 from marc-vanderwal/chore/ci-perl-5.42
marc-vanderwal Jun 11, 2026
3454466
Remove profile properties 'recurse', 'igntc' and 'usevc'
tgreenx Jun 11, 2026
3a88ad1
force update
MichaelTimbert Jun 16, 2026
c6864be
Merge pull request #1535 from MichaelTimbert/artifact
MichaelTimbert Jun 16, 2026
2b7055e
Updates translation after update of the msgids
matsduf Jun 12, 2026
925c324
Merge pull request #1532 from tgreenx/remove-profile-opt
tgreenx Jun 16, 2026
d84a979
Update French translation
tgreenx Jun 16, 2026
8b3808d
Merge pull request #1536 from tgreenx/translation-fr
tgreenx Jun 16, 2026
d901fa6
Merge pull request #1533 from matsduf/translation-sv
matsduf Jun 17, 2026
7801095
Updates for release v2026.1
matsduf Jun 26, 2026
739b55d
Merge pull request #1538 from matsduf/prepare-release-2026.1
matsduf Jun 29, 2026
569d150
Adds missing tag in list of tags for DNSSEC10
matsduf Jun 29, 2026
7bcae5c
Editoria updates
matsduf Jun 29, 2026
6aad7ad
Merge pull request #1539 from matsduf/fixes-missing-tag-dnssec10
matsduf Jun 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 42 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
- develop
#- latest
perl:
- '5.40'
- '5.42'
- '5.36'
- '5.26'
runner:
Expand All @@ -35,6 +35,9 @@ jobs:
with:
perl-version: ${{ matrix.perl }}

- name: update
run: sudo apt update -y

- name: Binary dependencies
run: |
# * These were taken from the installation instruction.
Expand Down Expand Up @@ -97,3 +100,41 @@ jobs:
- name: Test
run: |
prove -lv t

build-artifact:
needs: run-tests
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4

- name: update
run: sudo apt update -y

- name: apt install
run: sudo apt-get install -y build-essential git libmodule-install-perl gettext

- name: build
run: perl Makefile.PL && make all dist

- name: Get short SHA
id: short_sha
run: |
if [ "${{ github.event_name }}" == "pull_request" ]; then
echo "SHORT_SHA=$(echo ${{ github.event.pull_request.head.sha }} | cut -c1-7)" >> $GITHUB_ENV
else
echo "SHORT_SHA=$(echo ${{ github.sha }} | cut -c1-7)" >> $GITHUB_ENV
fi

- name: Get Zonemaster-Engine version
id: version
run: |
result=`grep "use version; our $VERSION" lib/Zonemaster/Engine.pm`
result+='printf $VERSION;'
VERSION=`perl -e "$result"`
echo "version=$VERSION" >> $GITHUB_OUTPUT

- name: upload artifact
uses: actions/upload-artifact@v4
with:
name: Zonemaster-Engine-${{ steps.version.outputs.version }}-${{ env.SHORT_SHA }}
path: Zonemaster-Engine-${{ steps.version.outputs.version }}.tar.gz
21 changes: 21 additions & 0 deletions Changes
Original file line number Diff line number Diff line change
@@ -1,5 +1,26 @@
Release history for Zonemaster component Zonemaster-Engine

v9.0.0 2026-06-29 (part of Zonemaster v2026.1 release)

[Breaking changes]
- Removes deprecated profile properties,
resolver.defaults.recurse, resolver.defaults.igntc
and resolver.defaults.usevc (#1532)
- Changes saved packets’ serialization format (#1517, #1531)

[Features]
- Creates independent caching of custom name server recursive
lookups (#1521)

[Fixes]
- Updates Swedish translation (#1533)
- Updates French translation (#1536)
- Replaces Perl INIT block with explicit initialization (#1530)
- Hardens test case Nameserver15 against creative version
strings (#1528)
- Updates test case DNSSEC10 implementation (#1523, #1539)


v8.1.1 2026-03-04 (part of Zonemaster v2025.2.1 release)

[Fixes]
Expand Down
1 change: 1 addition & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ RUN apk add --no-cache \
perl-yaml \
perl-yaml-libyaml \
&& cpanm --no-wget --from=https://cpan.metacpan.org/ \
CBOR::XS \
Email::Valid \
List::Compare \
Locale::PO \
Expand Down
3 changes: 2 additions & 1 deletion Makefile.PL
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ all_from 'lib/Zonemaster/Engine.pm';
# "2.1.0" could be declared as "2.001" but not as "2.1"
# (see Zonemaster::LDNS below)

requires 'CBOR::XS' => 0;
requires 'Class::Accessor' => 0;
requires 'Clone' => 0;
requires 'Email::Valid' => 0;
Expand All @@ -34,7 +35,7 @@ requires 'Net::IP::XS' => 0.21;
requires 'Readonly' => 0;
requires 'Text::CSV' => 0;
requires 'YAML::XS' => 0;
requires 'Zonemaster::LDNS' => 5.000002; # For v5.0.2
requires 'Zonemaster::LDNS' => 5.001000; # For v5.1.0

test_requires 'Locale::PO' => 0;
test_requires 'Pod::Coverage' => 0;
Expand Down
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,15 @@ read on the [CPAN site].

Documentation on Zonemaster-Engine is also found under the [docs] directory.

## CI artifact

A tarball (`Zonemaster-Engine-<version>.tar.gz`) is built and uploaded as a GitHub Actions artifact on every push and pull request. This artifact can be useful for release testing and PR review.
To download it:
1. Go to the [Actions tab](https://github.com/zonemaster/zonemaster-engine/actions) of the repository.
2. Select a workflow run (e.g. for a specific PR or branch).
3. Scroll to the bottom of the run summary to the **Artifacts** section.
4. Download the artifact named `Zonemaster-Engine-<version>-<short_sha>`.
The artifact name includes the module version and the first 7 characters of the commit SHA.

## Participation, Contact and Bug reporting

Expand Down
13 changes: 5 additions & 8 deletions lib/Zonemaster/Engine.pm
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package Zonemaster::Engine;
use v5.16.0;
use warnings;

use version; our $VERSION = version->declare("v8.1.1");
use version; our $VERSION = version->declare("v9.0.0");

BEGIN {
# Locale::TextDomain (<= 1.20) doesn't know about File::ShareDir so give a helping hand.
Expand All @@ -26,20 +26,17 @@ use Zonemaster::Engine::Test;
use Zonemaster::Engine::Recursor;
use Zonemaster::Engine::ASNLookup;

INIT {
init_engine();
}

our $logger;
our $recursor = Zonemaster::Engine::Recursor->new;

my $init_done = 0;

my $init_done;
sub init_engine {
return if $init_done++;
Zonemaster::Engine::Recursor::init_recursor();
}

init_engine();

sub logger {
return $logger //= Zonemaster::Engine::Logger->new;
}
Expand Down Expand Up @@ -253,7 +250,7 @@ This manual describes the main L<Zonemaster::Engine> module. If what you're afte

=item init_engine()

Run the initialization tasks if they have not been run already. This method is called automatically in INIT block.
Run the initialization tasks if they have not been run already. This method is called automatically at runtime.

=item test_zone($name)

Expand Down
Loading
Loading