In perl.git, the branch blead has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/8a6aac01b357b1712b6af0e9295067de745ebda3?hp=b91109982da922625555ad4da644a0a787b77140>

- Log -----------------------------------------------------------------
commit 8a6aac01b357b1712b6af0e9295067de745ebda3
Author: Karl Williamson <k...@cpan.org>
Date:   Wed Apr 5 11:36:11 2017 -0600

    ext/GDBM_File: Add L<> around pod link

M       ext/GDBM_File/GDBM_File.pm

commit 8169d12643ae5e0bafc218f66be72efee836d52b
Author: Karl Williamson <k...@cpan.org>
Date:   Tue Mar 21 21:37:28 2017 -0600

    XS-APItest: Rename some tests files
    
    The names of these long-running test files are changed to uniform style
    to indicate that they run long.

M       MANIFEST
R100    ext/XS-APItest/t/handy0.t       ext/XS-APItest/t/handy00.t
R100    ext/XS-APItest/t/handy1.t       ext/XS-APItest/t/handy01.t
R100    ext/XS-APItest/t/handy2.t       ext/XS-APItest/t/handy02.t
R100    ext/XS-APItest/t/handy3.t       ext/XS-APItest/t/handy03.t
R100    ext/XS-APItest/t/handy4.t       ext/XS-APItest/t/handy04.t
R100    ext/XS-APItest/t/handy5.t       ext/XS-APItest/t/handy05.t
R100    ext/XS-APItest/t/handy6.t       ext/XS-APItest/t/handy06.t
R100    ext/XS-APItest/t/handy7.t       ext/XS-APItest/t/handy07.t
R100    ext/XS-APItest/t/handy8.t       ext/XS-APItest/t/handy08.t
R100    ext/XS-APItest/t/handy9.t       ext/XS-APItest/t/handy09.t
R100    ext/XS-APItest/t/utf8_warn0.t   ext/XS-APItest/t/utf8_warn00.t
R100    ext/XS-APItest/t/utf8_warn1.t   ext/XS-APItest/t/utf8_warn01.t
R100    ext/XS-APItest/t/utf8_warn2.t   ext/XS-APItest/t/utf8_warn02.t
R100    ext/XS-APItest/t/utf8_warn3.t   ext/XS-APItest/t/utf8_warn03.t
R100    ext/XS-APItest/t/utf8_warn4.t   ext/XS-APItest/t/utf8_warn04.t
R100    ext/XS-APItest/t/utf8_warn5.t   ext/XS-APItest/t/utf8_warn05.t
R100    ext/XS-APItest/t/utf8_warn6.t   ext/XS-APItest/t/utf8_warn06.t
R100    ext/XS-APItest/t/utf8_warn7.t   ext/XS-APItest/t/utf8_warn07.t
R100    ext/XS-APItest/t/utf8_warn8.t   ext/XS-APItest/t/utf8_warn08.t
R100    ext/XS-APItest/t/utf8_warn9.t   ext/XS-APItest/t/utf8_warn09.t

commit dbc47c6fa7478cfc67457c2ab0f70034996fe018
Author: Karl Williamson <k...@cpan.org>
Date:   Mon Mar 20 17:17:39 2017 -0600

    Silence many "statement not reached" on Solaris
    
    It turns out that the NOT_REACHED macro that is used to make sure a
    statement really isn't reachable, causes the Solaris compiler to emit
    such warnings.  It expands to ASSUME(0), and Solaris will flag that.
    This commit just changes NOT_REACHED to expand to nothing on Solaris.

M       perl.h

commit 272af0584dc7bd5ab0e8097878bd08ea604ac2e3
Author: Karl Williamson <k...@cpan.org>
Date:   Sat Mar 11 11:50:58 2017 -0700

    mktables: Fix up version compare
    
    This is a feature that is used to compare 2 different Unicode versions
    for changes to existing code points, ignoring code points that aren't in
    the earlier version.  It does this by removing the newly-added code
    points coming from the later version.  One can then diff the generated
    directory structure against an existing one that was built under the old
    rules to see what changed.
    
    Prior to this commit, it assumed all version numbers were a single digit
    for the major number.  This will no longer work for Unicode 10, about to
    be released.
    
    As part of the process, mktables adds blocks that didn't exist in the
    earlier version back to the unallocated pool.  This gives better diff
    results.  This commit does a better job of finding such blocks.

M       charclass_invlists.h
M       lib/unicore/mktables
M       regcharclass.h

commit a25d3b59702b551ace9e660fea69ff29d7909dd4
Author: Karl Williamson <k...@cpan.org>
Date:   Mon Jan 30 14:01:29 2017 -0700

    regcomp.c: Change lookup for dumping pattern
    
    Instead of using a bunch of branches, use strchr() to see if a
    character is a member of a class.  This is a common paradigm in the
    parsers.

M       regcomp.c

commit 4f3d592dab44d979d9445efa51979df782491855
Author: Karl Williamson <k...@cpan.org>
Date:   Thu May 11 22:25:25 2017 -0600

    Reword description of 'bytes_from_utf8()'
    
    This should make it clearer as to what's going on.

M       utf8.c

commit a228a8afb50e88ba96ea16ae01a557e4b3d3e2f9
Author: Karl Williamson <k...@cpan.org>
Date:   Wed May 17 11:27:03 2017 -0600

    APItest/t/utf8_setup.pl: Add #define equivalent
    
    I don't know of an easy way to automatically import hdr file constants
    into Perl code (and if there were one, there are plenty of existing
    modules that don't take advantage of it), and so they get copied and
    pasted into Perl, and changed enough to match Perl syntax.  When the
    constants change, the Perl code must be manually updated.  Here, a new
    constant was added, and now the Perl is being updated to match.

M       ext/XS-APItest/t/utf8_setup.pl

commit 725a67e540ba5cb03c83ba1ed0541f2cc088b3b1
Author: Karl Williamson <k...@cpan.org>
Date:   Wed May 17 11:21:57 2017 -0600

    perluniintro: Update advice for LC_COLLATE
    
    This was changed to work better in 5.26, but this pod didn't get
    updated.

M       pod/perluniintro.pod
-----------------------------------------------------------------------

Summary of changes:
 MANIFEST                                         | 40 ++++++++++++------------
 charclass_invlists.h                             |  2 +-
 ext/GDBM_File/GDBM_File.pm                       |  4 +--
 ext/XS-APItest/t/{handy0.t => handy00.t}         |  0
 ext/XS-APItest/t/{handy1.t => handy01.t}         |  0
 ext/XS-APItest/t/{handy2.t => handy02.t}         |  0
 ext/XS-APItest/t/{handy3.t => handy03.t}         |  0
 ext/XS-APItest/t/{handy4.t => handy04.t}         |  0
 ext/XS-APItest/t/{handy5.t => handy05.t}         |  0
 ext/XS-APItest/t/{handy6.t => handy06.t}         |  0
 ext/XS-APItest/t/{handy7.t => handy07.t}         |  0
 ext/XS-APItest/t/{handy8.t => handy08.t}         |  0
 ext/XS-APItest/t/{handy9.t => handy09.t}         |  0
 ext/XS-APItest/t/utf8_setup.pl                   |  2 ++
 ext/XS-APItest/t/{utf8_warn0.t => utf8_warn00.t} |  0
 ext/XS-APItest/t/{utf8_warn1.t => utf8_warn01.t} |  0
 ext/XS-APItest/t/{utf8_warn2.t => utf8_warn02.t} |  0
 ext/XS-APItest/t/{utf8_warn3.t => utf8_warn03.t} |  0
 ext/XS-APItest/t/{utf8_warn4.t => utf8_warn04.t} |  0
 ext/XS-APItest/t/{utf8_warn5.t => utf8_warn05.t} |  0
 ext/XS-APItest/t/{utf8_warn6.t => utf8_warn06.t} |  0
 ext/XS-APItest/t/{utf8_warn7.t => utf8_warn07.t} |  0
 ext/XS-APItest/t/{utf8_warn8.t => utf8_warn08.t} |  0
 ext/XS-APItest/t/{utf8_warn9.t => utf8_warn09.t} |  0
 lib/unicore/mktables                             | 21 +++++++++++--
 perl.h                                           |  6 +++-
 pod/perluniintro.pod                             | 10 ++++--
 regcharclass.h                                   |  2 +-
 regcomp.c                                        |  3 +-
 utf8.c                                           | 21 ++++++++-----
 30 files changed, 71 insertions(+), 40 deletions(-)
 rename ext/XS-APItest/t/{handy0.t => handy00.t} (100%)
 rename ext/XS-APItest/t/{handy1.t => handy01.t} (100%)
 rename ext/XS-APItest/t/{handy2.t => handy02.t} (100%)
 rename ext/XS-APItest/t/{handy3.t => handy03.t} (100%)
 rename ext/XS-APItest/t/{handy4.t => handy04.t} (100%)
 rename ext/XS-APItest/t/{handy5.t => handy05.t} (100%)
 rename ext/XS-APItest/t/{handy6.t => handy06.t} (100%)
 rename ext/XS-APItest/t/{handy7.t => handy07.t} (100%)
 rename ext/XS-APItest/t/{handy8.t => handy08.t} (100%)
 rename ext/XS-APItest/t/{handy9.t => handy09.t} (100%)
 rename ext/XS-APItest/t/{utf8_warn0.t => utf8_warn00.t} (100%)
 rename ext/XS-APItest/t/{utf8_warn1.t => utf8_warn01.t} (100%)
 rename ext/XS-APItest/t/{utf8_warn2.t => utf8_warn02.t} (100%)
 rename ext/XS-APItest/t/{utf8_warn3.t => utf8_warn03.t} (100%)
 rename ext/XS-APItest/t/{utf8_warn4.t => utf8_warn04.t} (100%)
 rename ext/XS-APItest/t/{utf8_warn5.t => utf8_warn05.t} (100%)
 rename ext/XS-APItest/t/{utf8_warn6.t => utf8_warn06.t} (100%)
 rename ext/XS-APItest/t/{utf8_warn7.t => utf8_warn07.t} (100%)
 rename ext/XS-APItest/t/{utf8_warn8.t => utf8_warn08.t} (100%)
 rename ext/XS-APItest/t/{utf8_warn9.t => utf8_warn09.t} (100%)

diff --git a/MANIFEST b/MANIFEST
index a6463a4a9f..e6d1dea55f 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -4232,16 +4232,16 @@ ext/XS-APItest/t/gv_fetchmeth.t         XS::APItest: 
tests for gv_fetchmeth() and varia
 ext/XS-APItest/t/gv_fetchmeth_autoload.t       XS::APItest: tests for 
gv_fetchmeth_autoload() and variants
 ext/XS-APItest/t/gv_fetchmethod_flags.t        XS::APItest: tests for 
gv_fetchmethod_flags() and variants
 ext/XS-APItest/t/gv_init.t     XS::APItest: tests for gv_init and variants
-ext/XS-APItest/t/handy0.t      XS::APItest: tests for handy.h
-ext/XS-APItest/t/handy1.t      XS::APItest: tests for handy.h
-ext/XS-APItest/t/handy2.t      XS::APItest: tests for handy.h
-ext/XS-APItest/t/handy3.t      XS::APItest: tests for handy.h
-ext/XS-APItest/t/handy4.t      XS::APItest: tests for handy.h
-ext/XS-APItest/t/handy5.t      XS::APItest: tests for handy.h
-ext/XS-APItest/t/handy6.t      XS::APItest: tests for handy.h
-ext/XS-APItest/t/handy7.t      XS::APItest: tests for handy.h
-ext/XS-APItest/t/handy8.t      XS::APItest: tests for handy.h
-ext/XS-APItest/t/handy9.t      XS::APItest: tests for handy.h
+ext/XS-APItest/t/handy00.t     XS::APItest: tests for handy.h
+ext/XS-APItest/t/handy01.t     XS::APItest: tests for handy.h
+ext/XS-APItest/t/handy02.t     XS::APItest: tests for handy.h
+ext/XS-APItest/t/handy03.t     XS::APItest: tests for handy.h
+ext/XS-APItest/t/handy04.t     XS::APItest: tests for handy.h
+ext/XS-APItest/t/handy05.t     XS::APItest: tests for handy.h
+ext/XS-APItest/t/handy06.t     XS::APItest: tests for handy.h
+ext/XS-APItest/t/handy07.t     XS::APItest: tests for handy.h
+ext/XS-APItest/t/handy08.t     XS::APItest: tests for handy.h
+ext/XS-APItest/t/handy09.t     XS::APItest: tests for handy.h
 ext/XS-APItest/t/handy_base.pl XS::APItest: tests for handy.h
 ext/XS-APItest/t/hash.t                XS::APItest: tests for hash related APIs
 ext/XS-APItest/t/join_with_space.t     test op_convert_list
@@ -4305,16 +4305,16 @@ ext/XS-APItest/t/utf16_to_utf8.t        Test behaviour 
of utf16_to_utf8{,reversed}
 ext/XS-APItest/t/utf8.t                Tests for code in utf8.c
 ext/XS-APItest/t/utf8_malformed.t      Tests for code in utf8.c
 ext/XS-APItest/t/utf8_setup.pl Tests for code in utf8.c
-ext/XS-APItest/t/utf8_warn0.t  Tests for code in utf8.c
-ext/XS-APItest/t/utf8_warn1.t  Tests for code in utf8.c
-ext/XS-APItest/t/utf8_warn2.t  Tests for code in utf8.c
-ext/XS-APItest/t/utf8_warn3.t  Tests for code in utf8.c
-ext/XS-APItest/t/utf8_warn4.t  Tests for code in utf8.c
-ext/XS-APItest/t/utf8_warn5.t  Tests for code in utf8.c
-ext/XS-APItest/t/utf8_warn6.t  Tests for code in utf8.c
-ext/XS-APItest/t/utf8_warn7.t  Tests for code in utf8.c
-ext/XS-APItest/t/utf8_warn8.t  Tests for code in utf8.c
-ext/XS-APItest/t/utf8_warn9.t  Tests for code in utf8.c
+ext/XS-APItest/t/utf8_warn00.t Tests for code in utf8.c
+ext/XS-APItest/t/utf8_warn01.t Tests for code in utf8.c
+ext/XS-APItest/t/utf8_warn02.t Tests for code in utf8.c
+ext/XS-APItest/t/utf8_warn03.t Tests for code in utf8.c
+ext/XS-APItest/t/utf8_warn04.t Tests for code in utf8.c
+ext/XS-APItest/t/utf8_warn05.t Tests for code in utf8.c
+ext/XS-APItest/t/utf8_warn06.t Tests for code in utf8.c
+ext/XS-APItest/t/utf8_warn07.t Tests for code in utf8.c
+ext/XS-APItest/t/utf8_warn08.t Tests for code in utf8.c
+ext/XS-APItest/t/utf8_warn09.t Tests for code in utf8.c
 ext/XS-APItest/t/utf8_warn_base.pl     Tests for code in utf8.c
 ext/XS-APItest/t/weaken.t      XS::APItest: tests for sv_rvweaken() and 
sv_get_backrefs()
 ext/XS-APItest/t/whichsig.t    XS::APItest: tests for whichsig() and variants
diff --git a/charclass_invlists.h b/charclass_invlists.h
index 7b5b7eae1c..4b3d6cc363 100644
--- a/charclass_invlists.h
+++ b/charclass_invlists.h
@@ -95407,7 +95407,7 @@ static const U8 WB_table[24][24] = {
  * 37f6186253da9824bdb27f4ad867bfe8c25d4dc6bdb2f05585e40a034675a348 
lib/unicore/extracted/DLineBreak.txt
  * ef24061b5a5dc93d7e90c2e34530ec757180ee75d872cba65ffc946e52624ae8 
lib/unicore/extracted/DNumType.txt
  * a197371fec9a1b517058b440841f60f9378d81682084eef8db22a88cb2f96e90 
lib/unicore/extracted/DNumValues.txt
- * 79a7216aceb1d291f2857085545fdda289518bc540a09bc0a15cde105d76028d 
lib/unicore/mktables
+ * 717985d5fe0830f5b72ca21287a7d9f15ba6a383c29fbd3c47231d5f63edb68b 
lib/unicore/mktables
  * cdecb300baad839a6f62791229f551a4fa33f3cbdca08e378dc976466354e778 
lib/unicore/version
  * 913d2f93f3cb6cdf1664db888bf840bc4eb074eef824e082fceda24a9445e60c 
regen/charset_translations.pl
  * 9534d0cc3914fa1f5d574332c3199605c3d14f8691a0729d68d8498ac2b36280 
regen/mk_invlists.pl
diff --git a/ext/GDBM_File/GDBM_File.pm b/ext/GDBM_File/GDBM_File.pm
index a06fa13884..fca06429cd 100644
--- a/ext/GDBM_File/GDBM_File.pm
+++ b/ext/GDBM_File/GDBM_File.pm
@@ -25,7 +25,7 @@ interface.
 gdbm is available from any GNU archive.  The master site is
 C<ftp.gnu.org>, but you are strongly urged to use one of the many
 mirrors.  You can obtain a list of mirror sites from
-http://www.gnu.org/order/ftp.html.
+L<http://www.gnu.org/order/ftp.html>.
 
 =head1 BUGS
 
@@ -69,7 +69,7 @@ require XSLoader;
 );
 
 # This module isn't dual life, so no need for dev version numbers.
-$VERSION = '1.15';
+$VERSION = '1.16';
 
 XSLoader::load();
 
diff --git a/ext/XS-APItest/t/handy0.t b/ext/XS-APItest/t/handy00.t
similarity index 100%
rename from ext/XS-APItest/t/handy0.t
rename to ext/XS-APItest/t/handy00.t
diff --git a/ext/XS-APItest/t/handy1.t b/ext/XS-APItest/t/handy01.t
similarity index 100%
rename from ext/XS-APItest/t/handy1.t
rename to ext/XS-APItest/t/handy01.t
diff --git a/ext/XS-APItest/t/handy2.t b/ext/XS-APItest/t/handy02.t
similarity index 100%
rename from ext/XS-APItest/t/handy2.t
rename to ext/XS-APItest/t/handy02.t
diff --git a/ext/XS-APItest/t/handy3.t b/ext/XS-APItest/t/handy03.t
similarity index 100%
rename from ext/XS-APItest/t/handy3.t
rename to ext/XS-APItest/t/handy03.t
diff --git a/ext/XS-APItest/t/handy4.t b/ext/XS-APItest/t/handy04.t
similarity index 100%
rename from ext/XS-APItest/t/handy4.t
rename to ext/XS-APItest/t/handy04.t
diff --git a/ext/XS-APItest/t/handy5.t b/ext/XS-APItest/t/handy05.t
similarity index 100%
rename from ext/XS-APItest/t/handy5.t
rename to ext/XS-APItest/t/handy05.t
diff --git a/ext/XS-APItest/t/handy6.t b/ext/XS-APItest/t/handy06.t
similarity index 100%
rename from ext/XS-APItest/t/handy6.t
rename to ext/XS-APItest/t/handy06.t
diff --git a/ext/XS-APItest/t/handy7.t b/ext/XS-APItest/t/handy07.t
similarity index 100%
rename from ext/XS-APItest/t/handy7.t
rename to ext/XS-APItest/t/handy07.t
diff --git a/ext/XS-APItest/t/handy8.t b/ext/XS-APItest/t/handy08.t
similarity index 100%
rename from ext/XS-APItest/t/handy8.t
rename to ext/XS-APItest/t/handy08.t
diff --git a/ext/XS-APItest/t/handy9.t b/ext/XS-APItest/t/handy09.t
similarity index 100%
rename from ext/XS-APItest/t/handy9.t
rename to ext/XS-APItest/t/handy09.t
diff --git a/ext/XS-APItest/t/utf8_setup.pl b/ext/XS-APItest/t/utf8_setup.pl
index 094390016b..73275753c0 100644
--- a/ext/XS-APItest/t/utf8_setup.pl
+++ b/ext/XS-APItest/t/utf8_setup.pl
@@ -78,6 +78,8 @@ $::UTF8_DISALLOW_ABOVE_31_BIT  = 0x4000;
 $::UTF8_GOT_ABOVE_31_BIT       = $UTF8_DISALLOW_ABOVE_31_BIT;
 $::UTF8_WARN_ABOVE_31_BIT      = 0x8000;
 $::UTF8_CHECK_ONLY             = 0x10000;
+$::UTF8_NO_CONFIDENCE_IN_CURLEN_ = 0x20000;
+
 $::UTF8_DISALLOW_ILLEGAL_C9_INTERCHANGE
                              = $UTF8_DISALLOW_SUPER|$UTF8_DISALLOW_SURROGATE;
 $::UTF8_DISALLOW_ILLEGAL_INTERCHANGE
diff --git a/ext/XS-APItest/t/utf8_warn0.t b/ext/XS-APItest/t/utf8_warn00.t
similarity index 100%
rename from ext/XS-APItest/t/utf8_warn0.t
rename to ext/XS-APItest/t/utf8_warn00.t
diff --git a/ext/XS-APItest/t/utf8_warn1.t b/ext/XS-APItest/t/utf8_warn01.t
similarity index 100%
rename from ext/XS-APItest/t/utf8_warn1.t
rename to ext/XS-APItest/t/utf8_warn01.t
diff --git a/ext/XS-APItest/t/utf8_warn2.t b/ext/XS-APItest/t/utf8_warn02.t
similarity index 100%
rename from ext/XS-APItest/t/utf8_warn2.t
rename to ext/XS-APItest/t/utf8_warn02.t
diff --git a/ext/XS-APItest/t/utf8_warn3.t b/ext/XS-APItest/t/utf8_warn03.t
similarity index 100%
rename from ext/XS-APItest/t/utf8_warn3.t
rename to ext/XS-APItest/t/utf8_warn03.t
diff --git a/ext/XS-APItest/t/utf8_warn4.t b/ext/XS-APItest/t/utf8_warn04.t
similarity index 100%
rename from ext/XS-APItest/t/utf8_warn4.t
rename to ext/XS-APItest/t/utf8_warn04.t
diff --git a/ext/XS-APItest/t/utf8_warn5.t b/ext/XS-APItest/t/utf8_warn05.t
similarity index 100%
rename from ext/XS-APItest/t/utf8_warn5.t
rename to ext/XS-APItest/t/utf8_warn05.t
diff --git a/ext/XS-APItest/t/utf8_warn6.t b/ext/XS-APItest/t/utf8_warn06.t
similarity index 100%
rename from ext/XS-APItest/t/utf8_warn6.t
rename to ext/XS-APItest/t/utf8_warn06.t
diff --git a/ext/XS-APItest/t/utf8_warn7.t b/ext/XS-APItest/t/utf8_warn07.t
similarity index 100%
rename from ext/XS-APItest/t/utf8_warn7.t
rename to ext/XS-APItest/t/utf8_warn07.t
diff --git a/ext/XS-APItest/t/utf8_warn8.t b/ext/XS-APItest/t/utf8_warn08.t
similarity index 100%
rename from ext/XS-APItest/t/utf8_warn8.t
rename to ext/XS-APItest/t/utf8_warn08.t
diff --git a/ext/XS-APItest/t/utf8_warn9.t b/ext/XS-APItest/t/utf8_warn09.t
similarity index 100%
rename from ext/XS-APItest/t/utf8_warn9.t
rename to ext/XS-APItest/t/utf8_warn09.t
diff --git a/lib/unicore/mktables b/lib/unicore/mktables
index e3336f50e0..d8ccd2b2d7 100644
--- a/lib/unicore/mktables
+++ b/lib/unicore/mktables
@@ -660,7 +660,7 @@ sub stack_trace() {
 # common to both releases, and you can see the changes caused just by the
 # underlying release semantic changes.  For versions earlier than 3.2, you
 # must copy a version of DAge.txt into the directory.
-my $string_compare_versions = DEBUG && 0; #  e.g., "2.1";
+my $string_compare_versions = DEBUG && ""; #  e.g., "2.1";
 my $compare_versions = DEBUG
                        && $string_compare_versions
                        && pack "C*", split /\./, $string_compare_versions;
@@ -1529,7 +1529,7 @@ sub populate_char_info ($) {
 
     $viacode[$i] = $perl_charname->value_of($i) || "";
     $age[$i] = (defined $age)
-               ? (($age->value_of($i) =~ / ^ \d \. \d $ /x)
+               ? (($age->value_of($i) =~ / ^ \d+ \. \d+ $ /x)
                   ? $age->value_of($i)
                   : "")
                : "";
@@ -5324,6 +5324,14 @@ use parent '-norequire', '_Range_List_Base';
         return $self->_add_delete('+', @_);
     }
 
+    sub replace_map {
+        # Replace a range
+
+        my $self = shift;
+
+        return $self->_add_delete('+', @_, Replace => $UNCONDITIONALLY);
+    }
+
     sub add_duplicate {
         # Adds entry to a range list which can duplicate an existing entry
 
@@ -7733,6 +7741,7 @@ END
     # Accessors for the underlying list that should fail if locked.
     for my $sub (qw(
                     add_duplicate
+                    replace_map
                 ))
     {
         no strict "refs";
@@ -9367,6 +9376,7 @@ sub trace { return main::trace(@_) if main::DEBUG && 
$to_trace }
                     range_count
                     ranges
                     range_size_1
+                    replace_map
                     reset_each_range
                     set_comment
                     set_default_map
@@ -13898,8 +13908,10 @@ sub handle_compare_versions () {
     # since the first compare version.
     my $delta = Range_List->new();
     foreach my $table ($age->tables) {
+        use version;
         next if $table == $age->table('Unassigned');
-        next if $table->name le $string_compare_versions;
+        next if version->parse($table->name)
+             le version->parse($string_compare_versions);
         $delta += $table;
     }
     if ($delta->is_empty) {
@@ -13922,6 +13934,9 @@ sub handle_compare_versions () {
         next if     $this_block == $no_block
                 ||  ! ($this_block & $Assigned)->is_empty;
         $this_block->set_fate($SUPPRESSED, $after_first_version);
+        foreach my $range ($this_block->ranges) {
+            $block->replace_map($range->start, $range->end, 'No_Block')
+        }
         $no_block += $this_block;
     }
 
diff --git a/perl.h b/perl.h
index 70e12bd722..979e213459 100644
--- a/perl.h
+++ b/perl.h
@@ -3756,7 +3756,11 @@ EXTERN_C int perl_tsa_mutex_unlock(perl_mutex* mutex)
 #  define ASSUME(x) assert(x)
 #endif
 
-#define NOT_REACHED ASSUME(0)
+#if defined(__sun)      /* ASSUME() generates warnings on Solaris */
+#  define NOT_REACHED
+#else
+#  define NOT_REACHED ASSUME(0)
+#endif
 
 /* Some unistd.h's give a prototype for pause() even though
    HAS_PAUSE ends up undefined.  This causes the #define
diff --git a/pod/perluniintro.pod b/pod/perluniintro.pod
index d35de34581..3e2fba516f 100644
--- a/pod/perluniintro.pod
+++ b/pod/perluniintro.pod
@@ -843,9 +843,13 @@ L<http://www.cl.cam.ac.uk/~mgk25/unicode.html>
 
 How Does Unicode Work With Traditional Locales?
 
-If your locale is a UTF-8 locale, starting in Perl v5.20, Perl works
-well for all categories except C<LC_COLLATE> dealing with sorting and
-the C<cmp> operator.
+If your locale is a UTF-8 locale, starting in Perl v5.26, Perl works
+well for all categories; before this, starting with Perl v5.20, it works
+for all categories but C<LC_COLLATE>, which deals with
+sorting and the C<cmp> operator.  But note that the standard
+C<L<Unicode::Collate>> and C<L<Unicode::Collate::Locale>> modules offer
+much more powerful solutions to collation issues, and work on earlier
+releases.
 
 For other locales, starting in Perl 5.16, you can specify
 
diff --git a/regcharclass.h b/regcharclass.h
index 273176af22..ff00207ec0 100644
--- a/regcharclass.h
+++ b/regcharclass.h
@@ -1897,7 +1897,7 @@
  * 37f6186253da9824bdb27f4ad867bfe8c25d4dc6bdb2f05585e40a034675a348 
lib/unicore/extracted/DLineBreak.txt
  * ef24061b5a5dc93d7e90c2e34530ec757180ee75d872cba65ffc946e52624ae8 
lib/unicore/extracted/DNumType.txt
  * a197371fec9a1b517058b440841f60f9378d81682084eef8db22a88cb2f96e90 
lib/unicore/extracted/DNumValues.txt
- * 79a7216aceb1d291f2857085545fdda289518bc540a09bc0a15cde105d76028d 
lib/unicore/mktables
+ * 717985d5fe0830f5b72ca21287a7d9f15ba6a383c29fbd3c47231d5f63edb68b 
lib/unicore/mktables
  * cdecb300baad839a6f62791229f551a4fa33f3cbdca08e378dc976466354e778 
lib/unicore/version
  * 913d2f93f3cb6cdf1664db888bf840bc4eb074eef824e082fceda24a9445e60c 
regen/charset_translations.pl
  * c468aea5062ef84422219d74e83b6f3216f2823544b445f53ee1af71deeb2044 
regen/regcharclass.pl
diff --git a/regcomp.c b/regcomp.c
index 54d641d82c..f9d56c1813 100644
--- a/regcomp.c
+++ b/regcomp.c
@@ -119,8 +119,7 @@ typedef struct scan_frame {
 
 /* Certain characters are output as a sequence with the first being a
  * backslash. */
-#define isBACKSLASHED_PUNCT(c)                                              \
-                    ((c) == '-' || (c) == ']' || (c) == '\\' || (c) == '^')
+#define isBACKSLASHED_PUNCT(c)  strchr("-]\\^", c)
 
 
 struct RExC_state_t {
diff --git a/utf8.c b/utf8.c
index 4949bf6584..abbc6aea7a 100644
--- a/utf8.c
+++ b/utf8.c
@@ -1962,13 +1962,20 @@ Perl_utf8_to_bytes(pTHX_ U8 *s, STRLEN *len)
 /*
 =for apidoc bytes_from_utf8
 
-Converts a string C<s> of length C<len> from UTF-8 into native byte encoding.
-Unlike L</utf8_to_bytes> but like L</bytes_to_utf8>, returns a pointer to
-the newly-created string, and updates C<len> to contain the new
-length.  Returns the original string if no conversion occurs, C<len>
-is unchanged.  Do nothing if C<is_utf8> points to 0.  Sets C<is_utf8> to
-0 if C<s> is converted or consisted entirely of characters that are invariant
-in UTF-8 (i.e., US-ASCII on non-EBCDIC machines).
+Converts a potentially UTF-8 encoded string C<s> of length C<len> into native
+byte encoding.  On input, the boolean C<*is_utf8> gives whether or not C<s> is
+actually encoded in UTF-8.
+
+Unlike L</utf8_to_bytes> but like L</bytes_to_utf8>, this is non-destructive of
+the input string.
+
+Do nothing if C<*is_utf8> is 0, or if there are code points in the string
+not expressible in native byte encoding.  In these cases, C<*is_utf8> and
+C<*len> are unchanged, and the return value is the original C<s>.
+
+Otherwise, C<*is_utf8> is set to 0, and the return value is a pointer to a
+newly created string containing a downgraded copy of C<s>, and whose length is
+returned in C<*len>, updated.
 
 =cut
 */

--
Perl5 Master Repository

Reply via email to