In perl.git, the branch blead has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/fa25ff3a5478e084688655a08731d7df58e2fc6a?hp=185c2e96081e0fd9b6c448a8db6ac4ca85ff1dd4>

- Log -----------------------------------------------------------------
commit fa25ff3a5478e084688655a08731d7df58e2fc6a
Author: Steve Hay <[email protected]>
Date:   Wed Jul 20 13:50:37 2016 +0100

    Fix typo in perldelta

M       pod/perldelta.pod

commit 70f2a5091a5063f07e3878e79723c0e19f050125
Author: Steve Hay <[email protected]>
Date:   Wed Jul 20 13:43:21 2016 +0100

    perldelta - Fill in Modules and Pragmata

M       pod/perldelta.pod

commit 2c7b07fe2d3310b6d79622edc2ad42681ced0156
Author: Steve Hay <[email protected]>
Date:   Wed Jul 20 13:33:07 2016 +0100

    perldelta - Fill in rt.perl.org links

M       pod/perldelta.pod

commit 216c09bb022d4d8e6d7c5470ac9165b21972c860
Author: Steve Hay <[email protected]>
Date:   Wed Jul 20 13:24:10 2016 +0100

    perldelta - Fill in Testing

M       pod/perldelta.pod

commit ce6646d7d570b626182162aa75e56ae90de6ffe1
Author: Steve Hay <[email protected]>
Date:   Wed Jul 20 13:21:54 2016 +0100

    perldelta - Fill in Documentation

M       pod/perldelta.pod

commit fb0f05f2353c65ed202032af752c353797cf04e6
Author: Steve Hay <[email protected]>
Date:   Wed Jul 20 13:01:07 2016 +0100

    perldelta - Fill in New Diagnostics

M       pod/perldelta.pod

commit 68328fa624596a4e7038ec0736d62dcc9a6d93dc
Author: Steve Hay <[email protected]>
Date:   Wed Jul 20 12:52:59 2016 +0100

    perldelta - Wrapping/formatting

M       pod/perldelta.pod

commit 1df6cb38d360c2ed25c995ad2e35fb989c7a8337
Author: Steve Hay <[email protected]>
Date:   Wed Jul 20 12:39:57 2016 +0100

    perldelta - Fill in "fixed in" versions for Errata items
    
    (The perl #126182 problem was reported with 5.23.4, so certainly wasn't
    *broken* in 5.24.0 as the note originally said. It was in fact *fixed* in
    that version (actually, 5.23.9) by a series of commits in early March.)

M       pod/perldelta.pod

commit 874195d6e9ba2adfe84c25f97f47017428253e7b
Author: Steve Hay <[email protected]>
Date:   Wed Jul 20 12:36:34 2016 +0100

    perldelta - Remove most boilerplate
    
    This moves one item ("scalar(%hash) return signature changed") from
    Performance Enhancements to Incompatible Changes, where I think it is more
    apt (although it does also involve a small performance enhancement).

M       pod/perldelta.pod

commit d6c223934daeecf11e9c1b28c659ea51ac2fd0cc
Author: Steve Hay <[email protected]>
Date:   Wed Jul 20 12:08:48 2016 +0100

    Module-Metadata has another customized test script

M       Porting/Maintainers.pl
M       t/porting/customized.dat

commit c9de3de896125d037ac2d8c66c05dbb5dd6b1520
Author: Steve Hay <[email protected]>
Date:   Wed Jul 20 12:05:19 2016 +0100

    Encode has some customized test scripts

M       Porting/Maintainers.pl
M       t/porting/customized.dat

commit 0b4ffce69122f064651915707455a21d480d61c3
Author: Steve Hay <[email protected]>
Date:   Wed Jul 20 11:55:16 2016 +0100

    Upgrade Test-Simple from version 1.302040 to 1.302045

M       MANIFEST
M       Porting/Maintainers.pl
M       cpan/Test-Simple/lib/Test/Builder.pm
M       cpan/Test-Simple/lib/Test/Builder/Formatter.pm
M       cpan/Test-Simple/lib/Test/Builder/Module.pm
M       cpan/Test-Simple/lib/Test/Builder/Tester.pm
M       cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm
M       cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm
M       cpan/Test-Simple/lib/Test/More.pm
M       cpan/Test-Simple/lib/Test/Simple.pm
M       cpan/Test-Simple/lib/Test/Tester.pm
M       cpan/Test-Simple/lib/Test/Tester/Capture.pm
M       cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm
M       cpan/Test-Simple/lib/Test/Tester/Delegate.pm
M       cpan/Test-Simple/lib/Test/use/ok.pm
M       cpan/Test-Simple/lib/Test2.pm
M       cpan/Test-Simple/lib/Test2/API.pm
M       cpan/Test-Simple/lib/Test2/API/Breakage.pm
M       cpan/Test-Simple/lib/Test2/API/Context.pm
M       cpan/Test-Simple/lib/Test2/API/Instance.pm
M       cpan/Test-Simple/lib/Test2/API/Stack.pm
M       cpan/Test-Simple/lib/Test2/Event.pm
M       cpan/Test-Simple/lib/Test2/Event/Bail.pm
M       cpan/Test-Simple/lib/Test2/Event/Diag.pm
M       cpan/Test-Simple/lib/Test2/Event/Exception.pm
M       cpan/Test-Simple/lib/Test2/Event/Generic.pm
M       cpan/Test-Simple/lib/Test2/Event/Info.pm
M       cpan/Test-Simple/lib/Test2/Event/Note.pm
M       cpan/Test-Simple/lib/Test2/Event/Ok.pm
M       cpan/Test-Simple/lib/Test2/Event/Plan.pm
M       cpan/Test-Simple/lib/Test2/Event/Skip.pm
M       cpan/Test-Simple/lib/Test2/Event/Subtest.pm
M       cpan/Test-Simple/lib/Test2/Event/Waiting.pm
M       cpan/Test-Simple/lib/Test2/Formatter.pm
M       cpan/Test-Simple/lib/Test2/Formatter/TAP.pm
M       cpan/Test-Simple/lib/Test2/Hub.pm
M       cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm
M       cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm
M       cpan/Test-Simple/lib/Test2/Hub/Subtest.pm
M       cpan/Test-Simple/lib/Test2/IPC.pm
M       cpan/Test-Simple/lib/Test2/IPC/Driver.pm
M       cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm
M       cpan/Test-Simple/lib/Test2/Util.pm
M       cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm
M       cpan/Test-Simple/lib/Test2/Util/HashBase.pm
M       cpan/Test-Simple/lib/Test2/Util/Trace.pm
M       cpan/Test-Simple/lib/ok.pm
M       cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t
A       cpan/Test-Simple/t/Test2/regression/693_ipc_ordering.t

commit e8d5ab7b269b27852f432c140e9d021f103b50e0
Author: Steve Hay <[email protected]>
Date:   Wed Jul 20 11:49:22 2016 +0100

    Upgrade libnet from version 3.08 to 3.09

M       Porting/Maintainers.pl
M       cpan/libnet/Makefile.PL
M       cpan/libnet/lib/Net/Cmd.pm
M       cpan/libnet/lib/Net/Config.pm
M       cpan/libnet/lib/Net/Domain.pm
M       cpan/libnet/lib/Net/FTP.pm
M       cpan/libnet/lib/Net/FTP/A.pm
M       cpan/libnet/lib/Net/FTP/E.pm
M       cpan/libnet/lib/Net/FTP/I.pm
M       cpan/libnet/lib/Net/FTP/L.pm
M       cpan/libnet/lib/Net/FTP/dataconn.pm
M       cpan/libnet/lib/Net/NNTP.pm
M       cpan/libnet/lib/Net/Netrc.pm
M       cpan/libnet/lib/Net/POP3.pm
M       cpan/libnet/lib/Net/SMTP.pm
M       cpan/libnet/lib/Net/Time.pm
M       cpan/libnet/lib/Net/libnetFAQ.pod
M       cpan/libnet/t/datasend.t
M       cpan/libnet/t/nntp_ipv6.t
M       cpan/libnet/t/pop3_ipv6.t
M       cpan/libnet/t/smtp_ipv6.t
-----------------------------------------------------------------------

Summary of changes:
 MANIFEST                                           |   1 +
 Porting/Maintainers.pl                             |  25 +-
 cpan/Test-Simple/lib/Test/Builder.pm               |   4 +-
 cpan/Test-Simple/lib/Test/Builder/Formatter.pm     |   2 +-
 cpan/Test-Simple/lib/Test/Builder/Module.pm        |   2 +-
 cpan/Test-Simple/lib/Test/Builder/Tester.pm        |   2 +-
 cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm  |   2 +-
 cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm      |   2 +-
 cpan/Test-Simple/lib/Test/More.pm                  |   2 +-
 cpan/Test-Simple/lib/Test/Simple.pm                |   2 +-
 cpan/Test-Simple/lib/Test/Tester.pm                |   2 +-
 cpan/Test-Simple/lib/Test/Tester/Capture.pm        |   2 +-
 cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm  |   2 +-
 cpan/Test-Simple/lib/Test/Tester/Delegate.pm       |   2 +-
 cpan/Test-Simple/lib/Test/use/ok.pm                |   2 +-
 cpan/Test-Simple/lib/Test2.pm                      |   2 +-
 cpan/Test-Simple/lib/Test2/API.pm                  |   2 +-
 cpan/Test-Simple/lib/Test2/API/Breakage.pm         |   2 +-
 cpan/Test-Simple/lib/Test2/API/Context.pm          |   2 +-
 cpan/Test-Simple/lib/Test2/API/Instance.pm         |   2 +-
 cpan/Test-Simple/lib/Test2/API/Stack.pm            |   2 +-
 cpan/Test-Simple/lib/Test2/Event.pm                |   2 +-
 cpan/Test-Simple/lib/Test2/Event/Bail.pm           |   2 +-
 cpan/Test-Simple/lib/Test2/Event/Diag.pm           |   2 +-
 cpan/Test-Simple/lib/Test2/Event/Exception.pm      |   2 +-
 cpan/Test-Simple/lib/Test2/Event/Generic.pm        |   2 +-
 cpan/Test-Simple/lib/Test2/Event/Info.pm           |   2 +-
 cpan/Test-Simple/lib/Test2/Event/Note.pm           |   2 +-
 cpan/Test-Simple/lib/Test2/Event/Ok.pm             |   2 +-
 cpan/Test-Simple/lib/Test2/Event/Plan.pm           |   2 +-
 cpan/Test-Simple/lib/Test2/Event/Skip.pm           |   2 +-
 cpan/Test-Simple/lib/Test2/Event/Subtest.pm        |   2 +-
 cpan/Test-Simple/lib/Test2/Event/Waiting.pm        |   2 +-
 cpan/Test-Simple/lib/Test2/Formatter.pm            |   2 +-
 cpan/Test-Simple/lib/Test2/Formatter/TAP.pm        |   2 +-
 cpan/Test-Simple/lib/Test2/Hub.pm                  |   2 +-
 cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm      |   2 +-
 .../lib/Test2/Hub/Interceptor/Terminator.pm        |   2 +-
 cpan/Test-Simple/lib/Test2/Hub/Subtest.pm          |   2 +-
 cpan/Test-Simple/lib/Test2/IPC.pm                  |   2 +-
 cpan/Test-Simple/lib/Test2/IPC/Driver.pm           |   2 +-
 cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm     | 149 +++++--
 cpan/Test-Simple/lib/Test2/Util.pm                 |   2 +-
 cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm    |   2 +-
 cpan/Test-Simple/lib/Test2/Util/HashBase.pm        |   2 +-
 cpan/Test-Simple/lib/Test2/Util/Trace.pm           |   2 +-
 cpan/Test-Simple/lib/ok.pm                         |   2 +-
 .../Test-Simple/t/Test2/modules/IPC/Driver/Files.t | 242 +++++++++++-
 .../t/Test2/regression/693_ipc_ordering.t          |  30 ++
 cpan/libnet/Makefile.PL                            |   4 +-
 cpan/libnet/lib/Net/Cmd.pm                         |  10 +-
 cpan/libnet/lib/Net/Config.pm                      |   2 +-
 cpan/libnet/lib/Net/Domain.pm                      |   2 +-
 cpan/libnet/lib/Net/FTP.pm                         |   4 +-
 cpan/libnet/lib/Net/FTP/A.pm                       |   2 +-
 cpan/libnet/lib/Net/FTP/E.pm                       |   2 +-
 cpan/libnet/lib/Net/FTP/I.pm                       |   2 +-
 cpan/libnet/lib/Net/FTP/L.pm                       |   2 +-
 cpan/libnet/lib/Net/FTP/dataconn.pm                |   2 +-
 cpan/libnet/lib/Net/NNTP.pm                        |  10 +-
 cpan/libnet/lib/Net/Netrc.pm                       |   2 +-
 cpan/libnet/lib/Net/POP3.pm                        |   4 +-
 cpan/libnet/lib/Net/SMTP.pm                        |  14 +-
 cpan/libnet/lib/Net/Time.pm                        |   2 +-
 cpan/libnet/lib/Net/libnetFAQ.pod                  |   2 +-
 cpan/libnet/t/datasend.t                           |   2 -
 cpan/libnet/t/nntp_ipv6.t                          |   1 +
 cpan/libnet/t/pop3_ipv6.t                          |   1 +
 cpan/libnet/t/smtp_ipv6.t                          |   1 +
 pod/perldelta.pod                                  | 431 ++++++++-------------
 t/porting/customized.dat                           |   7 +
 71 files changed, 665 insertions(+), 381 deletions(-)
 create mode 100644 cpan/Test-Simple/t/Test2/regression/693_ipc_ordering.t

diff --git a/MANIFEST b/MANIFEST
index a97d900..8f1b65e 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -2771,6 +2771,7 @@ cpan/Test-Simple/t/Test2/modules/Util.t
 cpan/Test-Simple/t/Test2/modules/Util/ExternalMeta.t
 cpan/Test-Simple/t/Test2/modules/Util/HashBase.t
 cpan/Test-Simple/t/Test2/modules/Util/Trace.t
+cpan/Test-Simple/t/Test2/regression/693_ipc_ordering.t
 cpan/Test-Simple/t/Test2/regression/gh_16.t
 cpan/Test-Simple/t/Test2/regression/ipc_files_abort_exit.t
 cpan/Test-Simple/t/tools.pl
diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl
index 38e6eca..b617a1a 100755
--- a/Porting/Maintainers.pl
+++ b/Porting/Maintainers.pl
@@ -388,8 +388,15 @@ use File::Glob qw(:case);
         'DISTRIBUTION' => 'DANKOGAI/Encode-2.84.tar.gz',
         'FILES'        => q[cpan/Encode],
         CUSTOMIZED     => [
-            qw( encoding.pm ),
-            'Byte/Makefile.PL',
+            qw( encoding.pm
+                Byte/Makefile.PL
+                t/enc_data.t
+                t/enc_eucjp.t
+                t/enc_module.t
+                t/enc_utf8.t
+                t/encoding.t
+                t/jperl.t
+                ),
         ],
     },
 
@@ -666,7 +673,7 @@ use File::Glob qw(:case);
     },
 
     'libnet' => {
-        'DISTRIBUTION' => 'SHAY/libnet-3.08.tar.gz',
+        'DISTRIBUTION' => 'SHAY/libnet-3.09.tar.gz',
         'FILES'        => q[cpan/libnet],
         'EXCLUDED'     => [
             qw( Configure
@@ -816,7 +823,8 @@ use File::Glob qw(:case);
             qr{^xt},
         ],
         # https://rt.perl.org/Ticket/Display.html?id=128160
-        'CUSTOMIZED'   => [ qw[ t/extract-package.t ] ],
+       # 
https://github.com/Perl-Toolchain-Gang/Module-Metadata/commit/59b3f5b45ff862a1a422a409518255736fe81b66
+        'CUSTOMIZED'   => [ qw[ t/extract-package.t t/metadata.t ] ],
     },
 
     'Net::Ping' => {
@@ -1058,15 +1066,12 @@ use File::Glob qw(:case);
     },
 
     'Test::Simple' => {
-        'DISTRIBUTION' => 'EXODIST/Test-Simple-1.302040.tar.gz',
+        'DISTRIBUTION' => 'EXODIST/Test-Simple-1.302045.tar.gz',
         'FILES'        => q[cpan/Test-Simple],
         'EXCLUDED'     => [
-            qr{^xt},
+            qr{^examples/},
+            qr{^xt/},
             qw( perltidyrc
-                examples/indent.pl
-                examples/subtest.t
-                examples/tools.pl
-                examples/tools.t
                 t/00compile.t
                 t/00-report.t
                 t/zzz-check-breaks.t
diff --git a/cpan/Test-Simple/lib/Test/Builder.pm 
b/cpan/Test-Simple/lib/Test/Builder.pm
index bc0e095..2a1be72 100644
--- a/cpan/Test-Simple/lib/Test/Builder.pm
+++ b/cpan/Test-Simple/lib/Test/Builder.pm
@@ -4,7 +4,7 @@ use 5.006;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 BEGIN {
     if( $] < 5.008 ) {
@@ -69,7 +69,7 @@ sub _add_ts_hooks {
         return Test::Builder::TodoDiag->new(%$e) if ref($e) eq 
'Test2::Event::Diag';
 
         # Set todo on ok's
-        if ($hub == $active_hub && $e->isa('Test2::Event::Ok')) {
+        if ($e->isa('Test2::Event::Ok')) {
             $e->set_todo($todo);
             $e->set_effective_pass(1);
 
diff --git a/cpan/Test-Simple/lib/Test/Builder/Formatter.pm 
b/cpan/Test-Simple/lib/Test/Builder/Formatter.pm
index b89beea..389597f 100644
--- a/cpan/Test-Simple/lib/Test/Builder/Formatter.pm
+++ b/cpan/Test-Simple/lib/Test/Builder/Formatter.pm
@@ -2,7 +2,7 @@ package Test::Builder::Formatter;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 BEGIN { require Test2::Formatter::TAP; our @ISA = qw(Test2::Formatter::TAP) }
 
diff --git a/cpan/Test-Simple/lib/Test/Builder/Module.pm 
b/cpan/Test-Simple/lib/Test/Builder/Module.pm
index 165b433..a1434f5 100644
--- a/cpan/Test-Simple/lib/Test/Builder/Module.pm
+++ b/cpan/Test-Simple/lib/Test/Builder/Module.pm
@@ -7,7 +7,7 @@ use Test::Builder;
 require Exporter;
 our @ISA = qw(Exporter);
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 =head1 NAME
diff --git a/cpan/Test-Simple/lib/Test/Builder/Tester.pm 
b/cpan/Test-Simple/lib/Test/Builder/Tester.pm
index 22003f9..de5e5e6 100644
--- a/cpan/Test-Simple/lib/Test/Builder/Tester.pm
+++ b/cpan/Test-Simple/lib/Test/Builder/Tester.pm
@@ -1,7 +1,7 @@
 package Test::Builder::Tester;
 
 use strict;
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 use Test::Builder;
 use Symbol;
diff --git a/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm 
b/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm
index 9e723ee..c28e5ad6 100644
--- a/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm
+++ b/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm
@@ -1,7 +1,7 @@
 package Test::Builder::Tester::Color;
 
 use strict;
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 require Test::Builder::Tester;
 
diff --git a/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm 
b/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm
index a5d0f6e..b716af9 100644
--- a/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm
+++ b/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm
@@ -2,7 +2,7 @@ package Test::Builder::TodoDiag;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 BEGIN { require Test2::Event::Diag; our @ISA = qw(Test2::Event::Diag) }
 
diff --git a/cpan/Test-Simple/lib/Test/More.pm 
b/cpan/Test-Simple/lib/Test/More.pm
index 01d9653..66208c4 100644
--- a/cpan/Test-Simple/lib/Test/More.pm
+++ b/cpan/Test-Simple/lib/Test/More.pm
@@ -17,7 +17,7 @@ sub _carp {
     return warn @_, " at $file line $line\n";
 }
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 use Test::Builder::Module;
 our @ISA    = qw(Test::Builder::Module);
diff --git a/cpan/Test-Simple/lib/Test/Simple.pm 
b/cpan/Test-Simple/lib/Test/Simple.pm
index 75820c2..273eee7 100644
--- a/cpan/Test-Simple/lib/Test/Simple.pm
+++ b/cpan/Test-Simple/lib/Test/Simple.pm
@@ -4,7 +4,7 @@ use 5.006;
 
 use strict;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 use Test::Builder::Module;
 our @ISA    = qw(Test::Builder::Module);
diff --git a/cpan/Test-Simple/lib/Test/Tester.pm 
b/cpan/Test-Simple/lib/Test/Tester.pm
index bb93920..adbaac9 100644
--- a/cpan/Test-Simple/lib/Test/Tester.pm
+++ b/cpan/Test-Simple/lib/Test/Tester.pm
@@ -18,7 +18,7 @@ require Exporter;
 
 use vars qw( @ISA @EXPORT );
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 @EXPORT = qw( run_tests check_tests check_test cmp_results show_space );
 @ISA = qw( Exporter );
diff --git a/cpan/Test-Simple/lib/Test/Tester/Capture.pm 
b/cpan/Test-Simple/lib/Test/Tester/Capture.pm
index 0cfa580..5a440c7 100644
--- a/cpan/Test-Simple/lib/Test/Tester/Capture.pm
+++ b/cpan/Test-Simple/lib/Test/Tester/Capture.pm
@@ -2,7 +2,7 @@ use strict;
 
 package Test::Tester::Capture;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 use Test::Builder;
diff --git a/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm 
b/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm
index 91a48cc..4c282bf 100644
--- a/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm
+++ b/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm
@@ -3,7 +3,7 @@ use strict;
 
 package Test::Tester::CaptureRunner;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 use Test::Tester::Capture;
diff --git a/cpan/Test-Simple/lib/Test/Tester/Delegate.pm 
b/cpan/Test-Simple/lib/Test/Tester/Delegate.pm
index 080509e..d331496 100644
--- a/cpan/Test-Simple/lib/Test/Tester/Delegate.pm
+++ b/cpan/Test-Simple/lib/Test/Tester/Delegate.pm
@@ -3,7 +3,7 @@ use warnings;
 
 package Test::Tester::Delegate;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 use vars '$AUTOLOAD';
diff --git a/cpan/Test-Simple/lib/Test/use/ok.pm 
b/cpan/Test-Simple/lib/Test/use/ok.pm
index a5899cb..e1e4b98 100644
--- a/cpan/Test-Simple/lib/Test/use/ok.pm
+++ b/cpan/Test-Simple/lib/Test/use/ok.pm
@@ -1,7 +1,7 @@
 package Test::use::ok;
 use 5.005;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 __END__
diff --git a/cpan/Test-Simple/lib/Test2.pm b/cpan/Test-Simple/lib/Test2.pm
index 0ac6c1c..c67ad19 100644
--- a/cpan/Test-Simple/lib/Test2.pm
+++ b/cpan/Test-Simple/lib/Test2.pm
@@ -2,7 +2,7 @@ package Test2;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 1;
diff --git a/cpan/Test-Simple/lib/Test2/API.pm 
b/cpan/Test-Simple/lib/Test2/API.pm
index 0dcf4aa..6f91667 100644
--- a/cpan/Test-Simple/lib/Test2/API.pm
+++ b/cpan/Test-Simple/lib/Test2/API.pm
@@ -2,7 +2,7 @@ package Test2::API;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 my $INST;
diff --git a/cpan/Test-Simple/lib/Test2/API/Breakage.pm 
b/cpan/Test-Simple/lib/Test2/API/Breakage.pm
index 93d10c0..580e091 100644
--- a/cpan/Test-Simple/lib/Test2/API/Breakage.pm
+++ b/cpan/Test-Simple/lib/Test2/API/Breakage.pm
@@ -2,7 +2,7 @@ package Test2::API::Breakage;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 use Test2::Util qw/pkg_to_file/;
diff --git a/cpan/Test-Simple/lib/Test2/API/Context.pm 
b/cpan/Test-Simple/lib/Test2/API/Context.pm
index 98e5247..6e9362f 100644
--- a/cpan/Test-Simple/lib/Test2/API/Context.pm
+++ b/cpan/Test-Simple/lib/Test2/API/Context.pm
@@ -2,7 +2,7 @@ package Test2::API::Context;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 use Carp qw/confess croak longmess/;
diff --git a/cpan/Test-Simple/lib/Test2/API/Instance.pm 
b/cpan/Test-Simple/lib/Test2/API/Instance.pm
index 515af62..7275e18 100644
--- a/cpan/Test-Simple/lib/Test2/API/Instance.pm
+++ b/cpan/Test-Simple/lib/Test2/API/Instance.pm
@@ -2,7 +2,7 @@ package Test2::API::Instance;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 our @CARP_NOT = qw/Test2::API Test2::API::Instance Test2::IPC::Driver 
Test2::Formatter/;
diff --git a/cpan/Test-Simple/lib/Test2/API/Stack.pm 
b/cpan/Test-Simple/lib/Test2/API/Stack.pm
index 894de47..ec19553 100644
--- a/cpan/Test-Simple/lib/Test2/API/Stack.pm
+++ b/cpan/Test-Simple/lib/Test2/API/Stack.pm
@@ -2,7 +2,7 @@ package Test2::API::Stack;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 use Test2::Hub();
diff --git a/cpan/Test-Simple/lib/Test2/Event.pm 
b/cpan/Test-Simple/lib/Test2/Event.pm
index 6e1c925..83365b5 100644
--- a/cpan/Test-Simple/lib/Test2/Event.pm
+++ b/cpan/Test-Simple/lib/Test2/Event.pm
@@ -2,7 +2,7 @@ package Test2::Event;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 use Test2::Util::HashBase qw/trace nested in_subtest subtest_id/;
diff --git a/cpan/Test-Simple/lib/Test2/Event/Bail.pm 
b/cpan/Test-Simple/lib/Test2/Event/Bail.pm
index e95890e..44688b3 100644
--- a/cpan/Test-Simple/lib/Test2/Event/Bail.pm
+++ b/cpan/Test-Simple/lib/Test2/Event/Bail.pm
@@ -2,7 +2,7 @@ package Test2::Event::Bail;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
diff --git a/cpan/Test-Simple/lib/Test2/Event/Diag.pm 
b/cpan/Test-Simple/lib/Test2/Event/Diag.pm
index 66b1ac5..afb4d6f 100644
--- a/cpan/Test-Simple/lib/Test2/Event/Diag.pm
+++ b/cpan/Test-Simple/lib/Test2/Event/Diag.pm
@@ -2,7 +2,7 @@ package Test2::Event::Diag;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
diff --git a/cpan/Test-Simple/lib/Test2/Event/Exception.pm 
b/cpan/Test-Simple/lib/Test2/Event/Exception.pm
index d08bde3..5e914fc 100644
--- a/cpan/Test-Simple/lib/Test2/Event/Exception.pm
+++ b/cpan/Test-Simple/lib/Test2/Event/Exception.pm
@@ -2,7 +2,7 @@ package Test2::Event::Exception;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
diff --git a/cpan/Test-Simple/lib/Test2/Event/Generic.pm 
b/cpan/Test-Simple/lib/Test2/Event/Generic.pm
index 69007a2..4a7d332 100644
--- a/cpan/Test-Simple/lib/Test2/Event/Generic.pm
+++ b/cpan/Test-Simple/lib/Test2/Event/Generic.pm
@@ -5,7 +5,7 @@ use warnings;
 use Carp qw/croak/;
 use Scalar::Util qw/reftype/;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
 use Test2::Util::HashBase;
diff --git a/cpan/Test-Simple/lib/Test2/Event/Info.pm 
b/cpan/Test-Simple/lib/Test2/Event/Info.pm
index 656e272..029ab54 100644
--- a/cpan/Test-Simple/lib/Test2/Event/Info.pm
+++ b/cpan/Test-Simple/lib/Test2/Event/Info.pm
@@ -4,7 +4,7 @@ use warnings;
 
 use Scalar::Util qw/blessed/;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
 use Test2::Util::HashBase qw/diagnostics renderer/;
diff --git a/cpan/Test-Simple/lib/Test2/Event/Note.pm 
b/cpan/Test-Simple/lib/Test2/Event/Note.pm
index 1425ce4..c277296 100644
--- a/cpan/Test-Simple/lib/Test2/Event/Note.pm
+++ b/cpan/Test-Simple/lib/Test2/Event/Note.pm
@@ -2,7 +2,7 @@ package Test2::Event::Note;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
diff --git a/cpan/Test-Simple/lib/Test2/Event/Ok.pm 
b/cpan/Test-Simple/lib/Test2/Event/Ok.pm
index 2b8c31e..341dc06 100644
--- a/cpan/Test-Simple/lib/Test2/Event/Ok.pm
+++ b/cpan/Test-Simple/lib/Test2/Event/Ok.pm
@@ -2,7 +2,7 @@ package Test2::Event::Ok;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
diff --git a/cpan/Test-Simple/lib/Test2/Event/Plan.pm 
b/cpan/Test-Simple/lib/Test2/Event/Plan.pm
index a7d51b3..904f6e9 100644
--- a/cpan/Test-Simple/lib/Test2/Event/Plan.pm
+++ b/cpan/Test-Simple/lib/Test2/Event/Plan.pm
@@ -2,7 +2,7 @@ package Test2::Event::Plan;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
diff --git a/cpan/Test-Simple/lib/Test2/Event/Skip.pm 
b/cpan/Test-Simple/lib/Test2/Event/Skip.pm
index 71a0a22..9b7aa64 100644
--- a/cpan/Test-Simple/lib/Test2/Event/Skip.pm
+++ b/cpan/Test-Simple/lib/Test2/Event/Skip.pm
@@ -2,7 +2,7 @@ package Test2::Event::Skip;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 BEGIN { require Test2::Event::Ok; our @ISA = qw(Test2::Event::Ok) }
diff --git a/cpan/Test-Simple/lib/Test2/Event/Subtest.pm 
b/cpan/Test-Simple/lib/Test2/Event/Subtest.pm
index 45efddb..45ba0f5 100644
--- a/cpan/Test-Simple/lib/Test2/Event/Subtest.pm
+++ b/cpan/Test-Simple/lib/Test2/Event/Subtest.pm
@@ -2,7 +2,7 @@ package Test2::Event::Subtest;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 BEGIN { require Test2::Event::Ok; our @ISA = qw(Test2::Event::Ok) }
diff --git a/cpan/Test-Simple/lib/Test2/Event/Waiting.pm 
b/cpan/Test-Simple/lib/Test2/Event/Waiting.pm
index fb41f14..15db583 100644
--- a/cpan/Test-Simple/lib/Test2/Event/Waiting.pm
+++ b/cpan/Test-Simple/lib/Test2/Event/Waiting.pm
@@ -2,7 +2,7 @@ package Test2::Event::Waiting;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
diff --git a/cpan/Test-Simple/lib/Test2/Formatter.pm 
b/cpan/Test-Simple/lib/Test2/Formatter.pm
index e258651..77d023d 100644
--- a/cpan/Test-Simple/lib/Test2/Formatter.pm
+++ b/cpan/Test-Simple/lib/Test2/Formatter.pm
@@ -2,7 +2,7 @@ package Test2::Formatter;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 my %ADDED;
diff --git a/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm 
b/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm
index 9243069..09211f0 100644
--- a/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm
+++ b/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm
@@ -3,7 +3,7 @@ use strict;
 use warnings;
 require PerlIO;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 use Test2::Util::HashBase qw{
diff --git a/cpan/Test-Simple/lib/Test2/Hub.pm 
b/cpan/Test-Simple/lib/Test2/Hub.pm
index d1ba531..707c585 100644
--- a/cpan/Test-Simple/lib/Test2/Hub.pm
+++ b/cpan/Test-Simple/lib/Test2/Hub.pm
@@ -2,7 +2,7 @@ package Test2::Hub;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 use Carp qw/carp croak confess/;
diff --git a/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm 
b/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm
index d9dec73..f81284d 100644
--- a/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm
+++ b/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm
@@ -2,7 +2,7 @@ package Test2::Hub::Interceptor;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 use Test2::Hub::Interceptor::Terminator();
diff --git a/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm 
b/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm
index 1fa8913..1666274 100644
--- a/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm
+++ b/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm
@@ -2,7 +2,7 @@ package Test2::Hub::Interceptor::Terminator;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 1;
diff --git a/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm 
b/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm
index 96338c2..835090a 100644
--- a/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm
+++ b/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm
@@ -2,7 +2,7 @@ package Test2::Hub::Subtest;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 BEGIN { require Test2::Hub; our @ISA = qw(Test2::Hub) }
diff --git a/cpan/Test-Simple/lib/Test2/IPC.pm 
b/cpan/Test-Simple/lib/Test2/IPC.pm
index 4fa952d..c09293a 100644
--- a/cpan/Test-Simple/lib/Test2/IPC.pm
+++ b/cpan/Test-Simple/lib/Test2/IPC.pm
@@ -2,7 +2,7 @@ package Test2::IPC;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 use Test2::API::Instance;
diff --git a/cpan/Test-Simple/lib/Test2/IPC/Driver.pm 
b/cpan/Test-Simple/lib/Test2/IPC/Driver.pm
index 2e06eab..521e4ce 100644
--- a/cpan/Test-Simple/lib/Test2/IPC/Driver.pm
+++ b/cpan/Test-Simple/lib/Test2/IPC/Driver.pm
@@ -2,7 +2,7 @@ package Test2::IPC::Driver;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 use Carp qw/confess longmess/;
diff --git a/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm 
b/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm
index 5c9740d..7cf62c8 100644
--- a/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm
+++ b/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm
@@ -2,7 +2,7 @@ package Test2::IPC::Driver::Files;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 BEGIN { require Test2::IPC::Driver; our @ISA = qw(Test2::IPC::Driver) }
@@ -18,6 +18,51 @@ use POSIX();
 use Test2::Util qw/try get_tid pkg_to_file IS_WIN32/;
 use Test2::API qw/test2_ipc_set_pending/;
 
+BEGIN {
+    if (IS_WIN32) {
+        my $max_tries = 5;
+
+        *do_rename = sub {
+            my ($from, $to) = @_;
+
+            my $err;
+            for (1 .. $max_tries) {
+                return (1) if rename($from, $to);
+                $err = "$!";
+                last if $_ == $max_tries;
+                sleep 1;
+            }
+
+            return (0, $err);
+        };
+        *do_unlink = sub {
+            my ($file) = @_;
+
+            my $err;
+            for (1 .. $max_tries) {
+                return (1) if unlink($file);
+                $err = "$!";
+                last if $_ == $max_tries;
+                sleep 1;
+            }
+
+            return (0, "$!");
+        };
+    }
+    else {
+        *do_rename = sub {
+            my ($from, $to) = @_;
+            return (1) if rename($from, $to);
+            return (0, "$!");
+        };
+        *do_unlink = sub {
+            my ($file) = @_;
+            return (1) if unlink($file);
+            return (0, "$!");
+        };
+    }
+}
+
 sub use_shm { 1 }
 sub shm_size() { 64 }
 
@@ -107,10 +152,12 @@ sub drop_hub {
         unless get_tid() == $tid;
 
     if ($ENV{T2_KEEP_TEMPDIR}) {
-        rename($hfile, File::Spec->canonpath("$hfile.complete")) or 
$self->abort_trace("Could not rename file '$hfile' -> '$hfile.complete'");
+        my ($ok, $err) = do_rename($hfile, 
File::Spec->canonpath("$hfile.complete"));
+        $self->abort_trace("Could not rename file '$hfile' -> 
'$hfile.complete': $err") unless $ok
     }
     else {
-        unlink($hfile) or $self->abort_trace("Could not remove file for hub 
'$hid'");
+        my ($ok, $err) = do_unlink($hfile);
+        $self->abort_trace("Could not remove file for hub '$hid': $err") 
unless $ok
     }
 
     opendir(my $dh, $tdir) or $self->abort_trace("Could not open temp dir!");
@@ -170,7 +217,11 @@ do so if Test::Builder is loaded for legacy reasons.
     # Write and rename the file.
     my ($ok, $err) = try {
         Storable::store($e, $file);
-        rename($file, $ready) or $self->abort("Could not rename file '$file' 
-> '$ready'");
+        my ($ok, $err) = do_rename("$file", $ready);
+        unless ($ok) {
+            POSIX::sigprocmask(POSIX::SIG_SETMASK(), $old, 
POSIX::SigSet->new()) if defined $blocked;
+            $self->abort("Could not rename file '$file' -> '$ready': $err");
+        };
         test2_ipc_set_pending(substr($file, -(shm_size)));
     };
 
@@ -214,35 +265,22 @@ sub cull {
     opendir(my $dh, $tempdir) or $self->abort("could not open IPC temp dir 
($tempdir)!");
 
     my @out;
-    for my $file (sort readdir($dh)) {
-        next if substr($file, 0, 1) eq '.';
-
-        next unless substr($file, -6, 6) eq '.ready';
-
-        my $global   = substr($file, 0, 6) eq 'GLOBAL';
-        my $hid_len = length($hid);
-        my $have_hid = !$global && substr($file, 0, $hid_len) eq $hid && 
substr($file, $hid_len, 1) eq '-';
-
-        next unless $have_hid || $global;
-
-        next if $global && $self->{+GLOBALS}->{$hid}->{$file}++;
-
-        # Untaint the path.
-        my $full = File::Spec->catfile($tempdir, $file);
-        ($full) = ($full =~ m/^(.*)$/gs);
-
+    for my $info (sort cmp_events map { $self->should_read_event($hid, $_) } 
readdir($dh)) {
+        my $full = $info->{full_path};
         my $obj = $self->read_event_file($full);
         push @out => $obj;
 
         # Do not remove global events
-        next if $global;
+        next if $info->{global};
 
-        my $complete = File::Spec->canonpath("$full.complete");
         if ($ENV{T2_KEEP_TEMPDIR}) {
-            rename($full, $complete) or $self->abort("Could not rename IPC 
file '$full', '$complete'");
+            my $complete = File::Spec->canonpath("$full.complete");
+            my ($ok, $err) = do_rename($full, $complete);
+            $self->abort("Could not rename IPC file '$full', '$complete': 
$err") unless $ok;
         }
         else {
-            unlink($full) or $self->abort("Could not unlink IPC file: $file");
+            my ($ok, $err) = do_unlink("$full");
+            $self->abort("Could not unlink IPC file '$full': $err") unless $ok;
         }
     }
 
@@ -250,6 +288,64 @@ sub cull {
     return @out;
 }
 
+sub parse_event_filename {
+    my $self = shift;
+    my ($file) = @_;
+
+    # The || is to force 0 in false
+    my $complete = substr($file, -9, 9) eq '.complete' || 0 and substr($file, 
-9, 9, "");
+    my $ready    = substr($file, -6, 6) eq '.ready'    || 0 and substr($file, 
-6, 6, "");
+
+    my @parts = split '-', $file;
+    my ($global, $hid) = $parts[0] eq 'GLOBAL' ? (1, shift @parts) : (0, join 
'-' => splice(@parts, 0, 3));
+    my ($pid, $tid, $eid) = splice(@parts, 0, 3);
+    my $type = join '::' => @parts;
+
+    return {
+        ready    => $ready,
+        complete => $complete,
+        global   => $global,
+        type     => $type,
+        hid      => $hid,
+        pid      => $pid,
+        tid      => $tid,
+        eid      => $eid,
+    };
+}
+
+sub should_read_event {
+    my $self = shift;
+    my ($hid, $file) = @_;
+
+    return if substr($file, 0, 1) eq '.';
+
+    my $parsed = $self->parse_event_filename($file);
+
+    return if $parsed->{complete};
+    return unless $parsed->{ready};
+    return unless $parsed->{global} || $parsed->{hid} eq $hid;
+
+    return if $parsed->{global} && $self->{+GLOBALS}->{$hid}->{$file}++;
+
+    # Untaint the path.
+    my $full = File::Spec->catfile($self->{+TEMPDIR}, $file);
+    ($full) = ($full =~ m/^(.*)$/gs) if ${^TAINT};
+
+    $parsed->{full_path} = $full;
+
+    return $parsed;
+}
+
+sub cmp_events {
+    # Globals first
+    return -1 if $a->{global} && !$b->{global};
+    return  1 if $b->{global} && !$a->{global};
+
+    return $a->{pid} <=> $b->{pid}
+        || $a->{tid} <=> $b->{tid}
+        || $a->{eid} <=> $b->{eid};
+}
+
 sub read_event_file {
     my $self = shift;
     my ($file) = @_;
@@ -306,7 +402,8 @@ sub DESTROY {
             $full =~ m/^(.*)$/;
             $full = $1; # Untaint it
             next if $ENV{T2_KEEP_TEMPDIR};
-            unlink($full) or $self->abort("Could not unlink IPC file: $full");
+            my ($ok, $err) = do_unlink($full);
+            $self->abort("Could not unlink IPC file '$full': $err") unless $ok;
             next;
         }
 
diff --git a/cpan/Test-Simple/lib/Test2/Util.pm 
b/cpan/Test-Simple/lib/Test2/Util.pm
index 299a0be..c44a752 100644
--- a/cpan/Test-Simple/lib/Test2/Util.pm
+++ b/cpan/Test-Simple/lib/Test2/Util.pm
@@ -2,7 +2,7 @@ package Test2::Util;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 use Config qw/%Config/;
diff --git a/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm 
b/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm
index 37ce841..e7555e3 100644
--- a/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm
+++ b/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm
@@ -2,7 +2,7 @@ package Test2::Util::ExternalMeta;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 use Carp qw/croak/;
diff --git a/cpan/Test-Simple/lib/Test2/Util/HashBase.pm 
b/cpan/Test-Simple/lib/Test2/Util/HashBase.pm
index a61b7fb..1121385 100644
--- a/cpan/Test-Simple/lib/Test2/Util/HashBase.pm
+++ b/cpan/Test-Simple/lib/Test2/Util/HashBase.pm
@@ -2,7 +2,7 @@ package Test2::Util::HashBase;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 require Carp;
diff --git a/cpan/Test-Simple/lib/Test2/Util/Trace.pm 
b/cpan/Test-Simple/lib/Test2/Util/Trace.pm
index 67286f9..0dc99fe 100644
--- a/cpan/Test-Simple/lib/Test2/Util/Trace.pm
+++ b/cpan/Test-Simple/lib/Test2/Util/Trace.pm
@@ -2,7 +2,7 @@ package Test2::Util::Trace;
 use strict;
 use warnings;
 
-our $VERSION = '1.302040';
+our $VERSION = '1.302045';
 
 
 use Test2::Util qw/get_tid/;
diff --git a/cpan/Test-Simple/lib/ok.pm b/cpan/Test-Simple/lib/ok.pm
index c8cf308..5f3dd1c 100644
--- a/cpan/Test-Simple/lib/ok.pm
+++ b/cpan/Test-Simple/lib/ok.pm
@@ -1,5 +1,5 @@
 package ok;
-$ok::VERSION = '1.302040';
+$ok::VERSION = '1.302045';
 
 use strict;
 use Test::More ();
diff --git a/cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t 
b/cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t
index 5cda691..1691751 100644
--- a/cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t
+++ b/cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t
@@ -2,6 +2,7 @@ BEGIN { require "t/tools.pl" };
 use Test2::Util qw/get_tid USE_THREADS try/;
 use File::Temp qw/tempfile/;
 use File::Spec qw/catfile/;
+use List::Util qw/shuffle/;
 use strict;
 use warnings;
 
@@ -40,7 +41,7 @@ ok(-d $ipc->tempdir, "created temp dir");
 is($ipc->pid, $$, "stored pid");
 is($ipc->tid, get_tid(), "stored the tid");
 
-my $hid = '12345';
+my $hid = '12345-1-1';
 
 $ipc->add_hub($hid);
 my $hubfile = File::Spec->catfile($ipc->tempdir, "HUB-$hid");
@@ -171,8 +172,8 @@ ok(!-d $tmpdir, "cleaned up temp dir");
     like($out->{STDERR}, qr/IPC Temp Dir: \Q$tmpdir\E/m, "Got temp dir path");
     like($out->{STDERR}, qr/^# Not removing temp dir: \Q$tmpdir\E$/m, "Notice 
about not closing tempdir");
 
-    like($out->{STDERR}, qr/^IPC Fatal Error: File for hub '12345' already 
exists/m, "Got message for duplicate hub");
-    like($out->{STDERR}, qr/^IPC Fatal Error: File for hub '12345' does not 
exist/m, "Cannot remove hub twice");
+    like($out->{STDERR}, qr/^IPC Fatal Error: File for hub '12345-1-1' already 
exists/m, "Got message for duplicate hub");
+    like($out->{STDERR}, qr/^IPC Fatal Error: File for hub '12345-1-1' does 
not exist/m, "Cannot remove hub twice");
 
     $out = capture {
         my $ipc = Test2::IPC::Driver::Files->new();
@@ -185,7 +186,7 @@ ok(!-d $tmpdir, "cleaned up temp dir");
 
     like($out->{STDERR}, qr/IPC Fatal Error:/, "Got fatal error");
     like($out->{STDERR}, qr/There was an error writing an event/, 
"Explanation");
-    like($out->{STDERR}, qr/Destination: 12345/, "Got dest");
+    like($out->{STDERR}, qr/Destination: 12345-1-1/, "Got dest");
     like($out->{STDERR}, qr/Origin PID:\s+$$/, "Got pid");
     like($out->{STDERR}, qr/Error: Can't store GLOB items/, "Got cause");
 
@@ -196,7 +197,7 @@ ok(!-d $tmpdir, "cleaned up temp dir");
         print STDERR $@ unless $@ =~ m/^255/;
         $ipc = undef;
     };
-    like($out->{STDERR}, qr/IPC Fatal Error: hub '12345' is not available, 
failed to send event!/, "Cannot send to missing hub");
+    like($out->{STDERR}, qr/IPC Fatal Error: hub '12345-1-1' is not available, 
failed to send event!/, "Cannot send to missing hub");
 
     $out = capture {
         my $ipc = Test2::IPC::Driver::Files->new();
@@ -208,7 +209,7 @@ ok(!-d $tmpdir, "cleaned up temp dir");
         print STDERR $@ unless $@ =~ m/^255/;
     };
     $cleanup->();
-    like($out->{STDERR}, qr/IPC Fatal Error: Not all files from hub '12345' 
have been collected/, "Leftover files");
+    like($out->{STDERR}, qr/IPC Fatal Error: Not all files from hub 
'12345-1-1' have been collected/, "Leftover files");
     like($out->{STDERR}, qr/IPC Fatal Error: Leftover files in the directory 
\(.*\.ready\)/, "What file");
 
     $out = capture {
@@ -294,5 +295,232 @@ ok(!-d $tmpdir, "cleaned up temp dir");
     $ipc = undef;
 }
 
-done_testing;
+{
+    my @list = shuffle (
+        {global => 0, pid => 2, tid => 1, eid => 1},
+        {global => 0, pid => 2, tid => 1, eid => 2},
+        {global => 0, pid => 2, tid => 1, eid => 3},
+
+        {global => 1, pid => 1,  tid => 1, eid => 1},
+        {global => 1, pid => 12, tid => 1, eid => 3},
+        {global => 1, pid => 11, tid => 1, eid => 2},
+
+        {global => 0, pid => 2, tid => 3, eid => 1},
+        {global => 0, pid => 2, tid => 3, eid => 10},
+        {global => 0, pid => 2, tid => 3, eid => 100},
+
+        {global => 0, pid => 5, tid => 3, eid => 2},
+        {global => 0, pid => 5, tid => 3, eid => 20},
+        {global => 0, pid => 5, tid => 3, eid => 200},
+    );
+
+    my @sorted;
+    {
+        package Test2::IPC::Driver::Files;
+        @sorted = sort cmp_events @list;
+    }
+
+    is_deeply(
+        \@sorted,
+        [
+            {global => 1, pid => 1,  tid => 1, eid => 1},
+            {global => 1, pid => 11, tid => 1, eid => 2},
+            {global => 1, pid => 12, tid => 1, eid => 3},
+
+            {global => 0, pid => 2, tid => 1, eid => 1},
+            {global => 0, pid => 2, tid => 1, eid => 2},
+            {global => 0, pid => 2, tid => 1, eid => 3},
+
+            {global => 0, pid => 2, tid => 3, eid => 1},
+            {global => 0, pid => 2, tid => 3, eid => 10},
+            {global => 0, pid => 2, tid => 3, eid => 100},
+
+            {global => 0, pid => 5, tid => 3, eid => 2},
+            {global => 0, pid => 5, tid => 3, eid => 20},
+            {global => 0, pid => 5, tid => 3, eid => 200},
+        ],
+        "Sort by global, pid, tid and then eid"
+    );
+}
+
+{
+    my $ipc = 'Test2::IPC::Driver::Files';
+
+    is_deeply(
+        
$ipc->parse_event_filename('GLOBAL-123-456-789-Event-Type-Foo.ready.complete'),
+        {
+            ready    => 1,
+            complete => 1,
+            global   => 1,
+            type     => "Event::Type::Foo",
+            hid      => "GLOBAL",
+            pid      => "123",
+            tid      => "456",
+            eid      => "789",
+        },
+        "Parsed global complete"
+    );
+
+    is_deeply(
+        $ipc->parse_event_filename('GLOBAL-123-456-789-Event-Type-Foo.ready'),
+        {
+            ready    => 1,
+            complete => 0,
+            global   => 1,
+            type     => "Event::Type::Foo",
+            hid      => "GLOBAL",
+            pid      => "123",
+            tid      => "456",
+            eid      => "789",
+        },
+        "Parsed global ready"
+    );
+
+    is_deeply(
+        $ipc->parse_event_filename('GLOBAL-123-456-789-Event-Type-Foo'),
+        {
+            ready    => 0,
+            complete => 0,
+            global   => 1,
+            type     => "Event::Type::Foo",
+            hid      => "GLOBAL",
+            pid      => "123",
+            tid      => "456",
+            eid      => "789",
+        },
+        "Parsed global not ready"
+    );
+
+    is_deeply(
+        
$ipc->parse_event_filename('1-1-1-123-456-789-Event-Type-Foo.ready.complete'),
+        {
+            ready    => 1,
+            complete => 1,
+            global   => 0,
+            type     => "Event::Type::Foo",
+            hid      => "1-1-1",
+            pid      => "123",
+            tid      => "456",
+            eid      => "789",
+        },
+        "Parsed event complete"
+    );
+
+    is_deeply(
+        $ipc->parse_event_filename('1-2-3-123-456-789-Event-Type-Foo.ready'),
+        {
+            ready    => 1,
+            complete => 0,
+            global   => 0,
+            type     => "Event::Type::Foo",
+            hid      => "1-2-3",
+            pid      => "123",
+            tid      => "456",
+            eid      => "789",
+        },
+        "Parsed event ready"
+    );
+
+    is_deeply(
+        $ipc->parse_event_filename('3-2-11-123-456-789-Event'),
+        {
+            ready    => 0,
+            complete => 0,
+            global   => 0,
+            type     => "Event",
+            hid      => "3-2-11",
+            pid      => "123",
+            tid      => "456",
+            eid      => "789",
+        },
+        "Parsed event not ready"
+    );
+}
+
+{
+    my $ipc = Test2::IPC::Driver::Files->new();
+
+    my $hid = "1-1-1";
+
+    is_deeply(
+        $ipc->should_read_event($hid, 
"GLOBAL-123-456-789-Event-Type-Foo.ready.complete") ? 1 : 0,
+        0,
+        "Do not read complete global"
+    );
 
+    is_deeply(
+        $ipc->should_read_event($hid, 
"GLOBAL-123-456-789-Event-Type-Foo.ready") ? 1 : 0,
+        1,
+        "Should read ready global the first time"
+    );
+    is_deeply(
+        $ipc->should_read_event($hid, 
"GLOBAL-123-456-789-Event-Type-Foo.ready") ? 1 : 0,
+        0,
+        "Should not read ready global again"
+    );
+
+    is_deeply(
+        $ipc->should_read_event($hid, "GLOBAL-123-456-789-Event-Type-Foo") ? 1 
: 0,
+        0,
+        "Should not read un-ready global"
+    );
+
+    is_deeply(
+        $ipc->should_read_event($hid, 
"$hid-123-456-789-Event-Type-Foo.ready.complete") ? 1 : 0,
+        0,
+        "Do not read complete our hid"
+    );
+
+    is_deeply(
+        $ipc->should_read_event($hid, "$hid-123-456-789-Event-Type-Foo.ready") 
? 1 : 0,
+        1,
+        "Should read ready our hid"
+    );
+
+    is_deeply(
+        $ipc->should_read_event($hid, "$hid-123-456-789-Event-Type-Foo.ready") 
? 1 : 0,
+        1,
+        "Should read ready our hid (again, no duplicate checking)"
+    );
+
+    is_deeply(
+        $ipc->should_read_event($hid, "$hid-123-456-789-Event-Type-Foo") ? 1 : 
0,
+        0,
+        "Should not read un-ready our hid"
+    );
+
+    is_deeply(
+        $ipc->should_read_event($hid, 
"1-2-3-123-456-789-Event-Type-Foo.ready.complete") ? 1 : 0,
+        0,
+        "Not ours - complete"
+    );
+
+    is_deeply(
+        $ipc->should_read_event($hid, 
"1-2-3-123-456-789-Event-Type-Foo.ready") ? 1 : 0,
+        0,
+        "Not ours - ready"
+    );
+
+    is_deeply(
+        $ipc->should_read_event($hid, "1-2-3-123-456-789-Event-Type-Foo") ? 1 
: 0,
+        0,
+        "Not ours - unready"
+    );
+
+    my @got = $ipc->should_read_event($hid, "$hid-123-456-789-Event-Type-Foo");
+    ok(!@got, "return empty list for false");
+
+    @got = $ipc->should_read_event($hid, 
"$hid-123-456-789-Event-Type-Foo.ready");
+    is(@got, 1, "got 1 item on true");
+
+    like(delete $got[0]->{full_path}, 
qr{^.+\Q$hid\E-123-456-789-Event-Type-Foo\.ready$}, "Got full path");
+    is_deeply(
+        $got[0],
+        $ipc->parse_event_filename("$hid-123-456-789-Event-Type-Foo.ready"),
+        "Apart from full_path we get entire parsed filename"
+    );
+
+    $ipc = undef;
+}
+
+done_testing;
diff --git a/cpan/Test-Simple/t/Test2/regression/693_ipc_ordering.t 
b/cpan/Test-Simple/t/Test2/regression/693_ipc_ordering.t
new file mode 100644
index 0000000..c365b8a
--- /dev/null
+++ b/cpan/Test-Simple/t/Test2/regression/693_ipc_ordering.t
@@ -0,0 +1,30 @@
+BEGIN { require "t/tools.pl" };
+use strict;
+use warnings;
+
+skip_all("Test cannot run on perls below 5.8.8") unless "$]" > 5.008007;
+
+use Test2::Util qw/CAN_THREAD/;
+use Test2::IPC;
+use Test2::API qw/context intercept/;
+
+skip_all('System does not have threads') unless CAN_THREAD();
+
+require threads;
+threads->import;
+
+my $events = intercept {
+    threads->create(
+        sub {
+            ok 1, "something $_ nonlocal" for (1 .. 15);
+        }
+    )->join;
+};
+
+is_deeply(
+    [map { $_->{name} } @$events],
+    [map "something $_ nonlocal", 1 .. 15],
+    "Culled sub-thread events in correct order"
+);
+
+done_testing;
diff --git a/cpan/libnet/Makefile.PL b/cpan/libnet/Makefile.PL
index 64d6959..6efc003 100644
--- a/cpan/libnet/Makefile.PL
+++ b/cpan/libnet/Makefile.PL
@@ -66,7 +66,7 @@ MAIN: {
         ABSTRACT => 'Collection of network protocol modules',
         AUTHOR   => 'Graham Barr <[email protected]>, Steve Hay <[email protected]>',
         LICENSE  => 'perl_5',
-        VERSION  => '3.08',
+        VERSION  => '3.09',
 
         META_MERGE => {
             'meta-spec' => {
@@ -120,7 +120,7 @@ MAIN: {
                     prereqs => {
                         runtime => {
                             requires => {
-                                'IO::Socket::IP' => '0.20'
+                                'IO::Socket::IP' => '0.25'
                             # or IO::Socket::INET6 2.62
                             }
                         }
diff --git a/cpan/libnet/lib/Net/Cmd.pm b/cpan/libnet/lib/Net/Cmd.pm
index 2242600..3f102b9 100644
--- a/cpan/libnet/lib/Net/Cmd.pm
+++ b/cpan/libnet/lib/Net/Cmd.pm
@@ -28,7 +28,7 @@ BEGIN {
   }
 }
 
-our $VERSION = "3.08";
+our $VERSION = "3.09";
 our @ISA     = qw(Exporter);
 our @EXPORT  = qw(CMD_INFO CMD_OK CMD_MORE CMD_REJECT CMD_ERROR CMD_PENDING);
 
@@ -190,6 +190,8 @@ sub set_status {
   1;
 }
 
+sub timeout { 0 }
+
 sub _syswrite_with_timeout {
   my $cmd = shift;
   my $line = shift;
@@ -748,6 +750,12 @@ command server.
 
 Returns undef upon failure.
 
+=item timeout ()
+
+Returns the timeout value for this class, in seconds. The timeout provided
+by the default implementation is 0; subclasses may override this if they
+choose.
+
 =item unsupported ()
 
 Sets the status code to 580 and the response text to 'Unsupported command'.
diff --git a/cpan/libnet/lib/Net/Config.pm b/cpan/libnet/lib/Net/Config.pm
index 3aa547e..ff2b841 100644
--- a/cpan/libnet/lib/Net/Config.pm
+++ b/cpan/libnet/lib/Net/Config.pm
@@ -20,7 +20,7 @@ use Socket qw(inet_aton inet_ntoa);
 
 our @EXPORT  = qw(%NetConfig);
 our @ISA     = qw(Net::LocalCfg Exporter);
-our $VERSION = "3.08";
+our $VERSION = "3.09";
 
 our($CONFIGURE, $LIBNET_CFG);
 
diff --git a/cpan/libnet/lib/Net/Domain.pm b/cpan/libnet/lib/Net/Domain.pm
index e2be3b1..6b650b8 100644
--- a/cpan/libnet/lib/Net/Domain.pm
+++ b/cpan/libnet/lib/Net/Domain.pm
@@ -21,7 +21,7 @@ use Net::Config;
 
 our @ISA       = qw(Exporter);
 our @EXPORT_OK = qw(hostname hostdomain hostfqdn domainname);
-our $VERSION = "3.08";
+our $VERSION = "3.09";
 
 my ($host, $domain, $fqdn) = (undef, undef, undef);
 
diff --git a/cpan/libnet/lib/Net/FTP.pm b/cpan/libnet/lib/Net/FTP.pm
index c0904c6..2bf6fc9 100644
--- a/cpan/libnet/lib/Net/FTP.pm
+++ b/cpan/libnet/lib/Net/FTP.pm
@@ -25,7 +25,7 @@ use Net::Config;
 use Socket;
 use Time::Local;
 
-our $VERSION = '3.08';
+our $VERSION = '3.09';
 
 our $IOCLASS;
 my $family_key;
@@ -45,7 +45,7 @@ BEGIN {
   my $inet6_class = eval {
     require IO::Socket::IP;
     no warnings 'numeric';
-    IO::Socket::IP->VERSION(0.20);
+    IO::Socket::IP->VERSION(0.25);
   } && 'IO::Socket::IP' || eval {
     require IO::Socket::INET6;
     no warnings 'numeric';
diff --git a/cpan/libnet/lib/Net/FTP/A.pm b/cpan/libnet/lib/Net/FTP/A.pm
index a1ae30b..5dc16fa 100644
--- a/cpan/libnet/lib/Net/FTP/A.pm
+++ b/cpan/libnet/lib/Net/FTP/A.pm
@@ -13,7 +13,7 @@ use Carp;
 use Net::FTP::dataconn;
 
 our @ISA     = qw(Net::FTP::dataconn);
-our $VERSION = "3.08";
+our $VERSION = "3.09";
 
 our $buf;
 
diff --git a/cpan/libnet/lib/Net/FTP/E.pm b/cpan/libnet/lib/Net/FTP/E.pm
index cf09d90..5f77665 100644
--- a/cpan/libnet/lib/Net/FTP/E.pm
+++ b/cpan/libnet/lib/Net/FTP/E.pm
@@ -8,6 +8,6 @@ use warnings;
 use Net::FTP::I;
 
 our @ISA = qw(Net::FTP::I);
-our $VERSION = "3.08";
+our $VERSION = "3.09";
 
 1;
diff --git a/cpan/libnet/lib/Net/FTP/I.pm b/cpan/libnet/lib/Net/FTP/I.pm
index b014f08..25d14c0 100644
--- a/cpan/libnet/lib/Net/FTP/I.pm
+++ b/cpan/libnet/lib/Net/FTP/I.pm
@@ -13,7 +13,7 @@ use Carp;
 use Net::FTP::dataconn;
 
 our @ISA     = qw(Net::FTP::dataconn);
-our $VERSION = "3.08";
+our $VERSION = "3.09";
 
 our $buf;
 
diff --git a/cpan/libnet/lib/Net/FTP/L.pm b/cpan/libnet/lib/Net/FTP/L.pm
index d13efe7..1809194 100644
--- a/cpan/libnet/lib/Net/FTP/L.pm
+++ b/cpan/libnet/lib/Net/FTP/L.pm
@@ -8,6 +8,6 @@ use warnings;
 use Net::FTP::I;
 
 our @ISA = qw(Net::FTP::I);
-our $VERSION = "3.08";
+our $VERSION = "3.09";
 
 1;
diff --git a/cpan/libnet/lib/Net/FTP/dataconn.pm 
b/cpan/libnet/lib/Net/FTP/dataconn.pm
index 8d82030..24b2ac7 100644
--- a/cpan/libnet/lib/Net/FTP/dataconn.pm
+++ b/cpan/libnet/lib/Net/FTP/dataconn.pm
@@ -13,7 +13,7 @@ use Carp;
 use Errno;
 use Net::Cmd;
 
-our $VERSION = '3.08';
+our $VERSION = '3.09';
 
 $Net::FTP::IOCLASS or die "please load Net::FTP before Net::FTP::dataconn";
 our @ISA = $Net::FTP::IOCLASS;
diff --git a/cpan/libnet/lib/Net/NNTP.pm b/cpan/libnet/lib/Net/NNTP.pm
index 0d690de..803692b 100644
--- a/cpan/libnet/lib/Net/NNTP.pm
+++ b/cpan/libnet/lib/Net/NNTP.pm
@@ -21,7 +21,7 @@ use Net::Cmd;
 use Net::Config;
 use Time::Local;
 
-our $VERSION = "3.08";
+our $VERSION = "3.09";
 
 # Code for detecting if we can use SSL
 my $ssl_class = eval {
@@ -39,7 +39,7 @@ my $family_key = 'Domain';
 my $inet6_class = eval {
   require IO::Socket::IP;
   no warnings 'numeric';
-  IO::Socket::IP->VERSION(0.20) || die;
+  IO::Socket::IP->VERSION(0.25) || die;
   $family_key = 'Family';
 } && 'IO::Socket::IP' || eval {
   require IO::Socket::INET6;
@@ -845,10 +845,10 @@ NNTP server, a value of zero will cause all IO operations 
to block.
 B<Debug> - Enable the printing of debugging information to STDERR
 
 B<Reader> - If the remote server is INN then initially the connection
-will be to nnrpd, by default C<Net::NNTP> will issue a C<MODE READER> command
-so that the remote server becomes innd. If the C<Reader> option is given
+will be to innd, by default C<Net::NNTP> will issue a C<MODE READER> command
+so that the remote server becomes nnrpd. If the C<Reader> option is given
 with a value of zero, then this command will not be sent and the
-connection will be left talking to nnrpd.
+connection will be left talking to innd.
 
 B<LocalAddr> and B<LocalPort> - These parameters are passed directly
 to IO::Socket to allow binding the socket to a specific local address and port.
diff --git a/cpan/libnet/lib/Net/Netrc.pm b/cpan/libnet/lib/Net/Netrc.pm
index 4945604..5988606 100644
--- a/cpan/libnet/lib/Net/Netrc.pm
+++ b/cpan/libnet/lib/Net/Netrc.pm
@@ -18,7 +18,7 @@ use warnings;
 use Carp;
 use FileHandle;
 
-our $VERSION = "3.08";
+our $VERSION = "3.09";
 
 our $TESTING;
 
diff --git a/cpan/libnet/lib/Net/POP3.pm b/cpan/libnet/lib/Net/POP3.pm
index bccdfb0..eaff511 100644
--- a/cpan/libnet/lib/Net/POP3.pm
+++ b/cpan/libnet/lib/Net/POP3.pm
@@ -20,7 +20,7 @@ use IO::Socket;
 use Net::Cmd;
 use Net::Config;
 
-our $VERSION = "3.08";
+our $VERSION = "3.09";
 
 # Code for detecting if we can use SSL
 my $ssl_class = eval {
@@ -38,7 +38,7 @@ my $family_key = 'Domain';
 my $inet6_class = eval {
   require IO::Socket::IP;
   no warnings 'numeric';
-  IO::Socket::IP->VERSION(0.20) || die;
+  IO::Socket::IP->VERSION(0.25) || die;
   $family_key = 'Family';
 } && 'IO::Socket::IP' || eval {
   require IO::Socket::INET6;
diff --git a/cpan/libnet/lib/Net/SMTP.pm b/cpan/libnet/lib/Net/SMTP.pm
index 6d3e4c2..726035d 100644
--- a/cpan/libnet/lib/Net/SMTP.pm
+++ b/cpan/libnet/lib/Net/SMTP.pm
@@ -21,7 +21,7 @@ use Net::Cmd;
 use Net::Config;
 use Socket;
 
-our $VERSION = "3.08";
+our $VERSION = "3.09";
 
 # Code for detecting if we can use SSL
 my $ssl_class = eval {
@@ -39,7 +39,7 @@ my $family_key = 'Domain';
 my $inet6_class = eval {
   require IO::Socket::IP;
   no warnings 'numeric';
-  IO::Socket::IP->VERSION(0.20) || die;
+  IO::Socket::IP->VERSION(0.25) || die;
   $family_key = 'Family';
 } && 'IO::Socket::IP' || eval {
   require IO::Socket::INET6;
@@ -225,11 +225,15 @@ sub auth {
     if defined $str and length $str;
 
   while (($code = $self->command(@cmd)->response()) == CMD_MORE) {
+    my $str2 = MIME::Base64::decode_base64(($self->message)[0]);
+    $self->debug_print(0, "(decoded) " . $str2 . "\n") if $self->debug;
+
+    $str = $client->client_step($str2);
     @cmd = (
-      MIME::Base64::encode_base64(
-        
$client->client_step(MIME::Base64::decode_base64(($self->message)[0])), ''
-      )
+      MIME::Base64::encode_base64($str, '')
     );
+
+    $self->debug_print(1, "(decoded) " . $str . "\n") if $self->debug;
   }
 
   $code == CMD_OK;
diff --git a/cpan/libnet/lib/Net/Time.pm b/cpan/libnet/lib/Net/Time.pm
index fae93f8..a8f0b43 100644
--- a/cpan/libnet/lib/Net/Time.pm
+++ b/cpan/libnet/lib/Net/Time.pm
@@ -24,7 +24,7 @@ use Net::Config;
 our @ISA       = qw(Exporter);
 our @EXPORT_OK = qw(inet_time inet_daytime);
 
-our $VERSION = "3.08";
+our $VERSION = "3.09";
 
 our $TIMEOUT = 120;
 
diff --git a/cpan/libnet/lib/Net/libnetFAQ.pod 
b/cpan/libnet/lib/Net/libnetFAQ.pod
index f8ad797..d844f6e 100644
--- a/cpan/libnet/lib/Net/libnetFAQ.pod
+++ b/cpan/libnet/lib/Net/libnetFAQ.pod
@@ -56,7 +56,7 @@ Authen::SASL is required for AUTH support.
 
 IO::Socket::SSL version 2.007 or higher is required for SSL support.
 
-IO::Socket::IP version 0.20 or IO::Socket::INET6 version 2.62 is
+IO::Socket::IP version 0.25 or IO::Socket::INET6 version 2.62 is
 required for IPv6 support.
 
 =head2 What machines support libnet ?
diff --git a/cpan/libnet/t/datasend.t b/cpan/libnet/t/datasend.t
index 0aea9d4..05903fb 100644
--- a/cpan/libnet/t/datasend.t
+++ b/cpan/libnet/t/datasend.t
@@ -21,8 +21,6 @@ BEGIN {
   use Net::Cmd;
   our @ISA = qw(Net::Cmd IO::File);
 
-  sub timeout { 0 }
-
   sub new {
     my $fh = shift->new_tmpfile;
     binmode($fh);
diff --git a/cpan/libnet/t/nntp_ipv6.t b/cpan/libnet/t/nntp_ipv6.t
index 1992618..768489a 100644
--- a/cpan/libnet/t/nntp_ipv6.t
+++ b/cpan/libnet/t/nntp_ipv6.t
@@ -63,4 +63,5 @@ sub nntp_server {
     }
   }
   note("NNTP dialog done");
+  return 0;
 }
diff --git a/cpan/libnet/t/pop3_ipv6.t b/cpan/libnet/t/pop3_ipv6.t
index 1c88c1a..db31128 100644
--- a/cpan/libnet/t/pop3_ipv6.t
+++ b/cpan/libnet/t/pop3_ipv6.t
@@ -63,4 +63,5 @@ sub pop3_server {
   }
 
   note("POP3 dialog done");
+  return 0;
 }
diff --git a/cpan/libnet/t/smtp_ipv6.t b/cpan/libnet/t/smtp_ipv6.t
index a31b6ff..f430721 100644
--- a/cpan/libnet/t/smtp_ipv6.t
+++ b/cpan/libnet/t/smtp_ipv6.t
@@ -65,4 +65,5 @@ sub smtp_server {
   }
 
   note("SMTP dialog done");
+  return 0;
 }
diff --git a/pod/perldelta.pod b/pod/perldelta.pod
index 3d1b0b7..31759c6 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -2,9 +2,6 @@
 
 =head1 NAME
 
-[ this is a template for a new perldelta file.  Any text flagged as XXX needs
-to be processed before release. ]
-
 perldelta - what is new for perl v5.25.3
 
 =head1 DESCRIPTION
@@ -15,157 +12,120 @@ release.
 If you are upgrading from an earlier release such as 5.25.1, first read
 L<perl5252delta>, which describes differences between 5.25.1 and 5.25.2.
 
-=head1 Notice
-
-XXX Any important notices here
-
 =head1 Core Enhancements
 
-XXX New core language features go here.  Summarize user-visible core language
-enhancements.  Particularly prominent performance optimisations could go
-here, but most should go in the L</Performance Enhancements> section.
-
-[ List each enhancement as a =head2 entry ]
-
 =head2 Unicode 9.0 is now supported
 
-A list of changes is at
-L<http://www.unicode.org/versions/Unicode9.0.0/>.  Modules that are
-shipped with core Perl but not maintained by p5p do not necessarily
-support Unicode 9.0.  L<Unicode::Normalize> does work on 9.0.
+A list of changes is at L<http://www.unicode.org/versions/Unicode9.0.0/>.
+Modules that are shipped with core Perl but not maintained by p5p do not
+necessarily support Unicode 9.0.  L<Unicode::Normalize> does work on 9.0.
 
-=head2 Use of C<\p{I<script>}> uses the improved Script_Extensions
-property
+=head2 Use of C<\p{I<script>}> uses the improved Script_Extensions property
 
-Unicode 6.0 introduced an improved form of the Script (C<sc>) property,
-and called it Script_Extensions (C<scx>).  As of now, Perl uses this
-improved version when a property is specified as just C<\p{I<script>}>.
-The meaning of compound forms, like C<\p{sc=I<script>}> are unchanged.
-This should make programs be more accurate when determining if a
-character is used in a given script, but there is a slight chance of
-breakage for programs that very specifically needed the old behavior.
-See L<perlunicode/Scripts>.
+Unicode 6.0 introduced an improved form of the Script (C<sc>) property, and
+called it Script_Extensions (C<scx>).  As of now, Perl uses this improved
+version when a property is specified as just C<\p{I<script>}>.  The meaning of
+compound forms, like C<\p{sc=I<script>}> are unchanged.  This should make
+programs be more accurate when determining if a character is used in a given
+script, but there is a slight chance of breakage for programs that very
+specifically needed the old behavior.  See L<perlunicode/Scripts>.
 
 =head2 Declaring a reference to a variable
 
-As an experimental feature, Perl now allows the referencing operator to
-come after C<my>, C<state>, C<our>, or C<local>. This syntax must be
-enabled with C<use feature 'declared_refs'>.  It is experimental, and will
-warn by default unless C<no warnings 'experimental::refaliasing'> is in
-effect.  It is intended mainly for use in assignments to references.  For
-example:
+As an experimental feature, Perl now allows the referencing operator to come
+after L<C<my()>|perlfunc/my>, L<C<state()>|perlfunc/state>,
+L<C<our()>|perlfunc/our>, or L<C<local()>|perlfunc/local>.  This syntax must
+be enabled with C<use feature 'declared_refs'>.  It is experimental, and will
+warn by default unless C<no warnings 'experimental::refaliasing'> is in effect.
+It is intended mainly for use in assignments to references.  For example:
 
     use experimental 'refaliasing', 'declared_refs';
     my \$a = \$b;
 
 See L<perlref/Assigning to References> for slightly more detail.
 
-=head1 Security
-
-XXX Any security-related notices go here.  In particular, any security
-vulnerabilities closed should be noted here rather than in the
-L</Selected Bug Fixes> section.
-
-[ List each security issue as a =head2 entry ]
-
 =head1 Incompatible Changes
 
-XXX For a release on a stable branch, this section aspires to be:
-
-    There are no changes intentionally incompatible with 5.XXX.XXX
-    If any exist, they are bugs, and we request that you submit a
-    report.  See L</Reporting Bugs> below.
-
-[ List each incompatible change as a =head2 entry ]
-
 =head2 C<${^ENCODING}> has been removed
 
-Consequently, the L<encoding> pragma's default mode is no longer supported.
-If you still need to write your source code in encodings other than UTF-8,
-use a source filter such as L<Filter::Encoding> on CPAN or L<encoding>'s
-C<Filter> option.
+Consequently, the L<encoding> pragma's default mode is no longer supported.  If
+you still need to write your source code in encodings other than UTF-8, use a
+source filter such as L<Filter::Encoding> on CPAN or L<encoding>'s C<Filter>
+option.
 
-=head1 Deprecations
+=head2 C<scalar(%hash)> return signature changed
 
-XXX Any deprecated features, syntax, modules etc. should be listed here.
+The value returned for C<scalar(%hash)> will no longer show information about
+the buckets allocated in the hash.  It will simply return the count of used
+keys.  It is thus equivalent to C<0+keys(%hash)>.
 
-=head2 Module removals
+A form of backwards compatibility is provided via C<Hash::Util::bucket_ratio()>
+which provides the same behavior as C<scalar(%hash)> provided prior to Perl
+5.25.
 
-XXX Remove this section if inapplicable.
+=head1 Modules and Pragmata
 
-The following modules will be removed from the core distribution in a
-future release, and will at that time need to be installed from CPAN.
-Distributions on CPAN which require these modules will need to list them as
-prerequisites.
+=head2 Updated Modules and Pragmata
 
-The core versions of these modules will now issue C<"deprecated">-category
-warnings to alert you to this fact.  To silence these deprecation warnings,
-install the modules in question from CPAN.
+=over 4
 
-Note that these are (with rare exceptions) fine modules that you are encouraged
-to continue to use.  Their disinclusion from core primarily hinges on their
-necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
-not usually on concerns over their design.
+=item *
 
-=over
+L<bignum> has been upgraded from version 0.42 to 0.43.
 
-=item XXX
+=item *
 
-XXX Note that deprecated modules should be listed here even if they are listed
-as an updated module in the L</Modules and Pragmata> section.
+L<Data::Dumper> has been upgraded from version 2.160 to 2.161.
 
-=back
+=item *
 
-[ List each other deprecation as a =head2 entry ]
+L<Devel::PPPort> has been upgraded from version 3.32 to 3.35.
 
-=head1 Performance Enhancements
+=item *
 
-XXX Changes which enhance performance without changing behaviour go here.
-There may well be none in a stable release.
+L<Encode> has been upgraded from version 2.80 to 2.84.
 
-[ List each enhancement as a =item entry ]
+=item *
 
-=over 4
+L<encoding> has been upgraded from version 2.17 to 2.17_01.
+
+This module's default mode is no longer supported as of Perl 5.25.3.  It now
+dies when imported, unless the C<Filter> option is being used.
 
 =item *
 
-XXX
+L<encoding::warnings> has been upgraded from version 0.12 to 0.13.
 
-=back
+This module is no longer supported as of Perl 5.25.3.  It emits a warning to
+that effect and then does nothing.
 
-=head2 C<scalar(%hash)> return signature changed
+=item *
 
-The value returned for C<scalar(%hash)> will no longer show information
-about the buckets allocated in the hash. It will simply return the count
-of used keys. It is thus equivalent to C<0+keys(%hash)>.
+L<ExtUtils::ParseXS> has been upgraded from version 3.32 to 3.33.
 
-A form of backwards compatibility is provided via C<Hash::Util::bucket_ratio()>
-which provides the same behavior as scalar(%hash) provided prior to
-Perl 5.25.
+=item *
 
-=head1 Modules and Pragmata
+L<ExtUtils::Typemaps> has been upgraded from version 3.32 to 3.33.
 
-XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
-go here.  If Module::CoreList is updated, generate an initial draft of the
-following sections using F<Porting/corelist-perldelta.pl>.  A paragraph summary
-for important changes should then be added by hand.  In an ideal world,
-dual-life modules would have a F<Changes> file that could be cribbed.
+=item *
 
-[ Within each section, list entries as a =item entry ]
+L<feature> has been upgraded from version 1.44 to 1.45.
 
-=head2 New Modules and Pragmata
+=item *
 
-=over 4
+L<Hash::Util> has been upgraded from version 0.19 to 0.20.
 
 =item *
 
-XXX
+L<Math::BigInt> has been upgraded from version 1.999715 to 1.999726.
 
-=back
+=item *
 
-=head2 Updated Modules and Pragmata
+L<Math::BigInt::FastCalc> has been upgraded from version 0.40 to 0.42.
 
-=over 4
+=item *
+
+L<Math::BigRat> has been upgraded from version 0.260802 to 0.260804.
 
 =item *
 
@@ -173,224 +133,193 @@ L<Module::CoreList> has been upgraded from version 
5.20160620 to 5.20160720.
 
 =item *
 
-L<XSLoader> has been upgraded from version 0.21 to 0.22, fixing a security
-hole in which binary files could be loaded from a path outside of @INC.
+L<Parse::CPAN::Meta> has been upgraded from version 1.4417 to 1.4422.
 
 =item *
 
-L<encoding> has been upgraded from version 2.17 to 2.17_01.
-
-This module's default mode is no longer supported as of Perl v5.25.3.  It
-now dies when imported, unless the C<Filter> option is being used.
+L<Perl::OSType> has been upgraded from version 1.009 to 1.010.
 
 =item *
 
-L<encoding::warnings> has been upgraded from version 0.12 to 0.13.
+L<Test::Simple> has been upgraded from version 1.302026 to 1.302045.
 
-This module is no longer supported as of Perl v5.25.3.  It emits a
-warning to that effect and then does nothing.
+=item *
 
-=back
+L<Time::HiRes> has been upgraded from version 1.9734 to 1.9739.
 
-=head2 Removed Modules and Pragmata
+=item *
 
-=over 4
+L<Unicode::UCD> has been upgraded from version 0.65 to 0.66.
 
 =item *
 
-XXX
-
-=back
+L<version> has been upgraded from version 0.9916 to 0.9917.
 
-=head1 Documentation
+=item *
 
-XXX Changes to files in F<pod/> go here.  Consider grouping entries by
-file and be sure to link to the appropriate page, e.g. L<perlfunc>.
+L<warnings> has been upgraded from version 1.36 to 1.37.
 
-=head2 New Documentation
+=item *
 
-XXX Changes which create B<new> files in F<pod/> go here.
+L<XSLoader> has been upgraded from version 0.21 to 0.22, fixing a security hole
+in which binary files could be loaded from a path outside of
+L<C<@INC>|perlvar/@INC>.
 
-=head3 L<XXX>
+=back
 
-XXX Description of the purpose of the new file here
+=head1 Documentation
 
 =head2 Changes to Existing Documentation
 
-XXX Changes which significantly change existing files in F<pod/> go here.
-However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
-section.
-
-=head3 L<XXX>
+=head3 L<perldata> and L<perltie>
 
 =over 4
 
 =item *
 
-XXX Description of the change here
+Updated documentation of C<scalar(%hash)>.  See L</scalar(%hash) return
+signature changed> above.
 
 =back
 
-=head1 Diagnostics
-
-The following additions or changes have been made to diagnostic output,
-including warnings and fatal error messages.  For the complete list of
-diagnostic messages, see L<perldiag>.
-
-XXX New or changed warnings emitted by the core's C<C> code go here.  Also
-include any changes in L<perldiag> that reconcile it to the C<C> code.
-
-=head2 New Diagnostics
-
-XXX Newly added diagnostic messages go under here, separated into New Errors
-and New Warnings
-
-=head3 New Errors
+=head3 L<perlexperiment> and L<perlref>
 
 =over 4
 
 =item *
 
-XXX L<message|perldiag/"message">
+Documented new feature: See L</Declaring a reference to a variable> above.
 
 =back
 
-=head3 New Warnings
+=head3 L<perlfunc>
 
 =over 4
 
 =item *
 
-XXX L<message|perldiag/"message">
+Clarified documentation of L<C<seek()>|perlfunc/seek>,
+L<C<tell()>|perlfunc/tell> and L<C<sysseek()>|perlfunc/sysseek>.
+L<[perl #128607]|https://rt.perl.org/Public/Bug/Display.html?id=128607>
 
-=back
+=item *
 
-=head2 Changes to Existing Diagnostics
+Removed obsolete documentation of L<C<study()>|perlfunc/study>.
+
+=back
 
-XXX Changes (i.e. rewording) of diagnostic messages go here
+=head3 L<perlunicode>
 
 =over 4
 
 =item *
 
-XXX Describe change here
+Documented change to C<\p{I<script>}> to now use the improved Script_Extensions
+property.  See L</Use of \p{script} uses the improved Script_Extensions
+property> above.
 
-=back
-
-=head1 Utility Changes
+=item *
 
-XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
-Most of these are built within the directory F<utils>.
+Updated the text to correspond with changes in Unicode UTS#18, concerning
+regular expressions, and Perl compatibility with what it says.
 
-[ List utility changes as a =head2 entry for each utility and =item
-entries for each change
-Use L<XXX> with program names to get proper documentation linking. ]
+=back
 
-=head2 L<XXX>
+=head3 L<perlvar>
 
 =over 4
 
 =item *
 
-XXX
+Removed obsolete documentation of C<${^ENCODING}>.  See L</${^ENCODING} has
+been removed> above.
 
 =back
 
-=head1 Configuration and Compilation
+=head1 Diagnostics
 
-XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
-go here.  Any other changes to the Perl build process should be listed here.
-However, any platform-specific changes should be listed in the
-L</Platform Support> section, instead.
+The following additions or changes have been made to diagnostic output,
+including warnings and fatal error messages.  For the complete list of
+diagnostic messages, see L<perldiag>.
+
+=head2 New Diagnostics
 
-[ List changes as a =item entry ].
+=head3 New Errors
 
 =over 4
 
 =item *
 
-XXX
+L<The experimental declared_refs feature is not enabled|perldiag/"The 
experimental declared_refs feature is not enabled">
 
-=back
+(F) To declare references to variables, as in C<my \%x>, you must first enable
+the feature:
 
-=head1 Testing
+    no warnings "experimental::declared_refs";
+    use feature "declared_refs";
 
-XXX Any significant changes to the testing of a freshly built perl should be
-listed here.  Changes which create B<new> files in F<t/> go here as do any
-large changes to the testing harness (e.g. when parallel testing was added).
-Changes to existing files in F<t/> aren't worth summarizing, although the bugs
-that they represent may be covered elsewhere.
+=back
 
-[ List each test improvement as a =item entry ]
+=head3 New Warnings
 
 =over 4
 
 =item *
 
-XXX
-
-=back
+L<Declaring references is experimental|perldiag/"Declaring references is 
experimental">
 
-=head1 Platform Support
+(S experimental::declared_refs) This warning is emitted if you use a reference
+constructor on the right-hand side of C<my()>, C<state()>, C<our()>, or
+C<local()>.  Simply suppress the warning if you want to use the feature, but
+know that in doing so you are taking the risk of using an experimental feature
+which may change or be removed in a future Perl version:
 
-XXX Any changes to platform support should be listed in the sections below.
+    no warnings "experimental::declared_refs";
**** PATCH TRUNCATED AT 2000 LINES -- 229 NOT SHOWN ****

--
Perl5 Master Repository

Reply via email to