{
    "mode": "man",
    "parameter": "perl5260delta",
    "section": "1",
    "url": "https://www.chedong.com/phpMan.php/man/perl5260delta/1/json",
    "generated": "2026-08-21T20:13:48Z",
    "sections": {
        "NAME": {
            "content": "perl5260delta - what is new for perl v5.26.0\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "This document describes the differences between the 5.24.0 release and the 5.26.0 release.\n",
            "subsections": []
        },
        "Notice": {
            "content": "This release includes three updates with widespread effects:\n\n•   \".\" no longer in @INC\n\nFor security reasons, the current directory (\".\") is no longer included by default at the\nend  of  the  module  search  path  (@INC). This may have widespread implications for the\nbuilding, testing and installing of modules, and for the execution of scripts.   See  the\nsection \"Removal of the current directory (\".\") from @INC\" for the full details.\n\n•   \"do\" may now warn\n\n\"do\"  now  gives  a  deprecation warning when it fails to load a file which it would have\nloaded had \".\" been in @INC.\n\n•   In regular expression patterns, a literal left brace \"{\" should be escaped\n\nSee \"Unescaped literal \"{\" characters  in  regular  expression  patterns  are  no  longer\npermissible\".\n",
            "subsections": []
        },
        "Core Enhancements": {
            "content": "",
            "subsections": [
                {
                    "name": "Lexical subroutines are no longer experimental",
                    "content": "Using  the  \"lexicalsubs\"  feature  introduced in v5.18 no longer emits a warning.  Existing\ncode that  disables  the  \"experimental::lexicalsubs\"  warning  category  that  the  feature\npreviously  used  will  continue to work.  The \"lexicalsubs\" feature has no effect; all Perl\ncode can use lexical subroutines, regardless of what feature declarations are in scope.\n"
                },
                {
                    "name": "Indented Here-documents",
                    "content": "This adds a new modifier \"~\" to here-docs that tells the  parser  that  it  should  look  for\n\"/^\\s*$DELIM\\n/\" as the closing delimiter.\n\nThese syntaxes are all supported:\n\n<<~EOF;\n<<~\\EOF;\n<<~'EOF';\n<<~\"EOF\";\n<<~`EOF`;\n<<~ 'EOF';\n<<~ \"EOF\";\n<<~ `EOF`;\n\nThe \"~\" modifier will strip, from each line in the here-doc, the same whitespace that appears\nbefore the delimiter.\n\nNewlines  will  be copied as-is, and lines that don't include the proper beginning whitespace\nwill cause perl to croak.\n\nFor example:\n\nif (1) {\nprint <<~EOF;\nHello there\nEOF\n}\n\nprints \"Hello there\\n\" with no leading whitespace.\n"
                },
                {
                    "name": "New regular expression modifier \"/xx\"",
                    "content": "Specifying two \"x\" characters to modify a regular expression pattern does everything  that  a\nsingle one does, but additionally TAB and SPACE characters within a bracketed character class\nare  generally ignored and can be added to improve readability, like \"/[ ^ A-Z d-f p-x ]/xx\".\nDetails are at \"/x and /xx\" in perlre.\n"
                },
                {
                    "name": "\"@{^CAPTURE}\", \"%{^CAPTURE}\", and \"%{^CAPTURE_ALL}\"",
                    "content": "\"@{^CAPTURE}\" exposes the capture  buffers  of  the  last  match  as  an  array.   So  $1  is\n\"${^CAPTURE}[0]\".     This    is    a    more    efficient    equivalent    to    code   like\n\"substr($matchedstring,$-[0],$+[0]-$-[0])\",  and  you  don't  have  to  keep  track  of  the\n$matchedstring  either.   This variable has no single character equivalent.  Note that, like\nthe other regex magic variables, the contents of this variable is dynamic;  if  you  wish  to\nstore it beyond the lifetime of the match you must copy it to another array.\n\n\"%{^CAPTURE}\"  is  equivalent  to  \"%+\"  (i.e., named captures).  Other than being more self-\ndocumenting there is no difference between the two forms.\n\n\"%{^CAPTUREALL}\" is equivalent to \"%-\" (i.e., all named captures).  Other  than  being  more\nself-documenting there is no difference between the two forms.\n"
                },
                {
                    "name": "Declaring a reference to a variable",
                    "content": "As  an  experimental  feature,  Perl  now allows the referencing operator to come after my(),\nstate(), our(), or local().  This syntax must be enabled with \"use feature  'declaredrefs'\".\nIt is experimental, and will warn by default unless \"no warnings 'experimental::refaliasing'\"\nis in effect.  It is intended mainly for use in assignments to references.  For example:\n\nuse experimental 'refaliasing', 'declaredrefs';\nmy \\$a = \\$b;\n\nSee \"Assigning to References\" in perlref for more details.\n"
                },
                {
                    "name": "Unicode 9.0 is now supported",
                    "content": "A  list  of  changes is at <http://www.unicode.org/versions/Unicode9.0.0/>.  Modules that are\nshipped with core Perl but not maintained by p5p do  not  necessarily  support  Unicode  9.0.\nUnicode::Normalize does work on 9.0.\n"
                },
                {
                    "name": "Use of \"\\p{_script_}\" uses the improved Script_Extensions property",
                    "content": "Unicode  6.0  introduced  an  improved  form  of  the  Script  (\"sc\") property, and called it\nScriptExtensions (\"scx\").  Perl now uses this improved version when a property is  specified\nas  just  \"\\p{script}\".   This  should  make  programs  more  accurate  when determining if a\ncharacter is used in a given script, but there is a slight chance of  breakage  for  programs\nthat  very  specifically  needed  the  old  behavior.   The  meaning  of compound forms, like\n\"\\p{sc=script}\" are unchanged.  See \"Scripts\" in perlunicode.\n"
                },
                {
                    "name": "Perl can now do default collation in UTF-8 locales on platforms that support it",
                    "content": "Some platforms natively do a reasonable job of collating and sorting in UTF-8 locales.   Perl\nnow  works  with  those.   For  portability  and  full  control,  Unicode::Collate  is  still\nrecommended, but now you may not need to do anything  special  to  get  good-enough  results,\ndepending  on  your application.  See \"Category \"LCCOLLATE\": Collation: Text Comparisons and\nSorting\" in perllocale.\n"
                },
                {
                    "name": "Better locale collation of strings containing embedded \"NUL\" characters",
                    "content": "In locales that have multi-level character weights, \"NUL\"s are  now  ignored  at  the  higher\npriority  ones.   There  are  still  some gotchas in some strings, though.  See \"Collation of\nstrings containing embedded \"NUL\" characters\" in perllocale.\n"
                },
                {
                    "name": "\"CORE\" subroutines for hash and array functions callable via reference",
                    "content": "The hash and array functions in the  \"CORE\"  namespace  (\"keys\",  \"each\",  \"values\",  \"push\",\n\"pop\",   \"shift\",   \"unshift\"   and  \"splice\")  can  now  be  called  with  ampersand  syntax\n(\"&CORE::keys(\\%hash\") and via reference (\"my $k = \\&CORE::keys; $k->(\\%hash)\").   Previously\nthey could only be used when inlined.\n"
                },
                {
                    "name": "New Hash Function For 64-bit Builds",
                    "content": "We  have  switched to a hybrid hash function to better balance performance for short and long\nkeys.\n\nFor short keys, 16 bytes and under, we use an optimised variant of One At A  Time  Hard,  and\nfor  longer  keys  we  use  Siphash  1-3.   For  very  long keys this is a big improvement in\nperformance.  For shorter keys there is a modest improvement.\n"
                }
            ]
        },
        "Security": {
            "content": "",
            "subsections": [
                {
                    "name": "Removal of the current directory (\".\") from @INC",
                    "content": "The perl binary includes a default set of paths in @INC.  Historically it has  also  included\nthe  current  directory  (\".\")  as the final entry, unless run with taint mode enabled (\"perl\n-T\").  While convenient, this has security implications: for example, where a script attempts\nto load an optional module when its current directory is untrusted (such as /tmp),  it  could\nload and execute code from under that directory.\n\nStarting  with  v5.26,  \".\"  is always removed by default, not just under tainting.  This has\nmajor implications for installing modules and executing scripts.\n\nThe following new features have been added to help ameliorate these issues.\n\n•   Configure -Udefaultincexcludesdot\n\nThere is a new Configure option, \"defaultincexcludesdot\" (enabled  by  default)  which\nbuilds  a  perl  executable without \".\"; unsetting this option using \"-U\" reverts perl to\nthe old behaviour.  This may fix your path issues but will reintroduce all  the  security\nconcerns,  so don't build a perl executable like this unless you're really confident that\nsuch issues are not a concern in your environment.\n\n•   \"PERLUSEUNSAFEINC\"\n\nThere is a new environment variable recognised by the perl interpreter.  If this variable\nhas the value 1 when the perl interpreter starts  up,  then  \".\"  will  be  automatically\nappended to @INC (except under tainting).\n\nThis  allows you restore the old perl interpreter behaviour on a case-by-case basis.  But\nnote that this is intended to be a temporary crutch, and  this  feature  will  likely  be\nremoved  in  some  future  perl  version.   It is currently set by the \"cpan\" utility and\n\"Test::Harness\" to ease installation of CPAN modules  which  have  not  been  updated  to\nhandle  the  lack  of dot.  Once again, don't use this unless you are sure that this will\nnot reintroduce any security concerns.\n\n•   A new deprecation warning issued by \"do\".\n\nWhile it is well-known that \"use\" and \"require\" use @INC to search for the file to  load,\nmany  people  don't realise that \"do \"file\"\" also searches @INC if the file is a relative\npath.  With the removal of \".\", a simple \"do \"file.pl\"\" will fail to read in and  execute\n\"file.pl\"  from  the current directory.  Since this is commonly expected behaviour, a new\ndeprecation warning is now issued whenever \"do\" fails to load a file which  it  otherwise\nwould have found if a dot had been in @INC.\n\nHere  are some things script and module authors may need to do to make their software work in\nthe new regime.\n\n•   Script authors\n\nIf the issue is within your own code (rather than within included modules), then you have\ntwo main options.  Firstly, if you are confident that your script will only be run within\na trusted directory (under which you expect to find trusted files and modules), then  add\n\".\" back into the path; e.g.:\n\nBEGIN {\nmy $dir = \"/some/trusted/directory\";\nchdir $dir or die \"Can't chdir to $dir: $!\\n\";\n# safe now\npush @INC, '.';\n}\n\nuse \"Foo::Bar\"; # may load /some/trusted/directory/Foo/Bar.pm\ndo \"config.pl\"; # may load /some/trusted/directory/config.pl\n\nOn the other hand, if your script is intended to be run from within untrusted directories\n(such  as  /tmp),  then your script suddenly failing to load files may be indicative of a\nsecurity issue.  You most likely want to replace any relative paths with full paths;  for\nexample,\n\ndo \"fooconfig.pl\"\n\nmight become\n\ndo \"$ENV{HOME}/fooconfig.pl\"\n\nIf  you  are absolutely certain that you want your script to load and execute a file from\nthe current directory, then use a \"./\" prefix; for example:\n\ndo \"./fooconfig.pl\"\n\n•   Installing and using CPAN modules\n\nIf you install a CPAN module using an automatic tool like \"cpan\",  then  this  tool  will\nitself  set the \"PERLUSEUNSAFEINC\" environment variable while building and testing the\nmodule, which may be sufficient to install a distribution which hasn't been updated to be\ndot-aware.  If you want to install such a module manually, then you'll  need  to  replace\nthe traditional invocation:\n\nperl Makefile.PL && make && make test && make install\n\nwith something like\n\n(export PERLUSEUNSAFEINC=1; \\\nperl Makefile.PL && make && make test && make install)\n\nNote  that  this  only  helps build and install an unfixed module.  It's possible for the\ntests to pass (since they were run under \"PERLUSEUNSAFEINC=1\"),  but  for  the  module\nitself  to  fail  to  perform  correctly  in  production.   In this case, you may have to\ntemporarily modify your script until a fixed version of  the  module  is  released.   For\nexample:\n\nuse Foo::Bar;\n{\nlocal @INC = (@INC, '.');\n# assuming readconfig() needs '.' in @INC\n$config = Foo::Bar->readconfig();\n}\n\nThis is only rarely expected to be necessary.  Again, if doing this, assess the resultant\nrisks first.\n\n•   Module Authors\n\nIf  you  maintain  a  CPAN  distribution,  it  may  need  updating  to  run  in a dotless\nenvironment.   Although  \"cpan\"  and  other   such   tools   will   currently   set   the\n\"PERLUSEUNSAFEINC\"  during module build, this is a temporary workaround for the set of\nmodules which rely on \".\" being in @INC for installation and testing, and this  may  mask\ndeeper  issues.   It  could result in a module which passes tests and installs, but which\nfails at run time.\n\nDuring build, test, and install, it will normally be the case  that  any  perl  processes\nwill  be  executing directly within the root directory of the untarred distribution, or a\nknown subdirectory of that, such as t/.  It may well be that Makefile.PL or t/foo.t  will\nattempt  to  include  local  modules  and configuration files using their direct relative\nfilenames, which will now fail.\n\nHowever,  as  described  above,  automatic  tools  like  cpan  will  (for  now)  set  the\n\"PERLUSEUNSAFEINC\" environment variable, which introduces dot during a build.\n\nThis  makes it likely that your existing build and test code will work, but this may mask\nissues with your code which only manifest when used after install.  It is prudent to  try\nand run your build process with that variable explicitly disabled:\n\n(export PERLUSEUNSAFEINC=0; \\\nperl Makefile.PL && make && make test && make install)\n\nThis  is  more likely to show up any potential problems with your module's build process,\nor even with the module itself.  Fixing such issues will ensure both that your module can\nagain be installed manually, and that it will still build once the  \"PERLUSEUNSAFEINC\"\ncrutch goes away.\n\nWhen  fixing issues in tests due to the removal of dot from @INC, reinsertion of dot into\n@INC should be performed with caution, for this too may  suppress  real  errors  in  your\nruntime  code.   You  are  encouraged  wherever  possible  to  apply  the  aforementioned\napproaches with explicit absolute/relative paths, or to relocate your needed files into a\nsubdirectory and insert that subdirectory into @INC instead.\n\nIf your runtime code has problems under the dotless @INC, then the comments above on  how\nto  fix  for  script  authors will mostly apply here too.  Bear in mind though that it is\nconsidered bad form for a module to globally add a dot to @INC, since it introduces  both\na  security  risk  and  hides  issues of accidentally requiring dot in @INC, as explained\nabove.\n"
                },
                {
                    "name": "Escaped colons and relative paths in PATH",
                    "content": "On Unix systems, Perl treats any relative paths in the \"PATH\" environment variable as tainted\nwhen starting a new process.  Previously, it was allowing  a  backslash  to  escape  a  colon\n(unlike  the  OS), consequently allowing relative paths to be considered safe if the PATH was\nset to something like \"/\\:.\".  The check has been fixed to  treat  \".\"  as  tainted  in  that\nexample.\n"
                },
                {
                    "name": "New \"-Di\" switch is now required for PerlIO debugging output",
                    "content": "This  is  used for debugging of code within PerlIO to avoid recursive calls.  Previously this\noutput would be sent to the file specified by the \"PERLIODEBUG\" environment variable if perl\nwasn't running setuid and the \"-T\" or \"-t\" switches hadn't been parsed yet.\n\nIf perl performed output at a point where it hadn't yet parsed its switches this could result\nin perl creating or overwriting the file named by \"PERLIODEBUG\" even when  the  \"-T\"  switch\nhad been supplied.\n\nPerl  now  requires  the  \"-Di\"  switch to be present before it will produce PerlIO debugging\noutput.  By default this is written to \"stderr\", but can optionally be redirected to  a  file\nby setting the \"PERLIODEBUG\" environment variable.\n\nIf  perl is running setuid or the \"-T\" switch was supplied, \"PERLIODEBUG\" is ignored and the\ndebugging output is sent to \"stderr\" as for any other \"-D\" switch.\n"
                }
            ]
        },
        "Incompatible Changes": {
            "content": "",
            "subsections": [
                {
                    "name": "Unescaped literal \"{\" characters in regular expression patterns are no longer permissible",
                    "content": "You have to now say something like \"\\{\" or \"[{]\" to specify to match a  LEFT  CURLY  BRACKET;\notherwise, it is a fatal pattern compilation error.  This change will allow future extensions\nto the language.\n\nThese  have  been  deprecated  since  v5.16,  with a deprecation message raised for some uses\nstarting in v5.22.  Unfortunately, the code added to raise the message was buggy  and  failed\nto  warn  in  some  cases where it should have.  Therefore, enforcement of this ban for these\ncases is deferred until Perl 5.30, but  the  code  has  been  fixed  to  raise  a  default-on\ndeprecation message for them in the meantime.\n\nSome  uses  of  literal  \"{\" occur in contexts where we do not foresee the meaning ever being\nanything but the literal, such as the very first character in the pattern,  or  after  a  \"|\"\nmeaning alternation.  Thus\n\nqr/{fee|{fie/\n\nmatches  either  of the strings \"{fee\" or \"{fie\".  To avoid forcing unnecessary code changes,\nthese uses do not need to be escaped, and no warning is raised about them, and there  are  no\ncurrent plans to change this.\n\nBut it is always correct to escape \"{\", and the simple rule to remember is to always do so.\n\nSee Unescaped left brace in regex is illegal here.\n"
                },
                {
                    "name": "scalar(%hash) return signature changed",
                    "content": "The  value  returned  for  scalar(%hash)  will  no  longer show information about the buckets\nallocated in the hash.  It will simply return the count of used keys.  It is thus  equivalent\nto \"0+keys(%hash)\".\n\nA  form  of  backward compatibility is provided via Hash::Util::bucketratio() which provides\nthe same behavior as scalar(%hash) provided in Perl 5.24 and earlier.\n"
                },
                {
                    "name": "\"keys\" returned from an lvalue subroutine",
                    "content": "\"keys\" returned from an lvalue subroutine can no longer be assigned to in list context.\n\nsub foo : lvalue { keys(%INC) }\n(foo) = 3; # death\nsub bar : lvalue { keys(@) }\n(bar) = 3; # also an error\n\nThis makes the lvalue sub case consistent with \"(keys %hash) = ...\" and \"(keys  @)  =  ...\",\nwhich are also errors.  [GH #15339] <https://github.com/Perl/perl5/issues/15339>\n"
                },
                {
                    "name": "The \"${^ENCODING}\" facility has been removed",
                    "content": "The  special  behaviour  associated with assigning a value to this variable has been removed.\nAs a consequence, the encoding pragma's default mode is no longer supported.   If  you  still\nneed  to  write  your  source code in encodings other than UTF-8, use a source filter such as\nFilter::Encoding on CPAN or encoding's \"Filter\" option.\n"
                },
                {
                    "name": "POSIX::tmpnam() has been removed",
                    "content": "The fundamentally unsafe tmpnam() interface was deprecated in Perl  5.22  and  has  now  been\nremoved.  In its place, you can use, for example, the File::Temp interfaces.\n"
                },
                {
                    "name": "require ::Foo::Bar is now illegal.",
                    "content": "Formerly, \"require ::Foo::Bar\" would try to read /Foo/Bar.pm.  Now any bareword require which\nstarts with a double colon dies instead.\n"
                },
                {
                    "name": "Literal control character variable names are no longer permissible",
                    "content": "A  variable  name  may no longer contain a literal control character under any circumstances.\nThese previously were allowed in single-character names on ASCII  platforms,  but  have  been\ndeprecated  there  since  Perl 5.20.  This affects things like \"$\\cT\", where \\cT is a literal\ncontrol (such as a \"NAK\" or \"NEGATIVE ACKNOWLEDGE\" character) in the source code.\n"
                },
                {
                    "name": "\"NBSP\" is no longer permissible in \"\\N{...}\"",
                    "content": "The name of a character may no longer contain non-breaking spaces.  It has been deprecated to\ndo so since Perl 5.22.\n"
                }
            ]
        },
        "Deprecations": {
            "content": "",
            "subsections": [
                {
                    "name": "String delimiters that aren't stand-alone graphemes are now deprecated",
                    "content": "For Perl to eventually allow string delimiters to be Unicode grapheme  clusters  (which  look\nlike  a  single character, but may be a sequence of several ones), we have to stop allowing a\nsingle character delimiter that isn't a grapheme by itself.  These are unlikely to  exist  in\nactual code, as they would typically display as attached to the character in front of them.\n"
                },
                {
                    "name": "\"\\c_X_\" that maps to a printable is no longer deprecated",
                    "content": "This  means  we have no plans to remove this feature.  It still raises a warning, but only if\nsyntax warnings are enabled.  The feature was originally intended to be a way to express non-\nprintable characters that don't have a mnemonic (\"\\t\" and \"\\n\" are  mnemonics  for  two  non-\nprintable characters, but most non-printables don't have a mnemonic.)  But the feature can be\nused  to  specify  a few printable characters, though those are more clearly expressed as the\nprintable                                    itself.                                      See\n<http://www.nntp.perl.org/group/perl.perl5.porters/2017/02/msg242944.html>.\n"
                }
            ]
        },
        "Performance Enhancements": {
            "content": "•   A hash in boolean context is now sometimes faster, e.g.\n\nif (!%h) { ... }\n\nThis  was  already  special-cased, but some cases were missed (such as \"grep %$, @AoH\"),\nand even the ones which weren't have been improved.\n\n•   New Faster Hash Function on 64 bit builds\n\nWe use a  different  hash  function  for  short  and  long  keys.   This  should  improve\nperformance and security, especially for long keys.\n\n•   readline is faster\n\nReading  from  a file line-by-line with readline() or \"<>\" should now typically be faster\ndue to a better implementation of the code that searches for the next newline character.\n\n•   Assigning one reference to another, e.g. \"$ref1 =  $ref2\"  has  been  optimized  in  some\ncases.\n\n•   Remove  some  exceptions  to  creating  Copy-on-Write  strings.  The string buffer growth\nalgorithm has been slightly altered so that you're less  likely  to  encounter  a  string\nwhich can't be COWed.\n\n•   Better optimise array and hash assignment: where an array or hash appears in the LHS of a\nlist  assignment,  such  as  \"(..., @a) = (...);\", it's likely to be considerably faster,\nespecially if it involves emptying the array/hash. For example, this code  runs  about  a\nthird faster compared to Perl 5.24.0:\n\nmy @a;\nfor my $i (1..10000000) {\n@a = (1,2,3);\n@a = ();\n}\n\n•   Converting a single-digit string to a number is now substantially faster.\n\n•   The  \"split\"  builtin  is  now  slightly  faster in many cases: in particular for the two\nspecially-handled forms\n\nmy    @a = split ...;\nlocal @a = split ...;\n\n•   The rather slow implementation for the experimental  subroutine  signatures  feature  has\nbeen  made  much  faster; it is now comparable in speed with the traditional \"my ($a, $b,\n@c) = @\".\n\n•   Bareword constant strings are now permitted to take part in constant folding.  They  were\noriginally  exempted from constant folding in August 1999, during the development of Perl\n5.6, to ensure that \"use strict \"subs\"\" would still apply to  bareword  constants.   That\nhas  now  been accomplished a different way, so barewords, like other constants, now gain\nthe performance benefits of constant folding.\n\nThis also means that void-context warnings  on  constant  expressions  of  barewords  now\nreport the folded constant operand, rather than the operation; this matches the behaviour\nfor non-bareword constants.\n",
            "subsections": []
        },
        "Modules and Pragmata": {
            "content": "",
            "subsections": [
                {
                    "name": "Updated Modules and Pragmata",
                    "content": "•   IO::Compress has been upgraded from version 2.069 to 2.074.\n\n•   Archive::Tar has been upgraded from version 2.04 to 2.24.\n\n•   arybase has been upgraded from version 0.11 to 0.12.\n\n•   attributes has been upgraded from version 0.27 to 0.29.\n\nThe  deprecation message for the \":unique\" and \":locked\" attributes now mention that they\nwill disappear in Perl 5.28.\n\n•   B has been upgraded from version 1.62 to 1.68.\n\n•   B::Concise has been upgraded from version 0.996 to 0.999.\n\nIts output is now more descriptive for \"opprivate\" flags.\n\n•   B::Debug has been upgraded from version 1.23 to 1.24.\n\n•   B::Deparse has been upgraded from version 1.37 to 1.40.\n\n•   B::Xref has been upgraded from version 1.05 to 1.06.\n\nIt   now   uses   3-arg    open()    instead    of    2-arg    open().     [GH    #15721]\n<https://github.com/Perl/perl5/issues/15721>\n\n•   base has been upgraded from version 2.23 to 2.25.\n\n•   bignum has been upgraded from version 0.42 to 0.47.\n\n•   Carp has been upgraded from version 1.40 to 1.42.\n\n•   charnames has been upgraded from version 1.43 to 1.44.\n\n•   Compress::Raw::Bzip2 has been upgraded from version 2.069 to 2.074.\n\n•   Compress::Raw::Zlib has been upgraded from version 2.069 to 2.074.\n\n•   Config::Perl::V has been upgraded from version 0.25 to 0.28.\n\n•   CPAN has been upgraded from version 2.11 to 2.18.\n\n•   CPAN::Meta has been upgraded from version 2.150005 to 2.150010.\n\n•   Data::Dumper has been upgraded from version 2.160 to 2.167.\n\nThe XS implementation now supports Deparse.\n\n•   DBFile has been upgraded from version 1.835 to 1.840.\n\n•   Devel::Peek has been upgraded from version 1.23 to 1.26.\n\n•   Devel::PPPort has been upgraded from version 3.32 to 3.35.\n\n•   Devel::SelfStubber has been upgraded from version 1.05 to 1.06.\n\nIt    now    uses    3-arg    open()    instead    of    2-arg   open().    [GH   #15721]\n<https://github.com/Perl/perl5/issues/15721>\n\n•   diagnostics has been upgraded from version 1.34 to 1.36.\n\nIt   now   uses   3-arg    open()    instead    of    2-arg    open().     [GH    #15721]\n<https://github.com/Perl/perl5/issues/15721>\n\n•   Digest has been upgraded from version 1.17 to 1.1701.\n\n•   Digest::MD5 has been upgraded from version 2.54 to 2.55.\n\n•   Digest::SHA has been upgraded from version 5.95 to 5.96.\n\n•   DynaLoader has been upgraded from version 1.38 to 1.42.\n\n•   Encode has been upgraded from version 2.80 to 2.88.\n\n•   encoding has been upgraded from version 2.17 to 2.19.\n\nThis module's default mode is no longer supported.  It now dies when imported, unless the\n\"Filter\" option is being used.\n\n•   encoding::warnings has been upgraded from version 0.12 to 0.13.\n\nThis  module  is  no  longer  supported.  It emits a warning to that effect and then does\nnothing.\n\n•   Errno has been upgraded from version 1.25 to 1.28.\n\nIt now documents that using \"%!\" automatically loads Errno for you.\n\nIt   now   uses   3-arg    open()    instead    of    2-arg    open().     [GH    #15721]\n<https://github.com/Perl/perl5/issues/15721>\n\n•   ExtUtils::Embed has been upgraded from version 1.33 to 1.34.\n\nIt    now    uses    3-arg    open()    instead    of    2-arg   open().    [GH   #15721]\n<https://github.com/Perl/perl5/issues/15721>\n\n•   ExtUtils::MakeMaker has been upgraded from version 7.1001 to 7.24.\n\n•   ExtUtils::Miniperl has been upgraded from version 1.05 to 1.06.\n\n•   ExtUtils::ParseXS has been upgraded from version 3.31 to 3.34.\n\n•   ExtUtils::Typemaps has been upgraded from version 3.31 to 3.34.\n\n•   feature has been upgraded from version 1.42 to 1.47.\n\n•   File::Copy has been upgraded from version 2.31 to 2.32.\n\n•   File::Fetch has been upgraded from version 0.48 to 0.52.\n\n•   File::Glob has been upgraded from version 1.26 to 1.28.\n\nIt now Issues a deprecation message for File::Glob::glob().\n\n•   File::Spec has been upgraded from version 3.63 to 3.67.\n\n•   FileHandle has been upgraded from version 2.02 to 2.03.\n\n•   Filter::Simple has been upgraded from version 0.92 to 0.93.\n\nIt no longer treats \"no MyFilter\" immediately following \"use  MyFilter\"  as  end-of-file.\n[GH #11853] <https://github.com/Perl/perl5/issues/11853>\n\n•   Getopt::Long has been upgraded from version 2.48 to 2.49.\n\n•   Getopt::Std has been upgraded from version 1.11 to 1.12.\n\n•   Hash::Util has been upgraded from version 0.19 to 0.22.\n\n•   HTTP::Tiny has been upgraded from version 0.056 to 0.070.\n\nInternal 599-series errors now include the redirect history.\n\n•   I18N::LangTags has been upgraded from version 0.40 to 0.42.\n\nIt    now    uses    3-arg    open()    instead    of    2-arg   open().    [GH   #15721]\n<https://github.com/Perl/perl5/issues/15721>\n\n•   IO has been upgraded from version 1.36 to 1.38.\n\n•   IO::Socket::IP has been upgraded from version 0.37 to 0.38.\n\n•   IPC::Cmd has been upgraded from version 0.92 to 0.96.\n\n•   IPC::SysV has been upgraded from version 2.0601 to 2.07.\n\n•   JSON::PP has been upgraded from version 2.27300 to 2.2740002.\n\n•   lib has been upgraded from version 0.63 to 0.64.\n\nIt   now   uses   3-arg    open()    instead    of    2-arg    open().     [GH    #15721]\n<https://github.com/Perl/perl5/issues/15721>\n\n•   List::Util has been upgraded from version 1.4202 to 1.4602.\n\n•   Locale::Codes has been upgraded from version 3.37 to 3.42.\n\n•   Locale::Maketext has been upgraded from version 1.26 to 1.28.\n\n•   Locale::Maketext::Simple has been upgraded from version 0.21 to 0.2101.\n\n•   Math::BigInt has been upgraded from version 1.999715 to 1.999806.\n\n•   Math::BigInt::FastCalc has been upgraded from version 0.40 to 0.5005.\n\n•   Math::BigRat has been upgraded from version 0.260802 to 0.2611.\n\n•   Math::Complex has been upgraded from version 1.59 to 1.5901.\n\n•   Memoize has been upgraded from version 1.03 to 1.0301.\n\n•   Module::CoreList has been upgraded from version 5.20170420 to 5.20170530.\n\n•   Module::Load::Conditional has been upgraded from version 0.64 to 0.68.\n\n•   Module::Metadata has been upgraded from version 1.000031 to 1.000033.\n\n•   mro has been upgraded from version 1.18 to 1.20.\n\n•   Net::Ping has been upgraded from version 2.43 to 2.55.\n\nIPv6  addresses  and  \"AFINET6\"  sockets  are  now  supported,  along with several other\nenhancements.\n\n•   NEXT has been upgraded from version 0.65 to 0.67.\n\n•   Opcode has been upgraded from version 1.34 to 1.39.\n\n•   open has been upgraded from version 1.10 to 1.11.\n\n•   OS2::Process has been upgraded from version 1.11 to 1.12.\n\nIt   now   uses   3-arg    open()    instead    of    2-arg    open().     [GH    #15721]\n<https://github.com/Perl/perl5/issues/15721>\n\n•   overload has been upgraded from version 1.26 to 1.28.\n\nIts compilation speed has been improved slightly.\n\n•   parent has been upgraded from version 0.234 to 0.236.\n\n•   perl5db.pl has been upgraded from version 1.50 to 1.51.\n\nIt     now     ignores     /dev/tty     on     non-Unix     systems.      [GH     #12244]\n<https://github.com/Perl/perl5/issues/12244>\n\n•   Perl::OSType has been upgraded from version 1.009 to 1.010.\n\n•   perlfaq has been upgraded from version 5.021010 to 5.021011.\n\n•   PerlIO has been upgraded from version 1.09 to 1.10.\n\n•   PerlIO::encoding has been upgraded from version 0.24 to 0.25.\n\n•   PerlIO::scalar has been upgraded from version 0.24 to 0.26.\n\n•   Pod::Checker has been upgraded from version 1.60 to 1.73.\n\n•   Pod::Functions has been upgraded from version 1.10 to 1.11.\n\n•   Pod::Html has been upgraded from version 1.22 to 1.2202.\n\n•   Pod::Perldoc has been upgraded from version 3.2502 to 3.28.\n\n•   Pod::Simple has been upgraded from version 3.32 to 3.35.\n\n•   Pod::Usage has been upgraded from version 1.68 to 1.69.\n\n•   POSIX has been upgraded from version 1.65 to 1.76.\n\nThis  remedies  several  defects  in  making  its  symbols   exportable.    [GH   #15260]\n<https://github.com/Perl/perl5/issues/15260>\n\nThe POSIX::tmpnam() interface has been removed, see \"POSIX::tmpnam() has been removed\".\n\nThe following deprecated functions have been removed:\n\nPOSIX::isalnum\nPOSIX::isalpha\nPOSIX::iscntrl\nPOSIX::isdigit\nPOSIX::isgraph\nPOSIX::islower\nPOSIX::isprint\nPOSIX::ispunct\nPOSIX::isspace\nPOSIX::isupper\nPOSIX::isxdigit\nPOSIX::tolower\nPOSIX::toupper\n\nTrying  to  import POSIX subs that have no real implementations (like POSIX::atend()) now\nfails at import time, instead of waiting until runtime.\n\n•   re has been upgraded from version 0.32 to 0.34\n\nThis adds support for the new \"/xx\" regular expression pattern modifier, and a change  to\nthe  use re 'strict'  experimental  feature.   When re 'strict' is enabled, a warning now\nwill be generated for all unescaped uses of the two characters \"}\"  and  \"]\"  in  regular\nexpression patterns (outside bracketed character classes) that are taken literally.  This\nbrings  them  more  in line with the \")\" character which is always a metacharacter unless\nescaped.  Being a metacharacter only sometimes, depending on an action at a distance, can\nlead to silently having the pattern mean something quite  different  than  was  intended,\nwhich the \"re 'strict'\" mode is intended to minimize.\n\n•   Safe has been upgraded from version 2.39 to 2.40.\n\n•   Scalar::Util has been upgraded from version 1.4202 to 1.4602.\n\n•   Storable has been upgraded from version 2.56 to 2.62.\n\nFixes [GH #15714] <https://github.com/Perl/perl5/issues/15714>.\n\n•   Symbol has been upgraded from version 1.07 to 1.08.\n\n•   Sys::Syslog has been upgraded from version 0.33 to 0.35.\n\n•   Term::ANSIColor has been upgraded from version 4.04 to 4.06.\n\n•   Term::ReadLine has been upgraded from version 1.15 to 1.16.\n\nIt    now    uses    3-arg    open()    instead    of    2-arg   open().    [GH   #15721]\n<https://github.com/Perl/perl5/issues/15721>\n\n•   Test has been upgraded from version 1.28 to 1.30.\n\nIt   now   uses   3-arg    open()    instead    of    2-arg    open().     [GH    #15721]\n<https://github.com/Perl/perl5/issues/15721>\n\n•   Test::Harness has been upgraded from version 3.36 to 3.38.\n\n•   Test::Simple has been upgraded from version 1.001014 to 1.302073.\n\n•   Thread::Queue has been upgraded from version 3.09 to 3.12.\n\n•   Thread::Semaphore has been upgraded from 2.12 to 2.13.\n\nAdded the \"downtimed\" method.\n\n•   threads has been upgraded from version 2.07 to 2.15.\n\n•   threads::shared has been upgraded from version 1.51 to 1.56.\n\n•   Tie::Hash::NamedCapture has been upgraded from version 0.09 to 0.10.\n\n•   Time::HiRes has been upgraded from version 1.9733 to 1.9741.\n\nIt now builds on systems with C++11 compilers (such as G++ 6 and Clang++ 3.9).\n\nNow uses \"clockidt\".\n\n•   Time::Local has been upgraded from version 1.2300 to 1.25.\n\n•   Unicode::Collate has been upgraded from version 1.14 to 1.19.\n\n•   Unicode::UCD has been upgraded from version 0.64 to 0.68.\n\nIt    now    uses    3-arg    open()    instead    of    2-arg   open().    [GH   #15721]\n<https://github.com/Perl/perl5/issues/15721>\n\n•   version has been upgraded from version 0.9916 to 0.9917.\n\n•   VMS::DCLsym has been upgraded from version 1.06 to 1.08.\n\nIt   now   uses   3-arg    open()    instead    of    2-arg    open().     [GH    #15721]\n<https://github.com/Perl/perl5/issues/15721>\n\n•   warnings has been upgraded from version 1.36 to 1.37.\n\n•   XS::Typemap has been upgraded from version 0.14 to 0.15.\n\n•   XSLoader has been upgraded from version 0.21 to 0.27.\n\nFixed a security hole in which binary files could be loaded from a path outside of @INC.\n\nIt    now    uses    3-arg    open()    instead    of    2-arg   open().    [GH   #15721]\n<https://github.com/Perl/perl5/issues/15721>\n"
                }
            ]
        },
        "Documentation": {
            "content": "",
            "subsections": [
                {
                    "name": "New Documentation",
                    "content": "perldeprecation\n\nThis file documents all upcoming deprecations, and some of  the  deprecations  which  already\nhave  been  removed.   The  purpose  of  this  documentation  is two-fold: document what will\ndisappear, and by which version, and serve as a guide for people dealing with code which  has\nfeatures that no longer work after an upgrade of their perl.\n"
                },
                {
                    "name": "Changes to Existing Documentation",
                    "content": "We have attempted to update the documentation to reflect the changes listed in this document.\nIf you find any we have missed, send email to perlbug@perl.org <mailto:perlbug@perl.org>.\n\nAdditionally,  all references to Usenet have been removed, and the following selected changes\nhave been made:\n\nperlfunc\n\n•   Removed obsolete text about  defined()  on  aggregates  that  should  have  been  deleted\nearlier, when the feature was removed.\n\n•   Corrected documentation of eval(), and evalbytes().\n\n•   Clarified documentation of seek(), tell() and sysseek() emphasizing that positions are in\nbytes and not characters.  [GH #15438] <https://github.com/Perl/perl5/issues/15438>\n\n•   Clarified documentation of sort() concerning the variables $a and $b.\n\n•   In  split() noted that certain pattern modifiers are legal, and added a caution about its\nuse in Perls before v5.11.\n\n•   Removed obsolete documentation of study(), noting that it is now a no-op.\n\n•   Noted that vec() doesn't work well when the string contains characters whose code  points\nare above 255.\n\nperlguts\n\n•   Added advice on formatted printing of operands of \"Sizet\" and \"SSizet\"\n\nperlhack\n\n•   Clarify what editor tab stop rules to use, and note that we are migrating away from using\ntabs, replacing them with sequences of SPACE characters.\n\nperlhacktips\n\n•   Give another reason to use \"cBOOL\" to cast an expression to boolean.\n\n•   Note that the macros \"TRUE\" and \"FALSE\" are available to express boolean values.\n\nperlinterp\n\n•   perlinterp has been expanded to give a more detailed example of how to hunt around in the\nparser for how a given operator is handled.\n\nperllocale\n\n•   Some locales aren't compatible with Perl.  Note that these can cause core dumps.\n\nperlmod\n\n•   Various clarifications have been added.\n\nperlmodlib\n\n•   Updated the site mirror list.\n\nperlobj\n\n•   Added a section on calling methods using their fully qualified names.\n\n•   Do not discourage manual @ISA.\n\nperlootut\n\n•   Mention \"Moo\" more.\n\nperlop\n\n•   Note  that  white  space  must  be  used for quoting operators if the delimiter is a word\ncharacter (i.e., matches \"\\w\").\n\n•   Clarify that in regular expression patterns  delimited  by  single  quotes,  no  variable\ninterpolation is done.\n\nperlre\n\n•   The  first  part  was  extensively rewritten to incorporate various basic points, that in\nearlier versions were mentioned in sort of an appendix on Version 8 regular expressions.\n\n•   Note that it is common to have the \"/x\" modifier and forget that this means that \"#\"  has\nto be escaped.\n\nperlretut\n\n•   Add introductory material.\n\n•   Note that a metacharacter occurring in a context where it can't mean that, silently loses\nits meta-ness and matches literally.  \"use re 'strict'\" can catch some of these.\n\nperlunicode\n\n•   Corrected the text about Unicode BYTE ORDER MARK handling.\n\n•   Updated  the  text  to  correspond  with  changes  in  Unicode UTS#18, concerning regular\nexpressions, and Perl compatibility with what it says.\n\nperlvar\n\n•   Document @ISA.  It was documented in other places, but not in perlvar.\n"
                }
            ]
        },
        "Diagnostics": {
            "content": "",
            "subsections": [
                {
                    "name": "New Diagnostics",
                    "content": "New Errors\n\n•   A signature parameter must start with '$', '@' or '%'\n\n•   Bareword in require contains \"%s\"\n\n•   Bareword in require maps to empty filename\n\n•   Bareword in require maps to disallowed filename \"%s\"\n\n•   Bareword in require must not start with a double-colon: \"%s\"\n\n•   %s: command not found\n\n(A) You've accidentally run your script through bash or another shell  instead  of  Perl.\nCheck  the  \"#!\" line, or manually feed your script into Perl yourself.  The \"#!\" line at\nthe top of your file could look like:\n\n#!/usr/bin/perl\n\n•   %s: command not found: %s\n\n(A) You've accidentally run your script through zsh or another  shell  instead  of  Perl.\nCheck  the  \"#!\" line, or manually feed your script into Perl yourself.  The \"#!\" line at\nthe top of your file could look like:\n\n#!/usr/bin/perl\n\n•   The experimental declaredrefs feature is not enabled\n\n(F) To declare references to variables, as  in  \"my  \\%x\",  you  must  first  enable  the\nfeature:\n\nno warnings \"experimental::declaredrefs\";\nuse feature \"declaredrefs\";\n\nSee \"Declaring a reference to a variable\".\n\n•   Illegal character following sigil in a subroutine signature\n\n•   Indentation on line %d of here-doc doesn't match delimiter\n\n•   Infinite recursion via empty pattern.\n\nUsing  the empty pattern (which re-executes the last successfully-matched pattern) inside\na code block in another regex, as in \"/(?{ s!!new! })/\", has always previously yielded  a\nsegfault.  It now produces this error.\n\n•   Malformed UTF-8 string in \"%s\"\n\n•   Multiple slurpy parameters not allowed\n\n•   '#' not allowed immediately following a sigil in a subroutine signature\n\n•   panic: unknown OA*: %x\n\n•   Unescaped left brace in regex is illegal here\n\nUnescaped  left  braces  are now illegal in some contexts in regular expression patterns.\nIn other contexts, they are still just deprecated; they will be illegal in Perl 5.30.\n\n•   Version control conflict marker\n\n(F) The parser found a line starting with \"<<<<<<<\", \">>>>>>>\", or \"=======\".  These  may\nbe left by a version control system to mark conflicts after a failed merge operation.\n\nNew Warnings\n\n•   Can't determine class of operator %s, assuming \"BASEOP\"\n\n•   Declaring references is experimental\n\n(S   experimental::declaredrefs)  This  warning  is  emitted  if  you  use  a  reference\nconstructor on the right-hand side of my(), state(), our(), or local().  Simply  suppress\nthe  warning if you want to use the feature, but know that in doing so you are taking the\nrisk of using an experimental feature which may change or be removed  in  a  future  Perl\nversion:\n\nno warnings \"experimental::declaredrefs\";\nuse feature \"declaredrefs\";\n$fooref = my \\$foo;\n\nSee \"Declaring a reference to a variable\".\n\n•   do \"%s\" failed, '.' is no longer in @INC\n\nSince  \".\"  is  now  removed  from  @INC  by  default,  \"do\"  will  now trigger a warning\nrecommending to fix the \"do\" statement.\n\n•   File::Glob::glob() will disappear in perl 5.30. Use File::Glob::bsdglob() instead.\n\n•   Unescaped literal '%c' in regex; marked by <-- HERE in m/%s/\n\n•   Use of unassigned code point or non-standalone grapheme for a delimiter will be  a  fatal\nerror starting in Perl 5.30\n\nSee \"Deprecations\"\n"
                },
                {
                    "name": "Changes to Existing Diagnostics",
                    "content": "•   When  a  \"require\"  fails,  we  now  do not provide @INC when the \"require\" is for a file\ninstead of a module.\n\n•   When @INC is not scanned for a \"require\"  call,  we  no  longer  display  @INC  to  avoid\nconfusion.\n\n•   Attribute \"locked\" is deprecated, and will disappear in Perl 5.28\n\nThis existing warning has had the and will disappear text added in this release.\n\n•   Attribute \"unique\" is deprecated, and will disappear in Perl 5.28\n\nThis existing warning has had the and will disappear text added in this release.\n\n•   Calling POSIX::%s() is deprecated\n\nThis warning has been removed, as the deprecated functions have been removed from POSIX.\n\n•   Constants from lexical variables potentially modified elsewhere are deprecated. This will\nnot be allowed in Perl 5.32\n\nThis existing warning has had the this will not be allowed text added in this release.\n\n•   Deprecated use of my() in false conditional. This will be a fatal error in Perl 5.30\n\nThis existing warning has had the this will be a fatal error text added in this release.\n\n•   dump() better written as CORE::dump(). dump() will no longer be available in Perl 5.30\n\nThis existing warning has had the no longer be available text added in this release.\n\n•   Experimental %s on scalar is now forbidden\n\nThis    message    is    now    followed    by    more   helpful   text.    [GH   #15291]\n<https://github.com/Perl/perl5/issues/15291>\n\n•   Experimental \"%s\" subs not enabled\n\nThis warning was been removed, as lexical subs are no longer experimental.\n\n•   Having more than one /%c regexp modifier is deprecated\n\nThis deprecation warning has been removed, since \"/xx\" now has a new meaning.\n\n•   %s() is deprecated on \":utf8\" handles. This will be a fatal error in Perl 5.30 .\n\nwhere \"%s\" is one of \"sysread\", \"recv\", \"syswrite\", or \"send\".\n\nThis existing warning has had the this will be a fatal error text added in this release.\n\nThis warning is now enabled by default, as all \"deprecated\" category warnings should be.\n\n•   $* is no longer supported. Its use will be fatal in Perl 5.30\n\nThis existing warning has had the its use will be fatal text added in this release.\n\n•   $# is no longer supported. Its use will be fatal in Perl 5.30\n\nThis existing warning has had the its use will be fatal text added in this release.\n\n•   Malformed UTF-8 character%s\n\nDetails as to the exact problem have been added at the end of this message\n\n•   Missing or undefined argument to %s\n\nThis warning used to warn about \"require\", even if  it  was  actually  \"do\"  which  being\nexecuted. It now gets the operation name right.\n\n•   NO-BREAK SPACE in a charnames alias definition is deprecated\n\nThis warning has been removed as the behavior is now an error.\n\n•   Odd name/value argument for subroutine '%s'\n\nThis warning now includes the name of the offending subroutine.\n\n•   Opening dirhandle %s also as a file. This will be a fatal error in Perl 5.28\n\nThis existing warning has had the this will be a fatal error text added in this release.\n\n•   Opening filehandle %s also as a directory. This will be a fatal error in Perl 5.28\n\nThis existing warning has had the this will be a fatal error text added in this release.\n\n•   panic: cksplit, type=%u\n\npanic: ppsplit, pm=%p, s=%p\n\nThese panic errors have been removed.\n\n•   Passing malformed UTF-8 to \"%s\" is deprecated\n\nThis warning has been changed to the fatal Malformed UTF-8 string in \"%s\"\n\n•   Setting $/ to a reference to %s as a form of slurp is deprecated, treating as undef. This\nwill be fatal in Perl 5.28\n\nThis existing warning has had the this will be fatal text added in this release.\n\n•   \"${^ENCODING}\" is no longer supported. Its use will be fatal in Perl 5.28\n\nThis warning used to be: \"Setting \"${^ENCODING}\" is deprecated\".\n\nThe  special  action  of  the  variable \"${^ENCODING}\" was formerly used to implement the\n\"encoding\" pragma. As of Perl 5.26, rather  than  being  deprecated,  assigning  to  this\nvariable now has no effect except to issue the warning.\n\n•   Too few arguments for subroutine '%s'\n\nThis warning now includes the name of the offending subroutine.\n\n•   Too many arguments for subroutine '%s'\n\nThis warning now includes the name of the offending subroutine.\n\n•   Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed\nthrough in regex; marked by <-- HERE in m/%s/\n\nThis existing warning has had the here (and will be fatal...) text added in this release.\n\n•   Unknown charname '' is deprecated. Its use will be fatal in Perl 5.28\n\nThis existing warning has had the its use will be fatal text added in this release.\n\n•   Use of bare << to mean <<\"\" is deprecated. Its use will be fatal in Perl 5.28\n\nThis existing warning has had the its use will be fatal text added in this release.\n\n•   Use of code point 0x%s is deprecated; the permissible max is 0x%s.  This will be fatal in\nPerl 5.28\n\nThis existing warning has had the this will be fatal text added in this release.\n\n•   Use of comma-less variable list is deprecated. Its use will be fatal in Perl 5.28\n\nThis existing warning has had the its use will be fatal text added in this release.\n\n•   Use of inherited \"AUTOLOAD\" for non-method %s() is deprecated. This will be fatal in Perl\n5.28\n\nThis existing warning has had the this will be fatal text added in this release.\n\n•   Use of strings with code points over 0xFF as arguments to %s operator is deprecated. This\nwill be a fatal error in Perl 5.28\n\nThis existing warning has had the this will be a fatal error text added in this release.\n"
                }
            ]
        },
        "Utility Changes": {
            "content": "c2ph and \u001b[4mpstruct\n•   These  old  utilities  have  long  since  superceded  by  h2xs, and are now gone from the\ndistribution.\n\n\u001b[4mPorting/podlib.pl\n•   Removed spurious executable bit.\n\n•   Account for the possibility of DOS file endings.\n\n\u001b[4mPorting/sync-with-cpan\n•   Many improvements.\n\n\u001b[4mperf/benchmarks\n•   Tidy file, rename some symbols.\n\n\u001b[4mPorting/checkAUTHORS.pl\n•   Replace obscure character range with \"\\w\".\n\n\u001b[4mt/porting/regen.t\n•   Try to be more helpful when tests fail.\n\n\u001b[4mutils/h2xs.PL\n•   Avoid infinite loop for enums.\n",
            "subsections": [
                {
                    "name": "perlbug",
                    "content": "•   Long lines in the message body are now wrapped at 900 characters, to stay well within the\n1000-character limit imposed by SMTP mail transfer agents.  This is  particularly  likely\nto  be  important  for  the  list of arguments to Configure, which can readily exceed the\nlimit if, for example, it names several non-default installation paths.  This change also\nadds     the     first     unit     tests     for      perlbug.       [perl      #128020]\n<https://rt.perl.org/Public/Bug/Display.html?id=128020>\n"
                }
            ]
        },
        "Configuration and Compilation": {
            "content": "•   \"-Ddefaultincexcludesdot\" has added, and enabled by default.\n\n•   The     \"dtrace\"     build     process     has     further     changes     [GH    #15718]\n<https://github.com/Perl/perl5/issues/15718>:\n\n•   If the \"-xnolibs\" is available, use that so a dtrace  perl  can  be  built  within  a\nFreeBSD jail.\n\n•   On  systems that build a dtrace object file (FreeBSD, Solaris, and SystemTap's dtrace\nemulation), copy the input objects to a separate directory and  process  them  there,\nand use those objects in the link, since \"dtrace -G\" also modifies these objects.\n\n•   Add  libelf  to  the  build  on  FreeBSD 10.x, since dtrace adds references to libelf\nsymbols.\n\n•   Generate a dummy dtracemain.o if \"dtrace -G\" fails to build it.  A default build  on\nSolaris  generates  probes  from  the  unused  inline  functions, while they don't on\nFreeBSD, which causes \"dtrace -G\" to fail.\n\n•   You  can  now  disable  perl's  use  of  the  \"PERLHASHSEED\"  and   \"PERLPERTURBKEYS\"\nenvironment variables by configuring perl with \"-Accflags=NOPERLHASHENV\".\n\n•   You  can  now  disable  perl's  use of the \"PERLHASHSEEDDEBUG\" environment variable by\nconfiguring perl with \"-Accflags=-DNOPERLHASHSEEDDEBUG\".\n\n•   Configure now zeroes out the alignment bytes when calculating the bytes for 80-bit  \"NaN\"\nand      \"Inf\"     to     make     builds     more     reproducible.      [GH     #15725]\n<https://github.com/Perl/perl5/issues/15725>\n\n•   Since v5.18, for testing purposes we have included  support  for  building  perl  with  a\nvariety  of  non-standard, and non-recommended hash functions.  Since we do not recommend\nthe use of these functions, we have removed them and their corresponding  build  options.\nSpecifically this includes the following build options:\n\nPERLHASHFUNCSDBM\nPERLHASHFUNCDJB2\nPERLHASHFUNCSUPERFAST\nPERLHASHFUNCMURMUR3\nPERLHASHFUNCONEATATIME\nPERLHASHFUNCONEATATIMEOLD\nPERLHASHFUNCMURMURHASH64A\nPERLHASHFUNCMURMURHASH64B\n\n•   Remove \"Warning: perl appears in your path\"\n\nThis  install  warning is more or less obsolete, since most platforms already will have a\n/usr/bin/perl or similar provided by the OS.\n\n•   Reduce verbosity of \"make install.man\"\n\nPreviously, two progress messages were  emitted  for  each  manpage:  one  by  installman\nitself,  and  one by the function in installlib.pl that it calls to actually install the\nfile.  Disabling the second of those in each case  saves  over  750  lines  of  unhelpful\noutput.\n\n•   Cleanup       for       \"clang       -Weverything\"       support.        [GH      #15683]\n<https://github.com/Perl/perl5/issues/15683>\n\n•   Configure: signbit scan was assuming too much, stop assuming negative 0.\n\n•   Various compiler warnings have been silenced.\n\n•   Several smaller changes have been made to remove impediments to compiling under C++11.\n\n•   Builds using \"USEPADRESET\" now work again; this configuration had bit-rotted.\n\n•   A probe for \"gaistrerror\" was added to  Configure  that  checks  if  the  gaistrerror()\nroutine  is  available and can be used to translate error codes returned by getaddrinfo()\ninto human readable strings.\n\n•   Configure now aborts if both \"-Duselongdouble\" and \"-Dusequadmath\"  are  requested.   [GH\n#14944] <https://github.com/Perl/perl5/issues/14944>\n\n•   Fixed  a  bug  in which Configure could append \"-quadmath\" to the archname even if it was\nalready present.  [GH #15423] <https://github.com/Perl/perl5/issues/15423>\n\n•   Clang builds with  \"-DPERLGLOBALSTRUCT\"  or  \"-DPERLGLOBALSTRUCTPRIVATE\"  have  been\nfixed (by disabling Thread Safety Analysis for these configurations).\n\n•   makeext.pl  no  longer updates a module's pmtoblib file when no files require updates.\nThis could cause dependencies, perlmain.c in particular,  to  be  rebuilt  unnecessarily.\n[GH #15060] <https://github.com/Perl/perl5/issues/15060>\n\n•   The  output of \"perl -V\" has been reformatted so that each configuration and compile-time\noption is now listed one per line, to improve readability.\n\n•   Configure  now  builds  \"miniperl\"  and  \"generateuudmap\"  if   you   invoke   it   with\n\"-Dusecrosscompiler\"  but  not  \"-Dtargethost=somehost\".   This means you can supply your\ntarget platform \"config.sh\", generate the headers and proceed to build your  cross-target\nperl.  [GH #15126] <https://github.com/Perl/perl5/issues/15126>\n\n•   Perl  built with \"-Accflags=-DPERLTRACEOPS\" now only dumps the operator counts when the\nenvironment variable \"PERLTRACEOPS\" is set to a non-zero integer.   This  allows  \"make\ntest\" to pass on such a build.\n\n•   When  building  with  GCC  6  and  link-time  optimization (the \"-flto\" option to \"gcc\"),\nConfigure was treating all probed symbols as present on the system, regardless of whether\nthey     actually     exist.      This     has     been     fixed.       [GH      #15322]\n<https://github.com/Perl/perl5/issues/15322>\n\n•   The  t/test.pl  library  is  used for internal testing of Perl itself, and also copied by\nseveral CPAN modules.  Some of those modules must work on  older  versions  of  Perl,  so\nt/test.pl  must  in  turn  avoid  newer  Perl  features.  Compatibility with Perl 5.8 was\ninadvertently  removed  some  time  ago;  it  has  now  been   restored.    [GH   #15302]\n<https://github.com/Perl/perl5/issues/15302>\n\n•   The  build  process  no  longer  emits  an extra blank line before building each \"simple\"\nextension (those with only *.pm and *.pod files).\n",
            "subsections": []
        },
        "Testing": {
            "content": "Tests were added and changed to reflect the other additions  and  changes  in  this  release.\nFurthermore, these substantive changes were made:\n\n•   A  new test script, comp/parserrun.t, has been added that is like comp/parser.t but with\ntest.pl included so that runperl() and the like are available for use.\n\n•   Tests for locales were erroneously using locales incompatible with Perl.\n\n•   Some parts of the test suite that try to  exhaustively  test  edge  cases  in  the  regex\nimplementation  have  been  restricted to running for a maximum of five minutes.  On slow\nsystems they could otherwise take several  hours,  without  significantly  improving  our\nunderstanding of the correctness of the code under test.\n\n•   A new internal facility allows analysing the time taken by the individual tests in Perl's\nown test suite; see Porting/harness-timer-report.pl.\n\n•   t/re/regexpnonull.t has been added to test that the regular expression engine can handle\nscalars that do not have a null byte just past the end of the string.\n\n•   A  new test script, t/op/decl-refs.t, has been added to test the new feature \"Declaring a\nreference to a variable\".\n\n•   A new test script, t/re/keeptabs.t has been added to contain tests where \"\\t\" characters\nshould not be expanded into spaces.\n\n•   A new test script, t/re/anyof.t, has been added to test that the ANYOF nodes generated by\nbracketed character classes are as expected.\n\n•   There is now more extensive testing of the Unicode-related API macros and functions.\n\n•   Several of the longer running API test files have been split into multiple test files  so\nthat they can be run in parallel.\n\n•   t/harness  now  tries  really hard not to run tests which are located outside of the Perl\nsource tree.  [GH #14578] <https://github.com/Perl/perl5/issues/14578>\n\n•   Prevent  debugger  tests  (lib/perl5db.t)  from  failing   due   to   the   contents   of\n$ENV{PERLDBOPTS}.  [GH #15782] <https://github.com/Perl/perl5/issues/15782>\n",
            "subsections": []
        },
        "Platform Support": {
            "content": "",
            "subsections": [
                {
                    "name": "New Platforms",
                    "content": "NetBSD/VAX\nPerl  now  compiles  under  NetBSD  on VAX machines.  However, it's not possible for that\nplatform to implement floating-point infinities and  NaNs  compatible  with  most  modern\nsystems,  which implement the IEEE-754 floating point standard.  The hexadecimal floating\npoint (\"0x...p[+-]n\" literals, \"printf %a\") is not implemented, either.  The \"make  test\"\npasses 98% of tests.\n\n•   Test fixes and minor updates.\n\n•   Account for lack of \"inf\", \"nan\", and -0.0 support.\n"
                },
                {
                    "name": "Platform-Specific Notes",
                    "content": "Darwin\n•   Don't   treat   \"-Dprefix=/usr\"   as   special:   instead  require  an  extra  option\n\"-Ddarwindistribution\" to produce the same results.\n\n•   OS X El Capitan doesn't implement the clockgettime() or clockgetres() APIs; emulate\nthem as necessary.\n\n•   Deprecated syscall(2) on macOS 10.12.\n\nEBCDIC\nSeveral tests have been updated to work (or be skipped) on EBCDIC platforms.\n\nHP-UX\nThe Net::Ping UDP test is now skipped on HP-UX.\n\nHurd\nThe hints for Hurd have been improved, enabling malloc wrap and reporting  the  GNU  libc\nused (previously it was an empty string when reported).\n\nVAX VAX floating point formats are now supported on NetBSD.\n\nVMS\n•   The  path  separator  for  the  \"PERL5LIB\" and \"PERLLIB\" environment entries is now a\ncolon (\":\") when running under a Unix shell.  There is no change when  running  under\nDCL (it's still \"|\").\n\n•   configure.com  now recognizes the VSI-branded C compiler and no longer recognizes the\n\"DEC\"-branded C compiler (as there hasn't been such a thing for 15 or more years).\n\nWindows\n•   Support for compiling perl on Windows using Microsoft Visual Studio 2015  (containing\nVisual C++ 14.0) has been added.\n\nThis  version of VC++ includes a completely rewritten C run-time library, some of the\nchanges in which mean that work done to resolve a socket close() bug in perl  #120091\nand  perl  #118059  is  not  workable in its current state with this version of VC++.\nTherefore, we have effectively reverted that bug fix for VS2015 onwards on the  basis\nthat  being  able to build with VS2015 onwards is more important than keeping the bug\nfix.  We may revisit this in the future to attempt to fix the bug again in a way that\nis compatible with VS2015.\n\nThese changes do not affect compilation with GCC or with Visual Studio versions up to\nand including VS2013, i.e., the bug fix is retained (unchanged) for those compilers.\n\nNote that you may experience compatibility problems if you mix a perl built with  GCC\nor  VS  <=  VS2013 with XS modules built with VS2015, or if you mix a perl built with\nVS2015 with XS modules built with GCC or VS  <=  VS2013.   Some  incompatibility  may\narise  because  of  the bug fix that has been reverted for VS2015 builds of perl, but\nthere may well be incompatibility anyway because  of  the  rewritten  CRT  in  VS2015\n(e.g., see discussion at <http://stackoverflow.com/questions/30412951>).\n\n•   It  now  automatically  detects GCC versus Visual C and sets the VC version number on\nWin32.\n\nLinux\nDrop support for Linux a.out executable format. Linux has used ELF for over twenty years.\n\nOpenBSD 6\nOpenBSD 6 still does not support returning \"pid\",  \"gid\",  or  \"uid\"  with  \"SASIGINFO\".\nMake sure to account for it.\n\nFreeBSD\nt/uni/overload.t: Skip hanging test on FreeBSD.\n\nDragonFly BSD\nDragonFly     BSD     now     has    support    for    setproctitle().     [GH    #15703]\n<https://github.com/Perl/perl5/issues/15703>.\n"
                }
            ]
        },
        "Internal Changes": {
            "content": "•   A new API function svsetpvbufsize() allows simultaneously setting the  length  and  the\nallocated size of the buffer in an \"SV\", growing the buffer if necessary.\n\n•   A  new  API  macro SvPVCLEAR() sets its \"SV\" argument to an empty string, like Perl-space\n\"$x = ''\", but with several optimisations.\n\n•   Several new macros and functions for dealing with Unicode and UTF-8-encoded strings  have\nbeen added to the API, as well as some changes in the functionality of existing functions\n(see \"Unicode Support\" in perlapi for more details):\n\n•   New  versions  of  the  API  macros  like \"isALPHAutf8\" and \"toLOWERutf8\" have been\nadded, each with the suffix \"safe\", like \"isSPACEutf8safe\".  These take  an  extra\nparameter,  giving  an  upper  limit  of  how far into the string it is safe to read.\nUsing the old versions could cause attempts to read  beyond  the  end  of  the  input\nbuffer  if  the  UTF-8  is  not  well-formed,  and their use now raises a deprecation\nwarning.  Details are at \"Character classification\" in perlapi.\n\n•   Macros like \"isALPHAutf8\" and \"toLOWERutf8\" now die if they detect that their input\nUTF-8 is malformed.  A deprecation warning had been issued since Perl 5.18.\n\n•   Several new macros for analysing the validity of utf8 sequences. These are:\n\n\"UTF8GOTABOVE31BIT\"  \"UTF8GOTCONTINUATION\"   \"UTF8GOTEMPTY\"   \"UTF8GOTLONG\"\n\"UTF8GOTNONCHAR\"  \"UTF8GOTNONCONTINUATION\"  \"UTF8GOTOVERFLOW\" \"UTF8GOTSHORT\"\n\"UTF8GOTSUPER\"    \"UTF8GOTSURROGATE\"    \"UTF8ISINVARIANT\"     \"UTF8ISNONCHAR\"\n\"UTF8ISSUPER\"    \"UTF8ISSURROGATE\"    \"UVCHRISINVARIANT\"    \"isUTF8CHARflags\"\n\"isSTRICTUTF8CHAR\" \"isC9STRICTUTF8CHAR\"\n\n•   Functions that are all extensions of the \"isutf8string*()\" functions,  that  apply\nvarious restrictions to the UTF-8 recognized as valid:\n\n\"isstrictutf8string\", \"isstrictutf8stringloc\", \"isstrictutf8stringloclen\",\n\n\"isc9strictutf8string\",                             \"isc9strictutf8stringloc\",\n\"isc9strictutf8stringloclen\",\n\n\"isutf8stringflags\", \"isutf8stringlocflags\", \"isutf8stringloclenflags\",\n\n\"isutf8fixedwidthbufflags\",                 \"isutf8fixedwidthbuflocflags\",\n\"isutf8fixedwidthbufloclenflags\".\n\n\"isutf8invariantstring\".                             \"isutf8validpartialchar\".\n\"isutf8validpartialcharflags\".\n\n•   The functions \"utf8ntouvchr\" and  its  derivatives  have  had  several  changes  of\nbehaviour.\n\nCalling them, while passing a string length of 0 is now asserted against in DEBUGGING\nbuilds,  and  otherwise,  returns  the  Unicode  REPLACEMENT CHARACTER.   If you have\nnothing to decode, you shouldn't call the decode function.\n\nThey now return the Unicode REPLACEMENT CHARACTER if called with UTF-8 that  has  the\noverlong malformation and that malformation is allowed by the input parameters.  This\nmalformation  is  where  the  UTF-8 looks valid syntactically, but there is a shorter\nsequence that yields the same code point.  This  has  been  forbidden  since  Unicode\nversion 3.1.\n\nThey  now accept an input flag to allow the overflow malformation.  This malformation\nis when the UTF-8 may be syntactically valid, but the code point it represents is not\ncapable of being represented in the word length  on  the  platform.   What  \"allowed\"\nmeans,  in  this  case, is that the function doesn't return an error, and it advances\nthe parse pointer to beyond the  UTF-8  in  question,  but  it  returns  the  Unicode\nREPLACEMENT  CHARACTER  as  the  value of the code point (since the real value is not\nrepresentable).\n\nThey no longer abandon searching for  other  malformations  when  the  first  one  is\nencountered.    A  call  to  one  of  these  functions  thus  can  generate  multiple\ndiagnostics, instead of just one.\n\n•   validutf8touvchr() has been added to the API (although  it  was  present  in  core\nearlier).  Like  utf8touvchrbuf(),  but  assumes  that the next character is well-\nformed.  Use with caution.\n\n•   A new function, \"utf8ntouvchrerror\", has been added for use by modules  that  need\nto  know  the  details of UTF-8 malformations beyond pass/fail.  Previously, the only\nways to know why a sequence was ill-formed was to capture  and  parse  the  generated\ndiagnostics or to do your own analysis.\n\n•   There  is  now  a  safer  version  of  utf8hop(),  called  utf8hopsafe().   Unlike\nutf8hop(), utf8hopsafe() won't navigate before the beginning or after the  end  of\nthe supplied buffer.\n\n•   Two   new   functions,   utf8hopforward()   and   utf8hopback()  are  similar  to\nutf8hopsafe() but are for when you know which direction you wish to travel.\n\n•   Two new macros which return useful utf8 byte sequences:\n\n\"BOMUTF8\"\n\n\"REPLACEMENTCHARACTERUTF8\"\n\n•   Perl is now built with the \"PERLOPPARENT\"  compiler  define  enabled  by  default.   To\ndisable  it,  use  the  \"PERLNOOPPARENT\"  compiler  define.   This flag alters how the\n\"opsibling\" field is used in \"OP\" structures, and has been  available  optionally  since\nperl 5.22.\n\nSee \"Internal Changes\" in perl5220delta for more details of what this build option does.\n\n•   Three  new  ops, \"OPARGELEM\", \"OPARGDEFELEM\", and \"OPARGCHECK\" have been added.  These\nare intended principally to implement the individual elements of a subroutine  signature,\nplus any overall checking required.\n\n•   The  \"OPPUSHRE\" op has been eliminated and the \"OPSPLIT\" op has been changed from class\n\"LISTOP\" to \"PMOP\".\n\nFormerly the first child of a split would be a \"pushre\", which would have  the  \"split\"'s\nregex  attached  to  it.  Now  the  regex is attached directly to the \"split\" op, and the\n\"pushre\" has been eliminated.\n\n•   The opclass() API function has been added.  This is like the existing OPCLASS()  macro,\nbut  can  more accurately determine what struct an op has been allocated as.  For example\nOPCLASS() might return \"OABASEOPORUNOP\" indicating that ops of this type are  usually\nallocated  as  an  \"OP\"  or  \"UNOP\";  while  opclass()  will  return \"OPclassBASEOP\" or\n\"OPclassUNOP\" as appropriate.\n\n•   All parts of the internals now agree that the \"sassign\" op is a  \"BINOP\";  previously  it\nwas  listed  as  a  \"BASEOP\"  in  regen/opcodes,  which  meant  that several parts of the\ninternals had to be special-cased to accommodate it.  This oddity's  original  motivation\nwas to handle code like \"$x ||= 1\"; that is now handled in a simpler way.\n\n•   The  output  format of the opdump() function (as used by \"perl -Dx\") has changed: it now\ndisplays an \"ASCII-art\" tree structure, and shows more low-level details about  each  op,\nsuch as its address and class.\n\n•   The  \"PADOFFSET\"  type has changed from being unsigned to signed, and several pad-related\nvariables such as \"PLpadix\" have changed from being of type \"I32\" to type \"PADOFFSET\".\n\n•   The \"DEBUGGING\"-mode output for regex compilation and execution has been enhanced.\n\n•   Several obscure SV flags have been eliminated, sometimes  along  with  the  macros  which\nmanipulate  them:  \"SVpbmVALID\", \"SVpbmTAIL\", \"SvTAILon\", \"SvTAILoff\", \"SVreplEVAL\",\n\"SvEVALED\".\n\n•   An OP \"opprivate\" flag has been eliminated: \"OPpRUNTIME\". This used to often get set  on\n\"PMOP\" ops, but had become meaningless over time.\n",
            "subsections": []
        },
        "Selected Bug Fixes": {
            "content": "•   Perl  no  longer panics when switching into some locales on machines with buggy strxfrm()\nimplementations in their libc.  [GH #13768] <https://github.com/Perl/perl5/issues/13768>\n\n•   \" $-{$name} \" would leak an \"AV\" on each access if the regular expression  had  no  named\ncaptures.   The  same applies to access to any hash tied with Tie::Hash::NamedCapture and\n\"all => 1\".  [GH #15882] <https://github.com/Perl/perl5/issues/15882>\n\n•   Attempting to use the deprecated variable $# as the object in an indirect  object  method\ncall   could   cause   a   heap   use   after  free  or  buffer  overflow.   [GH  #15599]\n<https://github.com/Perl/perl5/issues/15599>\n\n•   When checking for an indirect object method call, in some rare  cases  the  parser  could\nreallocate  the  line  buffer  but  then continue to use pointers to the old buffer.  [GH\n#15585] <https://github.com/Perl/perl5/issues/15585>\n\n•   Supplying a glob as the format argument to \"formline\" would cause an  assertion  failure.\n[GH #15862] <https://github.com/Perl/perl5/issues/15862>\n\n•   Code  like \" $value1 =~ qr/.../ ~~ $value2 \" would have the match converted into a \"qr//\"\noperator, leaving extra elements on the stack to confuse any surrounding expression.  [GH\n#15859] <https://github.com/Perl/perl5/issues/15859>\n\n•   Since v5.24 in some obscure cases, a regex  which  included  code  blocks  from  multiple\nsources  (e.g.,  via embedded via \"qr//\" objects) could end up with the wrong current pad\nand       crash       or       give       weird       results.         [GH        #15657]\n<https://github.com/Perl/perl5/issues/15657>\n\n•   Occasionally  local()s  in  a  code block within a patterns weren't being undone when the\npattern    matching    backtracked    over    the    code     block.      [GH     #15056]\n<https://github.com/Perl/perl5/issues/15056>\n\n•   Using  substr()  to modify a magic variable could access freed memory in some cases.  [GH\n#15871] <https://github.com/Perl/perl5/issues/15871>\n\n•   Under \"use utf8\", the entire source code is now checked for being UTF-8 well formed,  not\njust quoted strings as before.  [GH #14973] <https://github.com/Perl/perl5/issues/14973>.\n\n•   The  range operator \"..\" on strings now handles its arguments correctly when in the scope\nof the \"unicodestrings\" feature.  The previous  behaviour  was  sufficiently  unexpected\nthat we believe no correct program could have made use of it.\n\n•   The  \"split\"  operator  did not ensure enough space was allocated for its return value in\nscalar context.  It could then write a single pointer immediately beyond the end  of  the\nmemory       block       allocated       for       the      stack.       [GH      #15749]\n<https://github.com/Perl/perl5/issues/15749>\n\n•   Using a large code point with the \"W\" pack template character  with  the  current  output\nposition  aligned  at  just  the  right  point  could cause a write of a single zero byte\nimmediately   beyond    the    end    of    an    allocated    buffer.     [GH    #15572]\n<https://github.com/Perl/perl5/issues/15572>\n\n•   Supplying  a  format's  picture  argument  as  part of the format argument list where the\npicture specifies modifying the argument could cause an access to the new freed  compiled\nformat.  [GH #15566] <https://github.com/Perl/perl5/issues/15566>\n\n•   The  sort()  operator's built-in numeric comparison function didn't handle large integers\nthat weren't exactly representable by a double.  This now uses  the  same  code  used  to\nimplement the \"<=>\" operator.  [GH #15768] <https://github.com/Perl/perl5/issues/15768>\n\n•   Fix  issues  with  \"/(?{  ...  <<EOF  })/\"  that  broke  Method::Signatures.  [GH #15779]\n<https://github.com/Perl/perl5/issues/15779>\n\n•   Fixed an assertion failure with \"chop\" and \"chomp\", which could be triggered by  \"chop(@x\n=~ tr/1/1/)\".  [GH #15738] <https://github.com/Perl/perl5/issues/15738>.\n\n•   Fixed  a  comment  skipping  error  in patterns under \"/x\"; it could stop skipping a byte\nearly,  which  could  be  in  the   middle   of   a   UTF-8   character.    [GH   #15790]\n<https://github.com/Perl/perl5/issues/15790>.\n\n•   perldb     now     ignores     /dev/tty     on    non-Unix    systems.     [GH    #12244]\n<https://github.com/Perl/perl5/issues/12244>;\n\n•   Fix  assertion   failure   for   \"{}->$x\"   when   $x   isn't   defined.    [GH   #15791]\n<https://github.com/Perl/perl5/issues/15791>.\n\n•   Fix  an  assertion  error  which  could  be triggered when a lookahead string in patterns\nexceeded a minimum length.  [GH #15796] <https://github.com/Perl/perl5/issues/15796>.\n\n•   Only  warn   once   per   literal   number   about   a   misplaced   \"\".    [GH   #9989]\n<https://github.com/Perl/perl5/issues/9989>.\n\n•   The  \"tr///\"  parse code could be looking at uninitialized data after a perse error.  [GH\n#15624] <https://github.com/Perl/perl5/issues/15624>.\n\n•   In a pattern match, a back-reference (\"\\1\") to  an  unmatched  capture  could  read  back\nbeyond     the     start     of     the    string    being    matched.     [GH    #15634]\n<https://github.com/Perl/perl5/issues/15634>.\n\n•   \"use re 'strict'\" is supposed to warn if you use a range (such as \"/(?[  [  X-Y  ]  ])/\")\nwhose  start  and end digit aren't from the same group of 10.  It didn't do that for five\ngroups of mathematical digits starting at \"U+1D7E\".\n\n•   A sub containing a \"forward\" declaration with the same name (e.g., \"sub c {  sub  c;  }\")\ncould      sometimes      crash      or      loop      infinitely.       [GH      #15557]\n<https://github.com/Perl/perl5/issues/15557>\n\n•   A crash in executing a regex with a non-anchored UTF-8 substring against a target  string\nthat      also      used      UTF-8      has      been      fixed.       [GH      #15628]\n<https://github.com/Perl/perl5/issues/15628>\n\n•   Previously, a shebang line like  \"#!perl  -i  u\"  could  be  erroneously  interpreted  as\nrequesting    the    \"-u\"    option.     This    has    been    fixed.     [GH    #15623]\n<https://github.com/Perl/perl5/issues/15623>\n\n•   The regex engine was previously producing incorrect results in some rare situations  when\nbacktracking  past  an alternation that matches only one thing; this showed up as capture\nbuffers ($1, $2, etc.) erroneously  containing  data  from  regex  execution  paths  that\nweren't     actually     executed     for     the     final     match.     [GH    #15666]\n<https://github.com/Perl/perl5/issues/15666>\n\n•   Certain regexes making use of the experimental  \"regexsets\"  feature  could  trigger  an\nassertion       failure.       This      has      been      fixed.       [GH      #15620]\n<https://github.com/Perl/perl5/issues/15620>\n\n•   Invalid assignments to a reference constructor (e.g., \"\\eval=time\") could sometimes crash\nin     addition      to      giving      a      syntax      error.       [GH      #14815]\n<https://github.com/Perl/perl5/issues/14815>\n\n•   The  parser  could  sometimes  crash  if  a bareword came after \"evalbytes\".  [GH #15586]\n<https://github.com/Perl/perl5/issues/15586>\n\n•   Autoloading via a method call would warn erroneously (\"Use of inherited AUTOLOAD for non-\nmethod\") if there was a stub present in the package into  which  the  invocant  had  been\nblessed.    The  warning  is  no  longer  emitted  in  such  circumstances.   [GH  #9094]\n<https://github.com/Perl/perl5/issues/9094>\n\n•   The use of \"splice\" on arrays with non-existent elements could cause other  operators  to\ncrash.  [GH #15577] <https://github.com/Perl/perl5/issues/15577>\n\n•   A  possible  buffer  overrun when a pattern contains a fixed utf8 substring.  [GH #15534]\n<https://github.com/Perl/perl5/issues/15534>\n\n•   Fixed   two   possible   use-after-free   bugs   in   perl's    lexer.     [GH    #15549]\n<https://github.com/Perl/perl5/issues/15549>\n\n•   Fixed  a  crash  with  \"s///l\" where it thought it was dealing with UTF-8 when it wasn't.\n[GH #15543] <https://github.com/Perl/perl5/issues/15543>\n\n•   Fixed a place where the regex parser was not setting the  syntax  error  correctly  on  a\nsyntactically            incorrect            pattern.             [GH            #15565]\n<https://github.com/Perl/perl5/issues/15565>\n\n•   The \"&.\" operator (and the \"&\" operator, when it treats its arguments  as  strings)  were\nfailing  to  append  a  trailing  null  byte  if  at  least one string was marked as utf8\ninternally.  Many code paths (system calls, regexp compilation) still expect there to  be\na  null  byte in the string buffer just past the end of the logical string.  An assertion\nfailure was the result.  [GH #15606] <https://github.com/Perl/perl5/issues/15606>\n\n•   Avoid a heap-after-use  error  in  the  parser  when  creating  an  error  messge  for  a\nsyntactically invalid heredoc.  [GH #15527] <https://github.com/Perl/perl5/issues/15527>\n\n•   Fix   a  segfault  when  run  with  \"-DC\"  options  on  DEBUGGING  builds.   [GH  #15563]\n<https://github.com/Perl/perl5/issues/15563>\n\n•   Fixed the parser error handling in subroutine attributes for an '\":attr(foo\"'  that  does\nnot have an ending '\")\"'.\n\n•   Fix  the  perl  lexer  to  correctly handle a backslash as the last char in quoted-string\ncontext.      This      actually      fixed       two       bugs,       [GH       #15546]\n<https://github.com/Perl/perl5/issues/15546>           and           [GH          #15582]\n<https://github.com/Perl/perl5/issues/15582>.\n\n•   In the API function  \"gvfetchmethodpvnflags\",  rework  separator  parsing  to  prevent\npossible    string    overrun    with   an   invalid   \"len\"   argument.    [GH   #15598]\n<https://github.com/Perl/perl5/issues/15598>\n\n•   Problems with in-place array sorts: code like \"@a = sort { ... } @a\",  where  the  source\nand  destination  of  the sort are the same plain array, are optimised to do less copying\naround.  Two side-effects of this optimisation were that the contents of @a  as  seen  by\nsort routines were partially sorted; and under some circumstances accessing @a during the\nsort  could crash the interpreter.  Both these issues have been fixed, and Sort functions\nsee the original value of @a.  [GH #15387] <https://github.com/Perl/perl5/issues/15387>\n\n•   Non-ASCII string delimiters are now reported correctly in error messages for unterminated\nstrings.  [GH #15469] <https://github.com/Perl/perl5/issues/15469>\n\n•   \"pack(\"p\", ...)\" used to emit its warning (\"Attempt to pack pointer to temporary  value\")\nerroneously in some cases, but has been fixed.\n\n•   @DB::args  is now exempt from \"used once\" warnings.  The warnings only occurred under -w,\nbecause warnings.pm itself uses @DB::args multiple times.\n\n•   The use of built-in arrays or hash slices in a double-quoted string no  longer  issues  a\nwarning  (\"Possible  unintended interpolation...\") if the variable has not been mentioned\nbefore.  This affected code like \"qq|@DB::args|\"  and  \"qq|@SIG{'CHLD',  'HUP'}|\".   (The\nspecial variables \"@-\" and \"@+\" were already exempt from the warning.)\n\n•   \"gethostent\" and similar functions now perform a null check internally, to avoid crashing\nwith   the   torsocks   library.    This  was  a  regression  from  v5.22.   [GH  #15478]\n<https://github.com/Perl/perl5/issues/15478>\n\n•   \"defined *{'!'}\", \"defined *{'['}\", and \"defined *{'-'}\" no longer  leak  memory  if  the\ntypeglob in question has never been accessed before.\n\n•   Mentioning  the same constant twice in a row (which is a syntax error) no longer fails an\nassertion under debugging builds.   This  was  a  regression  from  v5.20.   [GH  #15017]\n<https://github.com/Perl/perl5/issues/15017>\n\n•   Many  issues  relating  to  \"printf  \"%a\"\"  of hexadecimal floating point were fixed.  In\naddition, the \"subnormals\" (formerly known as \"denormals\") floating point numbers are now\nsupported both with the plain IEEE 754 floating point numbers (64-bit or 128-bit) and the\nx86 80-bit \"extended precision\".  Note that subnormal hexadecimal floating point literals\nwill    give    a    warning     about     \"exponent     underflow\".      [GH     #15495]\n<https://github.com/Perl/perl5/issues/15495>                  [GH                 #15503]\n<https://github.com/Perl/perl5/issues/15503>                 [GH                  #15504]\n<https://github.com/Perl/perl5/issues/15504>                  [GH                 #15505]\n<https://github.com/Perl/perl5/issues/15505>                 [GH                  #15510]\n<https://github.com/Perl/perl5/issues/15510>                  [GH                 #15512]\n<https://github.com/Perl/perl5/issues/15512>\n\n•   A regression in v5.24 with \"tr/\\N{U+...}/foo/\" when the code point was  between  128  and\n255 has been fixed.  [GH #15475] <https://github.com/Perl/perl5/issues/15475>.\n\n•   Use  of  a  string  delimiter  whose  code  point  is  above 231 now works correctly on\nplatforms that allow this.  Previously, certain characters, due to truncation,  would  be\nconfused  with other delimiter characters with special meaning (such as \"?\" in \"m?...?\"),\nresulting in inconsistent behaviour.  Note that this is non-portable,  and  is  based  on\nPerl's  extension  to UTF-8, and is probably not displayable nor enterable by any editor.\n[GH #15477] <https://github.com/Perl/perl5/issues/15477>\n\n•   \"@{x\" followed by a newline where \"x\" represents a  control  or  non-ASCII  character  no\nlonger   produces   a   garbled   syntax   error   message   or  a  crash.   [GH  #15518]\n<https://github.com/Perl/perl5/issues/15518>\n\n•   An   assertion   failure   with   \"%:   =   0\"   has    been    fixed.     [GH    #15358]\n<https://github.com/Perl/perl5/issues/15358>\n\n•   In Perl 5.18, the parsing of \"$foo::$bar\" was accidentally changed, such that it would be\ntreated  as  \"$foo.\"::\".$bar\".  The previous behavior, which was to parse it as \"$foo:: .\n$bar\", has been restored.  [GH #15408] <https://github.com/Perl/perl5/issues/15408>\n\n•   Since Perl 5.20, line numbers have been off by one when  perl  is  invoked  with  the  -x\nswitch.  This has been fixed.  [GH #15413] <https://github.com/Perl/perl5/issues/15413>\n\n•   Vivifying   a   subroutine  stub  in  a  deleted  stash  (e.g.,  \"delete  $My::{\"Foo::\"};\n\\&My::Foo::foo\") no longer crashes.  It had begun crashing in  Perl  5.18.   [GH  #15420]\n<https://github.com/Perl/perl5/issues/15420>\n\n•   Some  obscure  cases  of  subroutines and file handles being freed at the same time could\nresult in crashes, but have been fixed.  The crash was  introduced  in  Perl  5.22.   [GH\n#15435] <https://github.com/Perl/perl5/issues/15435>\n\n•   Code that looks for a variable name associated with an uninitialized value could cause an\nassertion  failure  in cases where magic is involved, such as \"$ISA[0][0]\".  This has now\nbeen fixed.  [GH #15364] <https://github.com/Perl/perl5/issues/15364>\n\n•   A crash caused by code generating the warning \"Subroutine STASH::NAME redefined\" in cases\nsuch as \"sub P::f{} undef *P::; *P::f =sub{};\" has been fixed.  In these cases, where the\nSTASH is missing, the warning will  now  appear  as  \"Subroutine  NAME  redefined\".   [GH\n#15368] <https://github.com/Perl/perl5/issues/15368>\n\n•   Fixed  an  assertion  triggered by some code that handles deprecated behavior in formats,\ne.g., in cases like this:\n\nformat STDOUT =\n@\n0\"$x\"\n\n[GH #15366] <https://github.com/Perl/perl5/issues/15366>\n\n•   A possible divide by zero in string transformation code  on  Windows  has  been  avoided,\nfixing     a     crash     when    collating    an    empty    string.     [GH    #15439]\n<https://github.com/Perl/perl5/issues/15439>\n\n•   Some regular expression parsing glitches could lead to assertion  failures  with  regular\nexpressions  such  as  \"/(?<=/\"  and  \"/(?<!/\".   This  has  now been fixed.  [GH #15332]\n<https://github.com/Perl/perl5/issues/15332>\n\n•   \" until ($x = 1) { ... } \" and \" ... until $x  =  1  \"  now  properly  warn  when  syntax\nwarnings are enabled.  [GH #15138] <https://github.com/Perl/perl5/issues/15138>\n\n•   socket()  now leaves the error code returned by the system in $! on failure.  [GH #15383]\n<https://github.com/Perl/perl5/issues/15383>\n\n•   Assignment variants of any bitwise ops under the \"bitwise\" feature  would  crash  if  the\nleft-hand      side      was      an      array      or      hash.       [GH      #15346]\n<https://github.com/Perl/perl5/issues/15346>\n\n•   \"require\" followed by a single colon (as in  \"foo()  ?  require  :  ...\"  is  now  parsed\ncorrectly  as  \"require\"  with  implicit  $,  rather  than  \"require  \"\"\".   [GH #15380]\n<https://github.com/Perl/perl5/issues/15380>\n\n•   Scalar \"keys %hash\" can now be assigned to consistently in all  scalar  lvalue  contexts.\nPreviously it worked for some contexts but not others.\n\n•   List assignment to \"vec\" or \"substr\" with an array or hash for its first argument used to\nresult in crashes or \"Can't coerce\" error messages at run time, unlike scalar assignment,\nwhich  would  give  an  error  at compile time.  List assignment now gives a compile-time\nerror, too.  [GH #15370] <https://github.com/Perl/perl5/issues/15370>\n\n•   Expressions containing an \"&&\" or \"||\" operator (or their synonyms \"and\" and  \"or\")  were\nbeing  compiled  incorrectly  in some cases.  If the left-hand side consisted of either a\nnegated bareword constant or a negated \"do {}\" block containing  a  constant  expression,\nand  the  right-hand  side  consisted  of  a  negated non-foldable expression, one of the\nnegations was effectively ignored.  The same was true  of  \"if\"  and  \"unless\"  statement\nmodifiers,  though  with  the left-hand and right-hand sides swapped.  This long-standing\nbug has now been fixed.  [GH #15285] <https://github.com/Perl/perl5/issues/15285>\n\n•   \"reset\" with an argument no longer crashes when encountering  stash  entries  other  than\nglobs.  [GH #15314] <https://github.com/Perl/perl5/issues/15314>\n\n•   Assignment  of  hashes  to,  and  deletion  of,  typeglobs named *:::::: no longer causes\ncrashes.  [GH #15307] <https://github.com/Perl/perl5/issues/15307>\n\n•   Perl  wasn't  correctly  handling  true/false  values  in  the  LHS  of  a  list  assign;\nspecifically  the  truth  values  returned  by  boolean operators.  This could trigger an\nassertion failure in something like the following:\n\nfor ($x > $y) {\n($, ...) = (...); # here $ is aliased to a truth value\n}\n\nThis       was       a       regression       from       v5.24.        [GH        #15690]\n<https://github.com/Perl/perl5/issues/15690>\n\n•   Assertion    failure    with   user-defined   Unicode-like   properties.    [GH   #15696]\n<https://github.com/Perl/perl5/issues/15696>\n\n•   Fix error message for unclosed \"\\N{\" in a regex.  An unclosed \"\\N{\" could give the  wrong\nerror message: \"\\N{NAME} must be resolved by the lexer\".\n\n•   List  assignment  in list context where the LHS contained aggregates and where there were\nnot enough RHS elements, used to skip  scalar  lvalues.   Previously,  \"(($a,$b,@c,$d)  =\n(1))\" in list context returned \"($a)\"; now it returns \"($a,$b,$d)\".  \"(($a,$b,$c) = (1))\"\nis unchanged: it still returns \"($a,$b,$c)\".  This can be seen in the following:\n\nsub inc { $++ for @ }\ninc(($a,$b,@c,$d) = (10))\n\nFormerly,  the  values  of \"($a,$b,$d)\" would be left as \"(11,undef,undef)\"; now they are\n\"(11,1,1)\".\n\n•   Code like this: \"/(?{ s!!! })/\" could trigger infinite recursion on the C stack (not  the\nnormal  perl  stack)  when  the last successful pattern in scope is itself.  We avoid the\nsegfault by simply forbidding the use of the empty pattern when it would resolve  to  the\ncurrently executing pattern.  [GH #15669] <https://github.com/Perl/perl5/issues/15669>\n\n•   Avoid  reading  beyond  the  end  of the line buffer in perl's lexer when there's a short\nUTF-8 character at the end.  [GH #15531] <https://github.com/Perl/perl5/issues/15531>\n\n•   Alternations in regular expressions were sometimes failing to match a utf8 string against\na utf8 alternate.  [GH #15680] <https://github.com/Perl/perl5/issues/15680>\n\n•   Make \"do \"a\\0b\"\" fail silently (and return \"undef\" and set $!)  instead  of  throwing  an\nerror.  [GH #15676] <https://github.com/Perl/perl5/issues/15676>\n\n•   \"chdir\" with no argument didn't ensure that there was stack space available for returning\nits result.  [GH #15569] <https://github.com/Perl/perl5/issues/15569>\n\n•   All  error  messages  related to \"do\" now refer to \"do\"; some formerly claimed to be from\n\"require\" instead.\n\n•   Executing \"undef $x\" where $x is  tied  or  magical  no  longer  incorrectly  blames  the\nvariable for an uninitialized-value warning encountered by the tied/magical code.\n\n•   Code  like  \"$x = $x . \"a\"\" was incorrectly failing to yield a use of uninitialized value\nwarning when $x was a lexical variable with an undefined value. That has now been  fixed.\n[GH #15269] <https://github.com/Perl/perl5/issues/15269>\n\n•   \"undef  *; shift\" or \"undef *; pop\" inside a subroutine, with no argument to \"shift\" or\n\"pop\", began crashing in Perl 5.14, but has now been fixed.\n\n•   \"string$scalar->$*\" now correctly prefers concatenation overloading to string overloading\nif \"$scalar->$*\"  returns  an  overloaded  object,  bringing  it  into  consistency  with\n$$scalar.\n\n•   \"/@0{0*->@*/*0\"  and  similar  contortions  used  to  crash, but no longer do, but merely\nproduce a syntax error.  [GH #15333] <https://github.com/Perl/perl5/issues/15333>\n\n•   \"do\" or \"require\" with  an  argument  which  is  a  reference  or  typeglob  which,  when\nstringified,  contains  a null character, started crashing in Perl 5.20, but has now been\nfixed.  [GH #15337] <https://github.com/Perl/perl5/issues/15337>\n\n•   Improve the error message for a missing  tie()  package/method.  This  brings  the  error\nmessages in line with the ones used for normal method calls.\n\n•   Parsing    bad    POSIX    charclasses    no    longer   leaks   memory.    [GH   #15382]\n<https://github.com/Perl/perl5/issues/15382>\n",
            "subsections": []
        },
        "Known Problems": {
            "content": "•   G++ 6 handles subnormal (denormal) floating point values differently than gcc 6 or g++  5\nresulting  in  \"flush-to-zero\".  The  end result is that if you specify very small values\nusing the hexadecimal floating point format, like \"0x1.fffffffffffffp-1022\", they  become\nzeros.  [GH #15990] <https://github.com/Perl/perl5/issues/15990>\n",
            "subsections": []
        },
        "Errata From Previous Releases": {
            "content": "•   Fixed  issues  with recursive regexes.  The behavior was fixed in Perl 5.24.  [GH #14935]\n<https://github.com/Perl/perl5/issues/14935>\n",
            "subsections": []
        },
        "Obituary": {
            "content": "Jon Portnoy (AVENJ), a prolific Perl author and admired Gentoo community member,  has  passed\naway  on  August  10,  2016.   He  will  be remembered and missed by all those who he came in\ncontact with, and enriched with his intellect, wit, and spirit.\n\nIt is with great sadness that we also note Kip Hampton's passing.  Probably best known as the\nauthor of the Perl & XML column on XML.com, he was a core contributor to AxKit, an XML server\nplatform that became an Apache Foundation project.  He was a frequent speaker  in  the  early\ndays  at  OSCON, and most recently at YAPC::NA in Madison.  He was frequently on irc.perl.org\nas ubu, generally in the #axkit-dahut community, the group responsible for YAPC::NA Asheville\nin 2011.\n\nKip and his constant contributions to the community will be greatly missed.\n",
            "subsections": []
        },
        "Acknowledgements": {
            "content": "Perl 5.26.0 represents approximately 13 months of development since Perl 5.24.0 and  contains\napproximately 360,000 lines of changes across 2,600 files from 86 authors.\n\nExcluding  auto-generated  files,  documentation  and release tools, there were approximately\n230,000 lines of changes to 1,800 .pm, .t, .c and .h files.\n\nPerl continues to flourish into its third decade thanks to a vibrant community of  users  and\ndevelopers.   The following people are known to have contributed the improvements that became\nPerl 5.26.0:\n\nAaron Crane, Abigail, Ævar Arnfjörð Bjarmason, Alex Vandiver, Andreas König, Andreas Voegele,\nAndrew Fresh, Andy Lester, Aristotle Pagaltzis, Chad Granum, Chase Whitener,  Chris  'BinGOs'\nWilliams,  Chris  Lamb,  Christian  Hansen,  Christian Millour, Colin Newell, Craig A. Berry,\nDagfinn Ilmari Mannsåker, Dan Collins, Daniel Dragan, Dave Cross, Dave Rolsky, David  Golden,\nDavid  H.   Gutteridge,  David  Mitchell, Dominic Hargreaves, Doug Bell, E. Choroba, Ed Avis,\nFather Chrysostomos, François Perrad, Hauke D, H.Merijn Brand,  Hugo  van  der  Sanden,  Ivan\nPozdeev,  James  E  Keenan, James Raspass, Jarkko Hietaniemi, Jerry D. Hedden, Jim Cromie, J.\nNick Koston, John Lightsey, Karen Etheridge, Karl Williamson,  Leon  Timmermans,  Lukas  Mai,\nMatthew  Horsfall, Maxwell Carey, Misty De Meo, Neil Bowers, Nicholas Clark, Nicolas R., Niko\nTyni, Pali, Paul Marquess, Peter Avalos, Petr  Písař,  Pino  Toscano,  Rafael  Garcia-Suarez,\nReini  Urban, Renee Baecker, Ricardo Signes, Richard Levitte, Rick Delaney, Salvador Fandiño,\nSamuel Thibault,  Sawyer  X,  Sébastien  Aperghis-Tramoni,  Sergey  Aleynikov,  Shlomi  Fish,\nSmylers,  Stefan Seifert, Steffen Müller, Stevan Little, Steve Hay, Steven Humphrey, Sullivan\nBeck, Theo Buehler, Thomas  Sibley,  Todd  Rinaldo,  Tomasz  Konojacki,  Tony  Cook,  Unicode\nConsortium, Yaroslav Kuzmin, Yves Orton, Zefram.\n\nThe  list  above is almost certainly incomplete as it is automatically generated from version\ncontrol history.  In particular, it does not include the names of the (very much appreciated)\ncontributors who reported issues to the Perl bug tracker.\n\nMany of the changes included in this version originated  in  the  CPAN  modules  included  in\nPerl's core.  We're grateful to the entire CPAN community for helping Perl to flourish.\n\nFor  a  more  complete  list of all of Perl's historical contributors, please see the AUTHORS\nfile in the Perl source distribution.\n",
            "subsections": []
        },
        "Reporting Bugs": {
            "content": "If  you  find  what  you  think  is  a  bug,  you  might  check  the  perl  bug  database  at\n<https://rt.perl.org/>.   There  may  also be information at <http://www.perl.org/>, the Perl\nHome Page.\n\nIf you believe you have an unreported bug, please run the perlbug program included with  your\nrelease.  Be sure to trim your bug down to a tiny but sufficient test case.  Your bug report,\nalong  with the output of \"perl -V\", will be sent off to \"perlbug@perl.org\" to be analysed by\nthe Perl porting team.\n\nIf the bug you are reporting has security implications which make it inappropriate to send to\na publicly archived mailing list, then see \"SECURITY VULNERABILITY  CONTACT  INFORMATION\"  in\nperlsec for details of how to report the issue.\n",
            "subsections": []
        },
        "Give Thanks": {
            "content": "If  you wish to thank the Perl 5 Porters for the work we had done in Perl 5, you can do so by\nrunning the \"perlthanks\" program:\n\nperlthanks\n\nThis will send an email to the Perl 5 Porters list with your show of thanks.\n",
            "subsections": []
        },
        "SEE ALSO": {
            "content": "The Changes file for an explanation of how to view exhaustive details on what changed.\n\nThe INSTALL file for how to build Perl.\n\nThe README file for general stuff.\n\nThe Artistic and Copying files for copyright information.\n\nperl v5.38.2                                 2026-06-12                             PERL5260DELTA(1)",
            "subsections": []
        }
    },
    "summary": "perl5260delta - what is new for perl v5.26.0",
    "flags": [],
    "examples": [],
    "see_also": []
}