In perl.git, the branch sawyerx/new-rmg-maker has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/705821546fe3db90097b481dbcc726b8db12cac8?hp=5bbf443c9d68ff0a358e4467bca630fdd47d269e>

  discards  5bbf443c9d68ff0a358e4467bca630fdd47d269e (commit)
  discards  5fda6fd30559f029fa6a93bc99e6409eaadb1078 (commit)
- Log -----------------------------------------------------------------
commit 705821546fe3db90097b481dbcc726b8db12cac8
Author: Sawyer X <[email protected]>
Date:   Sun May 14 12:24:07 2017 +0200

    Replace Release Managers Guide (RMG) with new version:
    
    Many of the mistakes made by me during a release has to do with the
    confusing instructions in the guide.
    
    * Some steps are mentioned in different order
    * Some steps are mentioned (and noted to *NOT* do)
    * The confusion between "MAINT" and "BLEAD-FINAL", and "BLEAD-FINAL"
      and "BLEAD-POINT".
    
    This generator generates a checklist with only the instruction you
    *will* have to perform. Any steps that mentions they must be skipped
    for the release will not be included in the end-result.
    
    Unlike the previous guide, you need not know the type of the release
    you do. Instead, you give the version you want to release and it
    generates the appropriate one for you.
    
    All the following incantations work:
    
        perl Porting/make-rmg-checklist --version 5.26.0-RC2 # RC
        perl Porting/make-rmg-checklist --version 5.26.0     # BLEAD-FINAL
        perl Porting/make-rmg-checklist --version 5.27.0     # BLEAD-POINT
        perl Porting/make-rmg-checklist --version 5.27.1     # BLEAD-POINT
        perl Porting/make-rmg-checklist --version 5.26.1     # MAINT
    
    Extra benefit: Apparently it includes additional checklist steps
    at the top that somehow are not included when you currently generate.
    
    Downside: HTML is not yet supported.
-----------------------------------------------------------------------

Summary of changes:
 .travis.yml                                        |    31 +
 AUTHORS                                            |     5 +-
 Configure                                          |    21 +-
 Cross/config.sh-arm-linux                          |    46 +-
 Cross/config.sh-arm-linux-n770                     |    46 +-
 INSTALL                                            |   121 +-
 MANIFEST                                           |   128 +-
 META.json                                          |     6 +-
 META.yml                                           |     2 +-
 Makefile.SH                                        |     8 +-
 NetWare/Makefile                                   |     4 +-
 NetWare/config_H.wc                                |    10 +-
 Porting/Maintainers.pl                             |    55 +-
 Porting/bench.pl                                   |   814 +-
 Porting/checkAUTHORS.pl                            |     1 +
 Porting/cmpVERSION.pl                              |    10 +
 Porting/config.sh                                  |    48 +-
 Porting/config_H                                   |    18 +-
 Porting/deparse-skips.txt                          |   239 +-
 Porting/epigraphs.pod                              |    77 +
 Porting/make-rmg-checklist                         |     6 +-
 Porting/perldelta_template.pod                     |    26 +
 Porting/release_managers_guide.pod                 |     5 +
 Porting/release_schedule.pod                       |    55 +-
 README.haiku                                       |     4 +-
 README.macosx                                      |     8 +-
 README.os2                                         |     2 +-
 README.synology                                    |    14 +-
 README.vms                                         |     4 +-
 README.win32                                       |    23 +-
 XSUB.h                                             |     8 +-
 av.c                                               |     5 +-
 charclass_invlists.h                               |  3457 +-
 cop.h                                              |    31 +
 cpan/Archive-Tar/lib/Archive/Tar.pm                |     5 +-
 cpan/Archive-Tar/lib/Archive/Tar/Constant.pm       |     2 +-
 cpan/Archive-Tar/lib/Archive/Tar/File.pm           |     2 +-
 cpan/Devel-PPPort/PPPort_pm.PL                     |     4 +-
 cpan/Devel-PPPort/PPPort_xs.PL                     |     2 +-
 cpan/Devel-PPPort/mktests.PL                       |     2 +-
 cpan/Devel-PPPort/parts/embed.fnc                  |     2 +-
 cpan/Devel-PPPort/ppport_h.PL                      |     2 +-
 cpan/Devel-PPPort/soak                             |     2 +-
 cpan/ExtUtils-Install/lib/ExtUtils/Install.pm      |   192 +-
 cpan/ExtUtils-Install/lib/ExtUtils/Installed.pm    |     2 +-
 cpan/ExtUtils-Install/lib/ExtUtils/Packlist.pm     |     2 +-
 cpan/ExtUtils-Install/t/Install.t                  |    14 +-
 cpan/ExtUtils-Install/t/InstallWithMM.t            |     2 +-
 cpan/ExtUtils-Install/t/Installed.t                |     3 +
 .../t/lib/MakeMaker/Test/Setup/BFD.pm              |    12 +
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command.pm    |     2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm |     5 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm    |     2 +-
 .../ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm |     2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm         |     2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm     |    26 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm     |    17 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm    |     2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm  |     2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm     |     2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm  |     2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm   |     2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm     |     2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm     |     2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm     |     2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm    |     2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm    |    38 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm     |     2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm     |     2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm   |     2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm   |     2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm         |     2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm  |    26 +-
 .../lib/ExtUtils/MakeMaker/Config.pm               |     2 +-
 .../lib/ExtUtils/MakeMaker/FAQ.pod                 |    18 +-
 .../lib/ExtUtils/MakeMaker/Locale.pm               |     2 +-
 .../lib/ExtUtils/MakeMaker/Tutorial.pod            |     4 +-
 .../lib/ExtUtils/MakeMaker/version.pm              |     2 +-
 .../lib/ExtUtils/MakeMaker/version/regex.pm        |     2 +-
 .../ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm |     2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm |     2 +-
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm    |     2 +-
 cpan/ExtUtils-MakeMaker/t/03-xsstatic.t            |     3 -
 cpan/ExtUtils-MakeMaker/t/basic.t                  |    16 +-
 cpan/ExtUtils-MakeMaker/t/eu_command.t             |    13 +-
 .../t/lib/MakeMaker/Test/Setup/XS.pm               |    77 +-
 cpan/ExtUtils-MakeMaker/t/metafile_data.t          |   106 +-
 cpan/ExtUtils-MakeMaker/t/os_unsupported.t         |    15 +
 cpan/File-Path/lib/File/Path.pm                    |   491 +-
 cpan/File-Path/t/FilePathTest.pm                   |    44 +-
 cpan/File-Path/t/Path.t                            |   276 +-
 cpan/File-Path/t/Path_root.t                       |    40 +-
 cpan/File-Path/t/Path_win32.t                      |    36 +-
 cpan/Filter-Util-Call/Call.pm                      |     8 +-
 cpan/Filter-Util-Call/Call.xs                      |     2 +-
 cpan/Filter-Util-Call/filter-util.pl               |    12 +-
 cpan/Filter-Util-Call/t/call.t                     |    49 +-
 cpan/Filter-Util-Call/t/rt_101033.t                |     2 +-
 cpan/Filter-Util-Call/t/rt_54452-rebless.t         |     3 +-
 cpan/Getopt-Long/lib/Getopt/Long.pm                |    46 +-
 cpan/IO-Socket-IP/lib/IO/Socket/IP.pm              |     6 +-
 cpan/IPC-Cmd/lib/IPC/Cmd.pm                        |    31 +-
 cpan/JSON-PP/bin/json_pp                           |    11 +-
 cpan/JSON-PP/lib/JSON/PP.pm                        |  1582 +-
 cpan/JSON-PP/lib/JSON/PP/Boolean.pm                |    23 +-
 cpan/JSON-PP/t/001_utf8.t                          |     2 +-
 cpan/JSON-PP/t/002_error.t                         |     2 +-
 cpan/JSON-PP/t/003_types.t                         |     2 +-
 cpan/JSON-PP/t/006_pc_pretty.t                     |     6 +-
 cpan/JSON-PP/t/007_pc_esc.t                        |    10 +-
 cpan/JSON-PP/t/008_pc_base.t                       |     4 +-
 cpan/JSON-PP/t/009_pc_extra_number.t               |     4 +-
 cpan/JSON-PP/t/010_pc_keysort.t                    |     4 +-
 cpan/JSON-PP/t/011_pc_expo.t                       |     6 +-
 cpan/JSON-PP/t/012_blessed.t                       |     2 +-
 cpan/JSON-PP/t/014_latin1.t                        |     2 +-
 cpan/JSON-PP/t/015_prefix.t                        |     2 +-
 cpan/JSON-PP/t/016_tied.t                          |     2 +-
 cpan/JSON-PP/t/017_relaxed.t                       |     2 +-
 cpan/JSON-PP/t/018_json_checker.t                  |     9 +-
 cpan/JSON-PP/t/019_incr.t                          |     4 +-
 cpan/JSON-PP/t/020_unknown.t                       |     4 +-
 cpan/JSON-PP/t/021_evans_bugrep.t                  |     2 +-
 cpan/JSON-PP/t/099_binary.t                        |     4 +-
 cpan/JSON-PP/t/110_bignum.t                        |    15 +-
 cpan/JSON-PP/t/113_overloaded_eq.t                 |     2 -
 cpan/JSON-PP/t/114_decode_prefix.t                 |     2 -
 cpan/JSON-PP/t/116_incr_parse_fixed.t              |     2 -
 cpan/JSON-PP/t/117_numbers.t                       |    23 +
 cpan/JSON-PP/t/gh_28_json_test_suite.t             |    59 +
 cpan/JSON-PP/t/gh_29_trailing_false_value.t        |    13 +
 cpan/JSON-PP/t/rt_116998_wrong_character_offset.t  |    22 +
 cpan/JSON-PP/t/rt_90071_incr_parse.t               |    29 +
 cpan/JSON-PP/t/zero-mojibake.t                     |     2 -
 cpan/Locale-Codes/lib/Locale/Codes.pm              |   702 +-
 cpan/Locale-Codes/lib/Locale/Codes.pod             |   536 +-
 cpan/Locale-Codes/lib/Locale/Codes/API.pod         |   335 -
 cpan/Locale-Codes/lib/Locale/Codes/Changes.pod     |    80 +-
 cpan/Locale-Codes/lib/Locale/Codes/Constants.pm    |   328 +-
 cpan/Locale-Codes/lib/Locale/Codes/Country.pm      |    76 +-
 cpan/Locale-Codes/lib/Locale/Codes/Country.pod     |   168 +-
 .../Locale-Codes/lib/Locale/Codes/Country_Codes.pm |  1142 +-
 .../lib/Locale/Codes/Country_Retired.pm            |     8 +-
 cpan/Locale-Codes/lib/Locale/Codes/Currency.pm     |    74 +-
 cpan/Locale-Codes/lib/Locale/Codes/Currency.pod    |   102 +-
 .../lib/Locale/Codes/Currency_Codes.pm             |    16 +-
 .../lib/Locale/Codes/Currency_Retired.pm           |     4 +-
 cpan/Locale-Codes/lib/Locale/Codes/LangExt.pm      |    75 +-
 cpan/Locale-Codes/lib/Locale/Codes/LangExt.pod     |    98 +-
 .../Locale-Codes/lib/Locale/Codes/LangExt_Codes.pm |   310 +-
 .../lib/Locale/Codes/LangExt_Retired.pm            |     6 +-
 cpan/Locale-Codes/lib/Locale/Codes/LangFam.pm      |    75 +-
 cpan/Locale-Codes/lib/Locale/Codes/LangFam.pod     |    98 +-
 .../Locale-Codes/lib/Locale/Codes/LangFam_Codes.pm |     4 +-
 .../lib/Locale/Codes/LangFam_Retired.pm            |     2 +-
 cpan/Locale-Codes/lib/Locale/Codes/LangVar.pm      |    76 +-
 cpan/Locale-Codes/lib/Locale/Codes/LangVar.pod     |    98 +-
 .../Locale-Codes/lib/Locale/Codes/LangVar_Codes.pm |   464 +-
 .../lib/Locale/Codes/LangVar_Retired.pm            |     4 +-
 cpan/Locale-Codes/lib/Locale/Codes/Language.pm     |    75 +-
 cpan/Locale-Codes/lib/Locale/Codes/Language.pod    |   105 +-
 .../lib/Locale/Codes/Language_Codes.pm             | 32921 ++++++++++---------
 .../lib/Locale/Codes/Language_Retired.pm           |    30 +-
 cpan/Locale-Codes/lib/Locale/Codes/Script.pm       |    74 +-
 cpan/Locale-Codes/lib/Locale/Codes/Script.pod      |   101 +-
 cpan/Locale-Codes/lib/Locale/Codes/Script_Codes.pm |  2107 +-
 .../lib/Locale/Codes/Script_Retired.pm             |     4 +-
 cpan/Locale-Codes/lib/Locale/Codes/Types.pod       |   414 +
 cpan/Locale-Codes/lib/Locale/Country.pm            |   104 +-
 cpan/Locale-Codes/lib/Locale/Country.pod           |   168 +-
 cpan/Locale-Codes/lib/Locale/Currency.pm           |   104 +-
 cpan/Locale-Codes/lib/Locale/Currency.pod          |   102 +-
 cpan/Locale-Codes/lib/Locale/Language.pm           |   104 +-
 cpan/Locale-Codes/lib/Locale/Language.pod          |   105 +-
 cpan/Locale-Codes/lib/Locale/Script.pm             |   104 +-
 cpan/Locale-Codes/lib/Locale/Script.pod            |   101 +-
 cpan/Locale-Codes/t/country.t                      |    47 -
 cpan/Locale-Codes/t/country_func.t                 |    27 +
 cpan/Locale-Codes/t/country_old.t                  |    32 +-
 cpan/Locale-Codes/t/country_oo.t                   |    27 +
 cpan/Locale-Codes/t/currency.t                     |    47 -
 cpan/Locale-Codes/t/currency_func.t                |    27 +
 cpan/Locale-Codes/t/currency_old.t                 |    32 +-
 cpan/Locale-Codes/t/currency_oo.t                  |    27 +
 cpan/Locale-Codes/t/do_tests.pl                    |   328 +
 cpan/Locale-Codes/t/langext.t                      |    47 -
 cpan/Locale-Codes/t/langext_func.t                 |    27 +
 cpan/Locale-Codes/t/langext_oo.t                   |    27 +
 cpan/Locale-Codes/t/langfam.t                      |    47 -
 cpan/Locale-Codes/t/langfam_func.t                 |    27 +
 cpan/Locale-Codes/t/langfam_oo.t                   |    27 +
 cpan/Locale-Codes/t/language.t                     |    47 -
 cpan/Locale-Codes/t/language_func.t                |    27 +
 cpan/Locale-Codes/t/language_old.t                 |    32 +-
 cpan/Locale-Codes/t/language_oo.t                  |    27 +
 cpan/Locale-Codes/t/langvar.t                      |    47 -
 cpan/Locale-Codes/t/langvar_func.t                 |    27 +
 cpan/Locale-Codes/t/langvar_oo.t                   |    27 +
 cpan/Locale-Codes/t/script.t                       |    47 -
 cpan/Locale-Codes/t/script_func.t                  |    27 +
 cpan/Locale-Codes/t/script_old.t                   |    32 +-
 cpan/Locale-Codes/t/script_oo.t                    |    27 +
 cpan/Locale-Codes/t/testfunc.pl                    |     2 +-
 cpan/Locale-Codes/t/vals.pl                        |   212 -
 cpan/Locale-Codes/t/vals_country.pl                |    60 +-
 cpan/Locale-Codes/t/vals_currency.pl               |    12 +-
 cpan/Locale-Codes/t/vals_langext.pl                |     7 +-
 cpan/Locale-Codes/t/vals_langfam.pl                |     7 +-
 cpan/Locale-Codes/t/vals_language.pl               |     8 +-
 cpan/Locale-Codes/t/vals_langvar.pl                |     7 +-
 cpan/Locale-Codes/t/vals_script.pl                 |     9 +-
 cpan/Math-BigRat/lib/Math/BigRat.pm                |    28 +-
 cpan/Math-BigRat/t/rt121139.t                      |    16 +
 cpan/Scalar-List-Utils/ListUtil.xs                 |   105 +-
 cpan/Scalar-List-Utils/Makefile.PL                 |     2 +-
 cpan/Scalar-List-Utils/lib/List/Util.pm            |    11 +-
 cpan/Scalar-List-Utils/lib/List/Util/XS.pm         |     2 +-
 cpan/Scalar-List-Utils/lib/Scalar/Util.pm          |     2 +-
 cpan/Scalar-List-Utils/lib/Sub/Util.pm             |     2 +-
 cpan/Scalar-List-Utils/t/lln.t                     |    10 +-
 cpan/Scalar-List-Utils/t/pair.t                    |    12 +-
 cpan/Scalar-List-Utils/t/uniq.t                    |     7 +-
 cpan/Test-Harness/lib/App/Prove.pm                 |     4 +-
 cpan/Test-Harness/lib/App/Prove/State.pm           |     4 +-
 cpan/Test-Harness/lib/App/Prove/State/Result.pm    |     4 +-
 .../lib/App/Prove/State/Result/Test.pm             |     4 +-
 cpan/Test-Harness/lib/TAP/Base.pm                  |     4 +-
 cpan/Test-Harness/lib/TAP/Formatter/Base.pm        |     4 +-
 cpan/Test-Harness/lib/TAP/Formatter/Color.pm       |     4 +-
 cpan/Test-Harness/lib/TAP/Formatter/Console.pm     |     4 +-
 .../lib/TAP/Formatter/Console/ParallelSession.pm   |     4 +-
 .../lib/TAP/Formatter/Console/Session.pm           |     4 +-
 cpan/Test-Harness/lib/TAP/Formatter/File.pm        |     4 +-
 .../Test-Harness/lib/TAP/Formatter/File/Session.pm |     4 +-
 cpan/Test-Harness/lib/TAP/Formatter/Session.pm     |     4 +-
 cpan/Test-Harness/lib/TAP/Harness.pm               |     4 +-
 cpan/Test-Harness/lib/TAP/Harness/Env.pm           |     4 +-
 cpan/Test-Harness/lib/TAP/Object.pm                |     4 +-
 cpan/Test-Harness/lib/TAP/Parser.pm                |     4 +-
 cpan/Test-Harness/lib/TAP/Parser/Aggregator.pm     |     4 +-
 cpan/Test-Harness/lib/TAP/Parser/Grammar.pm        |     4 +-
 cpan/Test-Harness/lib/TAP/Parser/Iterator.pm       |     4 +-
 cpan/Test-Harness/lib/TAP/Parser/Iterator/Array.pm |     4 +-
 .../lib/TAP/Parser/Iterator/Process.pm             |     4 +-
 .../Test-Harness/lib/TAP/Parser/Iterator/Stream.pm |     4 +-
 .../Test-Harness/lib/TAP/Parser/IteratorFactory.pm |     4 +-
 cpan/Test-Harness/lib/TAP/Parser/Multiplexer.pm    |     4 +-
 cpan/Test-Harness/lib/TAP/Parser/Result.pm         |     4 +-
 cpan/Test-Harness/lib/TAP/Parser/Result/Bailout.pm |     4 +-
 cpan/Test-Harness/lib/TAP/Parser/Result/Comment.pm |     4 +-
 cpan/Test-Harness/lib/TAP/Parser/Result/Plan.pm    |     4 +-
 cpan/Test-Harness/lib/TAP/Parser/Result/Pragma.pm  |     4 +-
 cpan/Test-Harness/lib/TAP/Parser/Result/Test.pm    |     4 +-
 cpan/Test-Harness/lib/TAP/Parser/Result/Unknown.pm |     4 +-
 cpan/Test-Harness/lib/TAP/Parser/Result/Version.pm |     4 +-
 cpan/Test-Harness/lib/TAP/Parser/Result/YAML.pm    |     4 +-
 cpan/Test-Harness/lib/TAP/Parser/ResultFactory.pm  |     4 +-
 cpan/Test-Harness/lib/TAP/Parser/Scheduler.pm      |     4 +-
 cpan/Test-Harness/lib/TAP/Parser/Scheduler/Job.pm  |     4 +-
 .../lib/TAP/Parser/Scheduler/Spinner.pm            |     4 +-
 cpan/Test-Harness/lib/TAP/Parser/Source.pm         |     4 +-
 cpan/Test-Harness/lib/TAP/Parser/SourceHandler.pm  |     4 +-
 .../lib/TAP/Parser/SourceHandler/Executable.pm     |     4 +-
 .../lib/TAP/Parser/SourceHandler/File.pm           |     4 +-
 .../lib/TAP/Parser/SourceHandler/Handle.pm         |     4 +-
 .../lib/TAP/Parser/SourceHandler/Perl.pm           |     4 +-
 .../lib/TAP/Parser/SourceHandler/RawTAP.pm         |     4 +-
 cpan/Test-Harness/lib/TAP/Parser/YAMLish/Reader.pm |     4 +-
 cpan/Test-Harness/lib/TAP/Parser/YAMLish/Writer.pm |     4 +-
 cpan/Test-Harness/lib/Test/Harness.pm              |     4 +-
 cpan/Test-Harness/t/nofork-mux.t                   |     2 +-
 cpan/Time-Piece/Piece.pm                           |   312 +-
 cpan/Time-Piece/Piece.xs                           |   301 +-
 cpan/Time-Piece/Seconds.pm                         |    23 +-
 cpan/Time-Piece/t/02core.t                         |    60 +-
 cpan/Time-Piece/t/02core_dst.t                     |    15 +-
 cpan/Time-Piece/t/03compare.t                      |    10 +-
 cpan/Time-Piece/t/07arith.t                        |    40 +-
 cpan/version/lib/version.pm                        |     6 +-
 cpan/version/lib/version/regex.pm                  |    16 +-
 cpan/version/t/01base.t                            |     8 +-
 cpan/version/t/02derived.t                         |     8 +-
 cpan/version/t/03require.t                         |     8 +-
 cpan/version/t/04strict_lax.t                      |    15 +
 cpan/version/t/05sigdie.t                          |     2 +-
 cpan/version/t/06noop.t                            |     2 +-
 cpan/version/t/07locale.t                          |     2 +-
 cpan/version/t/08_corelist.t                       |     2 +-
 cpan/version/t/09_list_util.t                      |     2 +-
 cpan/version/t/11_taint.t                          |    24 +
 dist/Attribute-Handlers/lib/Attribute/Handlers.pm  |     8 +-
 dist/Module-CoreList/Changes                       |    11 +-
 dist/Module-CoreList/MANIFEST                      |     1 +
 dist/Module-CoreList/corelist                      |    79 +-
 dist/Module-CoreList/lib/Module/CoreList.pm        |   256 +-
 .../lib/Module/CoreList/TieHashDelta.pm            |     2 +-
 dist/Module-CoreList/lib/Module/CoreList/Utils.pm  |    23 +-
 dist/Module-CoreList/t/maintainer.t                |    31 +
 dist/Storable/Storable.pm                          |     2 +-
 dist/Storable/Storable.xs                          |     4 +-
 dist/Time-HiRes/Changes                            |     5 +
 dist/Time-HiRes/HiRes.pm                           |     2 +-
 dist/if/if.pm                                      |    11 +-
 dist/threads-shared/lib/threads/shared.pm          |     4 +-
 dist/threads-shared/shared.xs                      |     5 +-
 dist/threads/lib/threads.pm                        |     4 +-
 dist/threads/t/exit.t                              |    10 +-
 dist/threads/t/problems.t                          |    52 +-
 dist/threads/t/thread.t                            |     2 +-
 dist/threads/t/unique.t                            |    81 +
 dist/threads/threads.xs                            |     5 +-
 doio.c                                             |    51 +-
 doop.c                                             |   311 +-
 dquote_inline.h                                    |     6 +-
 dump.c                                             |    19 +-
 ebcdic_tables.h                                    |     6 +-
 embed.fnc                                          |    57 +-
 embed.h                                            |    15 +-
 embedvar.h                                         |     5 +-
 ext/B/B/Concise.pm                                 |     4 +-
 ext/B/B/Terse.pm                                   |     8 +-
 ext/B/O.pm                                         |    10 +-
 ext/File-Glob/bsd_glob.c                           |    64 +-
 ext/File-Glob/t/rt131211.t                         |    99 +
 ext/GDBM_File/GDBM_File.pm                         |     4 +-
 ext/Hash-Util/t/Util.t                             |     4 +-
 ext/Hash-Util/t/builtin.t                          |    10 +-
 ext/PerlIO-scalar/scalar.pm                        |     2 +-
 ext/PerlIO-scalar/scalar.xs                        |     2 +-
 ext/PerlIO-via/t/thread.t                          |    73 +
 ext/PerlIO-via/t/via.t                             |    56 +-
 ext/PerlIO-via/via.pm                              |     2 +-
 ext/PerlIO-via/via.xs                              |    59 +-
 ext/XS-APItest/APItest.pm                          |     2 +-
 ext/XS-APItest/APItest.xs                          |     2 +-
 ext/XS-APItest/numeric.xs                          |     2 +-
 ext/XS-APItest/t/{handy0.t => handy00.t}           |     0
 ext/XS-APItest/t/{handy1.t => handy01.t}           |     0
 ext/XS-APItest/t/{handy2.t => handy02.t}           |     0
 ext/XS-APItest/t/{handy3.t => handy03.t}           |     0
 ext/XS-APItest/t/{handy4.t => handy04.t}           |     0
 ext/XS-APItest/t/{handy5.t => handy05.t}           |     0
 ext/XS-APItest/t/{handy6.t => handy06.t}           |     0
 ext/XS-APItest/t/{handy7.t => handy07.t}           |     0
 ext/XS-APItest/t/{handy8.t => handy08.t}           |     0
 ext/XS-APItest/t/{handy9.t => handy09.t}           |     0
 ext/XS-APItest/t/utf8.t                            |    30 +-
 ext/XS-APItest/t/utf8_setup.pl                     |     2 +
 ext/XS-APItest/t/{utf8_warn0.t => utf8_warn00.t}   |     0
 ext/XS-APItest/t/{utf8_warn1.t => utf8_warn01.t}   |     0
 ext/XS-APItest/t/{utf8_warn2.t => utf8_warn02.t}   |     0
 ext/XS-APItest/t/{utf8_warn3.t => utf8_warn03.t}   |     0
 ext/XS-APItest/t/{utf8_warn4.t => utf8_warn04.t}   |     0
 ext/XS-APItest/t/{utf8_warn5.t => utf8_warn05.t}   |     0
 ext/XS-APItest/t/{utf8_warn6.t => utf8_warn06.t}   |     0
 ext/XS-APItest/t/{utf8_warn7.t => utf8_warn07.t}   |     0
 ext/XS-APItest/t/{utf8_warn8.t => utf8_warn08.t}   |     0
 ext/XS-APItest/t/{utf8_warn9.t => utf8_warn09.t}   |     0
 ext/XS-APItest/t/utf8_warn_base.pl                 |   124 +-
 ext/arybase/arybase.pm                             |     2 +-
 ext/arybase/arybase.xs                             |    14 -
 ext/attributes/attributes.pm                       |    19 +-
 ext/mro/mro.pm                                     |     8 +-
 ext/re/re.pm                                       |     2 +-
 ext/re/re.xs                                       |     1 +
 ext/re/re_top.h                                    |     1 +
 gv.c                                               |    21 +-
 handy.h                                            |     6 +-
 hints/catamount.sh                                 |     4 +-
 hints/freebsd.sh                                   |    11 +
 hv.c                                               |    69 +-
 hv_func.h                                          |   430 +-
 hv_macro.h                                         |    81 +
 inline.h                                           |    39 +-
 intrpvar.h                                         |     1 -
 lib/B/Deparse.pm                                   |   250 +-
 lib/B/Deparse.t                                    |    55 +-
 lib/B/Op_private.pm                                |    15 +-
 lib/DirHandle.pm                                   |    25 +-
 lib/Unicode/UCD.t                                  |     2 +-
 lib/_charnames.pm                                  |     6 +-
 lib/charnames.pm                                   |    10 +-
 lib/feature.pm                                     |     8 +-
 lib/unicore/ArabicShaping.txt                      |    22 +-
 lib/unicore/BidiBrackets.txt                       |     8 +-
 lib/unicore/BidiMirroring.txt                      |    24 +-
 lib/unicore/Blocks.txt                             |    17 +-
 lib/unicore/CJKRadicals.txt                        |     6 +-
 lib/unicore/CaseFolding.txt                        |     8 +-
 lib/unicore/CompositionExclusions.txt              |     6 +-
 lib/unicore/DAge.txt                               |    57 +-
 lib/unicore/DCoreProperties.txt                    |   328 +-
 lib/unicore/DNormalizationProps.txt                |     6 +-
 lib/unicore/EastAsianWidth.txt                     |    90 +-
 lib/unicore/EmojiSources.txt                       |    23 +-
 lib/unicore/HangulSyllableType.txt                 |     6 +-
 lib/unicore/Index.txt                              |    22 +
 lib/unicore/IndicPositionalCategory.txt            |    52 +-
 lib/unicore/IndicSyllabicCategory.txt              |   109 +-
 lib/unicore/Jamo.txt                               |     8 +-
 lib/unicore/LineBreak.txt                          |   147 +-
 lib/unicore/NameAliases.txt                        |    13 +-
 lib/unicore/NamedSequences.txt                     |    26 +-
 lib/unicore/NamedSqProv.txt                        |    27 +-
 lib/unicore/NamesList.txt                          |  2518 +-
 lib/unicore/NormalizationCorrections.txt           |    10 +-
 lib/unicore/PropList.txt                           |    83 +-
 lib/unicore/PropValueAliases.txt                   |    42 +-
 lib/unicore/PropertyAliases.txt                    |    10 +-
 lib/unicore/README.perl                            |     1 +
 lib/unicore/ReadMe.txt                             |     9 +-
 lib/unicore/ScriptExtensions.txt                   |    21 +-
 lib/unicore/Scripts.txt                            |   129 +-
 lib/unicore/SpecialCasing.txt                      |     8 +-
 lib/unicore/StandardizedVariants.txt               |   585 +-
 lib/unicore/UnicodeData.txt                        |  1028 +-
 lib/unicore/VerticalOrientation.txt                |  2199 ++
 lib/unicore/auxiliary/GCBTest.txt                  |   175 +-
 lib/unicore/auxiliary/GraphemeBreakProperty.txt    |    78 +-
 lib/unicore/auxiliary/LBTest.txt                   |    23 +-
 lib/unicore/auxiliary/SBTest.txt                   |    17 +-
 lib/unicore/auxiliary/SentenceBreakProperty.txt    |    66 +-
 lib/unicore/auxiliary/WBTest.txt                   |   263 +-
 lib/unicore/auxiliary/WordBreakProperty.txt        |   105 +-
 lib/unicore/extracted/DBidiClass.txt               |   142 +-
 lib/unicore/extracted/DBinaryProperties.txt        |     6 +-
 lib/unicore/extracted/DCombiningClass.txt          |   108 +-
 lib/unicore/extracted/DDecompositionType.txt       |     6 +-
 lib/unicore/extracted/DEastAsianWidth.txt          |    97 +-
 lib/unicore/extracted/DGeneralCategory.txt         |   176 +-
 lib/unicore/extracted/DJoinGroup.txt               |    72 +-
 lib/unicore/extracted/DJoinType.txt                |    37 +-
 lib/unicore/extracted/DLineBreak.txt               |   168 +-
 lib/unicore/extracted/DNumType.txt                 |     9 +-
 lib/unicore/extracted/DNumValues.txt               |    36 +-
 lib/unicore/mktables                               |    51 +-
 lib/unicore/version                                |     2 +-
 makedef.pl                                         |     3 +
 malloc_ctl.h                                       |     4 +-
 mg.c                                               |    52 +-
 numeric.c                                          |     4 +-
 op.c                                               |    25 +-
 op.h                                               |     5 +-
 opcode.h                                           |   547 +-
 os2/os2.c                                          |     2 -
 pad.c                                              |     4 +-
 patchlevel.h                                       |     8 +-
 perl.c                                             |    59 +-
 perl.h                                             |    57 +-
 perlapi.h                                          |     4 +
 perlio.c                                           |    18 -
 perlio.h                                           |     6 +-
 perliol.h                                          |     6 +-
 perlvars.h                                         |     6 +
 perly.act                                          |   494 +-
 perly.h                                            |     2 +-
 perly.tab                                          |    66 +-
 perly.y                                            |     6 +
 plan9/config.plan9                                 |    10 +-
 plan9/config_sh.sample                             |    44 +-
 pod/.gitignore                                     |     2 +-
 pod/buildtoc                                       |     2 +-
 pod/perl.pod                                       |    16 +-
 pod/perl5250delta.pod                              |    95 -
 pod/perl52510delta.pod                             |   259 -
 pod/perl52511delta.pod                             |   201 -
 pod/perl5251delta.pod                              |   421 -
 pod/perl5252delta.pod                              |   482 -
 pod/perl5253delta.pod                              |   492 -
 pod/perl5254delta.pod                              |   429 -
 pod/perl5255delta.pod                              |   326 -
 pod/perl5256delta.pod                              |   413 -
 pod/perl5257delta.pod                              |   733 -
 pod/perl5258delta.pod                              |   213 -
 pod/perl5259delta.pod                              |   678 -
 pod/perl5260delta.pod                              |  3334 ++
 pod/{perl52512delta.pod => perl5270delta.pod}      |    89 +-
 pod/perl5271delta.pod                              |   434 +
 pod/perldata.pod                                   |    17 +-
 pod/perldelta.pod                                  |  2931 +-
 pod/perldeprecation.pod                            |    77 +-
 pod/perldiag.pod                                   |   159 +-
 pod/perlexperiment.pod                             |    17 +-
 pod/perlfilter.pod                                 |     6 +-
 pod/perlfunc.pod                                   |     9 +-
 pod/perlgit.pod                                    |     7 +
 pod/perlguts.pod                                   |     6 +-
 pod/perlhack.pod                                   |    49 +
 pod/perlhist.pod                                   |    33 +-
 pod/perlmodinstall.pod                             |     2 +-
 pod/perlop.pod                                     |    16 +-
 pod/perlre.pod                                     |     2 +-
 pod/perlrebackslash.pod                            |     6 +-
 pod/perlrun.pod                                    |     1 -
 pod/perlunicode.pod                                |    11 +-
 pod/perluniintro.pod                               |    22 +-
 pod/perlvar.pod                                    |     8 +-
 pp.c                                               |   148 +-
 pp.h                                               |    42 +-
 pp_ctl.c                                           |   105 +-
 pp_hot.c                                           |    18 +-
 pp_sys.c                                           |    37 +-
 proto.h                                            |    61 +-
 reentr.h                                           |     9 +-
 regcharclass.h                                     |    97 +-
 regcomp.c                                          |   843 +-
 regen/ebcdic.pl                                    |     6 +-
 regen/feature.pl                                   |     4 +-
 regen/mk_invlists.pl                               |     4 +-
 regen/op_private                                   |    10 +-
 regen/reentr.pl                                    |     9 +-
 regen/regcharclass.pl                              |     4 +-
 regen/unicode_constants.pl                         |     6 +-
 regexec.c                                          |    27 +-
 sbox32_hash.h                                      |  1777 +
 scope.c                                            |     4 +
 stadtx_hash.h                                      |   301 +
 sv.c                                               |  2706 +-
 sv.h                                               |     4 +
 t/TEST                                             |    20 +-
 t/base/lex.t                                       |    31 +-
 t/base/rs.t                                        |    32 +-
 t/bigmem/hash.t                                    |    33 +
 t/comp/parser.t                                    |     2 +-
 t/harness                                          |     8 +-
 t/lib/croak/mg                                     |     7 +
 t/lib/croak/pp_sys                                 |    59 +
 t/lib/croak/toke                                   |    23 +
 t/lib/warnings/9uninit                             |    12 +-
 t/lib/warnings/doop                                |    33 +-
 t/lib/warnings/gv                                  |    29 -
 t/lib/warnings/mg                                  |    33 -
 t/lib/warnings/pp                                  |    10 -
 t/lib/warnings/pp_sys                              |    59 -
 t/lib/warnings/regcomp                             |    31 +-
 t/lib/warnings/toke                                |    55 -
 t/lib/warnings/utf8                                |    53 +-
 t/op/attrs.t                                       |     7 +-
 t/op/bop.t                                         |   215 +-
 t/op/catch.t                                       |    50 +
 t/op/chdir.t                                       |    25 +-
 t/op/chop.t                                        |    20 +-
 t/op/closure.t                                     |     2 +-
 t/op/coreamp.t                                     |     2 +-
 t/op/delete.t                                      |    30 +-
 t/op/eval.t                                        |    34 +-
 t/op/fork.t                                        |     2 +-
 t/op/gv.t                                          |    40 +-
 t/op/hash.t                                        |    22 +-
 t/op/heredoc.t                                     |    12 +-
 t/op/index.t                                       |    11 +-
 t/op/infnan.t                                      |    36 +-
 t/op/kvaslice.t                                    |     9 +-
 t/op/kvhslice.t                                    |     9 +-
 t/op/leaky-magic.t                                 |     5 +-
 t/op/lex.t                                         |     5 +-
 t/op/multideref.t                                  |    12 +-
 t/op/ref.t                                         |    63 +-
 t/op/select.t                                      |     3 +
 t/op/sprintf.t                                     |   127 +-
 t/op/sprintf2.t                                    |   148 +-
 t/op/sselect.t                                     |    13 +-
 t/op/stat.t                                        |    33 +-
 t/op/sub_lval.t                                    |     2 +-
 t/op/substr.t                                      |    10 +-
 t/op/tie_fetch_count.t                             |     4 +-
 t/op/vec.t                                         |    23 +-
 t/op/ver.t                                         |    22 +-
 t/op/write.t                                       |    14 +-
 t/opbasic/qq.t                                     |     7 +-
 t/perf/benchmarks                                  |   103 +
 t/perf/optree.t                                    |     3 +-
 t/porting/bench.t                                  |   803 +-
 t/porting/bench/badversion.json                    |     1 +
 t/porting/bench/callsub.json                       |     1 +
 t/porting/bench/callsub2.json                      |     1 +
 t/porting/bench/ret0                               |     6 +
 t/porting/bench/synerr                             |     6 +
 t/porting/{bench.t => bench_selftest.t}            |     0
 t/porting/cmp_version.t                            |     7 +
 t/porting/customized.dat                           |    64 +-
 t/porting/diag.t                                   |     1 -
 t/porting/globvar.t                                |     2 +-
 t/porting/known_pod_issues.dat                     |     2 +
 t/re/anyof.t                                       |     4 +-
 t/re/pat.t                                         |    16 +-
 t/re/pat_advanced.t                                |   316 +-
 t/re/pat_re_eval.t                                 |    15 +-
 t/re/re_tests                                      |     1 -
 t/re/reg_mesg.t                                    |    32 +-
 t/test.pl                                          |     4 +-
 t/uni/heavy.t                                      |    40 -
 t/uni/parser.t                                     |     3 +-
 thread.h                                           |    24 +-
 time64.h                                           |     4 +-
 time64_config.h                                    |     6 +-
 toke.c                                             |    95 +-
 uconfig.h                                          |    18 +-
 uconfig.sh                                         |    16 +-
 uconfig64.sh                                       |    16 +-
 unicode_constants.h                                |    10 +-
 utf8.c                                             |   361 +-
 utf8.h                                             |    50 +-
 utfebcdic.h                                        |     7 -
 util.c                                             |    19 +-
 vms/descrip_mms.template                           |     2 +-
 vutil.c                                            |     6 +-
 vutil.h                                            |     2 +-
 vxs.inc                                            |    11 +-
 win32/GNUmakefile                                  |   168 +-
 win32/Makefile                                     |    96 +-
 win32/Makefile.ce                                  |     2 +-
 win32/makefile.mk                                  |   135 +-
 win32/pod.mak                                      |    64 +-
 zaphod32_hash.h                                    |   287 +
 615 files changed, 50500 insertions(+), 38765 deletions(-)
 create mode 100644 .travis.yml
 create mode 100644 cpan/ExtUtils-MakeMaker/t/os_unsupported.t
 create mode 100644 cpan/JSON-PP/t/117_numbers.t
 create mode 100644 cpan/JSON-PP/t/gh_28_json_test_suite.t
 create mode 100644 cpan/JSON-PP/t/gh_29_trailing_false_value.t
 create mode 100644 cpan/JSON-PP/t/rt_116998_wrong_character_offset.t
 create mode 100644 cpan/JSON-PP/t/rt_90071_incr_parse.t
 delete mode 100644 cpan/Locale-Codes/lib/Locale/Codes/API.pod
 create mode 100644 cpan/Locale-Codes/lib/Locale/Codes/Types.pod
 delete mode 100644 cpan/Locale-Codes/t/country.t
 create mode 100644 cpan/Locale-Codes/t/country_func.t
 create mode 100644 cpan/Locale-Codes/t/country_oo.t
 delete mode 100644 cpan/Locale-Codes/t/currency.t
 create mode 100644 cpan/Locale-Codes/t/currency_func.t
 create mode 100644 cpan/Locale-Codes/t/currency_oo.t
 create mode 100644 cpan/Locale-Codes/t/do_tests.pl
 delete mode 100644 cpan/Locale-Codes/t/langext.t
 create mode 100644 cpan/Locale-Codes/t/langext_func.t
 create mode 100644 cpan/Locale-Codes/t/langext_oo.t
 delete mode 100644 cpan/Locale-Codes/t/langfam.t
 create mode 100644 cpan/Locale-Codes/t/langfam_func.t
 create mode 100644 cpan/Locale-Codes/t/langfam_oo.t
 delete mode 100644 cpan/Locale-Codes/t/language.t
 create mode 100644 cpan/Locale-Codes/t/language_func.t
 create mode 100644 cpan/Locale-Codes/t/language_oo.t
 delete mode 100644 cpan/Locale-Codes/t/langvar.t
 create mode 100644 cpan/Locale-Codes/t/langvar_func.t
 create mode 100644 cpan/Locale-Codes/t/langvar_oo.t
 delete mode 100644 cpan/Locale-Codes/t/script.t
 create mode 100644 cpan/Locale-Codes/t/script_func.t
 create mode 100644 cpan/Locale-Codes/t/script_oo.t
 delete mode 100644 cpan/Locale-Codes/t/vals.pl
 create mode 100644 cpan/Math-BigRat/t/rt121139.t
 create mode 100644 cpan/version/t/11_taint.t
 create mode 100644 dist/Module-CoreList/t/maintainer.t
 create mode 100644 dist/threads/t/unique.t
 create mode 100644 ext/File-Glob/t/rt131211.t
 create mode 100644 ext/PerlIO-via/t/thread.t
 rename ext/XS-APItest/t/{handy0.t => handy00.t} (100%)
 rename ext/XS-APItest/t/{handy1.t => handy01.t} (100%)
 rename ext/XS-APItest/t/{handy2.t => handy02.t} (100%)
 rename ext/XS-APItest/t/{handy3.t => handy03.t} (100%)
 rename ext/XS-APItest/t/{handy4.t => handy04.t} (100%)
 rename ext/XS-APItest/t/{handy5.t => handy05.t} (100%)
 rename ext/XS-APItest/t/{handy6.t => handy06.t} (100%)
 rename ext/XS-APItest/t/{handy7.t => handy07.t} (100%)
 rename ext/XS-APItest/t/{handy8.t => handy08.t} (100%)
 rename ext/XS-APItest/t/{handy9.t => handy09.t} (100%)
 rename ext/XS-APItest/t/{utf8_warn0.t => utf8_warn00.t} (100%)
 rename ext/XS-APItest/t/{utf8_warn1.t => utf8_warn01.t} (100%)
 rename ext/XS-APItest/t/{utf8_warn2.t => utf8_warn02.t} (100%)
 rename ext/XS-APItest/t/{utf8_warn3.t => utf8_warn03.t} (100%)
 rename ext/XS-APItest/t/{utf8_warn4.t => utf8_warn04.t} (100%)
 rename ext/XS-APItest/t/{utf8_warn5.t => utf8_warn05.t} (100%)
 rename ext/XS-APItest/t/{utf8_warn6.t => utf8_warn06.t} (100%)
 rename ext/XS-APItest/t/{utf8_warn7.t => utf8_warn07.t} (100%)
 rename ext/XS-APItest/t/{utf8_warn8.t => utf8_warn08.t} (100%)
 rename ext/XS-APItest/t/{utf8_warn9.t => utf8_warn09.t} (100%)
 create mode 100644 hv_macro.h
 create mode 100644 lib/unicore/VerticalOrientation.txt
 delete mode 100644 pod/perl5250delta.pod
 delete mode 100644 pod/perl52510delta.pod
 delete mode 100644 pod/perl52511delta.pod
 delete mode 100644 pod/perl5251delta.pod
 delete mode 100644 pod/perl5252delta.pod
 delete mode 100644 pod/perl5253delta.pod
 delete mode 100644 pod/perl5254delta.pod
 delete mode 100644 pod/perl5255delta.pod
 delete mode 100644 pod/perl5256delta.pod
 delete mode 100644 pod/perl5257delta.pod
 delete mode 100644 pod/perl5258delta.pod
 delete mode 100644 pod/perl5259delta.pod
 create mode 100644 pod/perl5260delta.pod
 rename pod/{perl52512delta.pod => perl5270delta.pod} (53%)
 create mode 100644 pod/perl5271delta.pod
 create mode 100644 sbox32_hash.h
 create mode 100644 stadtx_hash.h
 create mode 100644 t/bigmem/hash.t
 create mode 100644 t/op/catch.t
 create mode 100644 t/porting/bench/badversion.json
 create mode 100644 t/porting/bench/callsub.json
 create mode 100644 t/porting/bench/callsub2.json
 create mode 100644 t/porting/bench/ret0
 create mode 100644 t/porting/bench/synerr
 copy t/porting/{bench.t => bench_selftest.t} (100%)
 delete mode 100644 t/uni/heavy.t
 create mode 100644 zaphod32_hash.h

diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000000..d1fdd23585
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,31 @@
+language: c
+
+os:
+  - linux
+  - osx
+
+compiler:
+  - gcc
+  - clang
+
+env:
+    - CONFIGURE_ARGS='-Uusethreads'
+    - CONFIGURE_ARGS='-Dusethreads'
+    - CONFIGURE_ARGS='-Duselongdouble'
+    - CONFIGURE_ARGS='-Duse64bitall'
+    - CONFIGURE_ARGS='-Dusethreads -Duselongdouble'
+    - CONFIGURE_ARGS='-Dusethreads -Duse64bitall'
+    - CONFIGURE_ARGS='-Dusethreads -Duse64bitall -Duselongdouble'
+
+script:
+  - ./Configure -des -Dusedevel -Uversiononly -Dcc=$CC $CONFIGURE_ARGS 
-Dprefix=$HOME/perl-blead -DDEBUGGING && TEST_JOBS=4 make -j4 test_harness && 
make install && $HOME/perl-blead/bin/perlivp
+
+addons:
+    apt:
+        packages:
+            - file
+            - cpio
+            - libdb-dev
+            - libgdbm-dev
+            - zlib1g-dev
+            - libbz2-dev
diff --git a/AUTHORS b/AUTHORS
index 35e3068d76..7fdb6948c5 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -402,6 +402,7 @@ Erich Rickheit
 Eryq                           <[email protected]>
 Etienne Grossman               <[email protected]>
 Eugene Alterman                        <[email protected]>
+Eugen Konkov                   <[email protected]>
 Evan Miller                    <[email protected]>
 Evan Zacks                     <[email protected]>
 Fabien Tassin                  <[email protected]>
@@ -531,6 +532,7 @@ J. Nick Koston                      <[email protected]>
 J. van Krieken                 <[email protected]>
 Jacinta Richardson             <[email protected]>
 Jack Shirazi                   <[email protected]>
+Jacques Germishuys             <[email protected]>
 Jacqui Caren                   <[email protected]>
 Jake Hamby                     <[email protected]>
 James                          <[email protected]>
@@ -594,7 +596,7 @@ Jim Cromie                  <[email protected]>
 Jim Meyering                   <[email protected]>
 Jim Miner                      <[email protected]>
 Jim Richardson
-Jim Schneider                  <[email protected]>
+Jim Schneider                  <[email protected]>
 Jirka HruÅ¡ka                  <[email protected]>
 Joachim Huober
 Joaquin Ferrero                        <[email protected]>
@@ -692,6 +694,7 @@ KAWAI Takanori                      <[email protected]>
 Keedi Kim                      <[email protected]>
 Keith Neufeld                  <[email protected]>
 Keith Thompson                 <[email protected]>
+Ken Cotterill                   <[email protected]>
 Ken Estes                      <[email protected]>
 Ken Fox                                <[email protected]>
 Ken Hirsch                     <[email protected]>
diff --git a/Configure b/Configure
index e32d18ce1f..3259249500 100755
--- a/Configure
+++ b/Configure
@@ -2896,7 +2896,6 @@ case "$lns" in
 *)     echo "No symbolic links, so not testing for their testing..." >&4
        ;;
 esac
-echo " "
 
 : Make symlinks util
 case "$mksymlinks" in
@@ -17114,8 +17113,9 @@ $volatile int bletched = 0;
 $signal_t blech(int s) { bletched = 1; }
 #endif
 
-int checkit($nvtype d, char *where) {
-    unsigned char *p = (char *)&d;
+int checkit($nvtype d, const char *where) {
+    void *v = &d;
+    unsigned char *p = (unsigned char *)v;
     unsigned char *end = p + sizeof(d);
     int fail = 0;
 
@@ -17125,7 +17125,7 @@ int checkit($nvtype d, char *where) {
     if (!fail)
        return 0;
 
-    p = (char *)&d;
+    p = (unsigned char *)v;
     printf("No - %s: 0x", where);
     while (p < end)
        printf ("%02X", *p++);
@@ -20666,9 +20666,13 @@ $cat >try.c <<EOP
 #define LONG_DOUBLEKIND $longdblkind
 #endif
 #$i_math I_MATH
+#$i_string I_STRING
 #ifdef I_MATH
 #include <math.h>
 #endif
+#ifdef I_STRING
+#  include <string.h>
+#endif
 #include <stdio.h>
 /* Note that whether the sign bit is on or off
  * for NaN depends on the CPU/FPU, and possibly
@@ -20685,7 +20689,8 @@ $cat >try.c <<EOP
  * to even mention, causing immediate SIGFPE or equivalent: this is
  * the case with VAX floating point, for example.
  */
-static void bytes(unsigned char *p, unsigned int n) {
+static void bytes(void *v, unsigned int n) {
+  unsigned char *p = (unsigned char *)v;
   int i;
   for (i = 0; i < n; i++) {
     printf("0x%02x%s", p[i], i < n - 1 ? ", " : "\n");
@@ -21015,7 +21020,7 @@ EOM
         ;;
     *) dtraceobject=$undef ;;
     esac
-    $rm -f try.c try.o perldtrace.o perldtrace.h
+    $rm_try perldtrace.o perldtrace.h
 esac
 
 : Determine if this is an EBCDIC system
@@ -23055,7 +23060,7 @@ main(int argc, char **argv) {
        return 4;
     }
 
-    buffer = malloc(size);
+    buffer = (char *)malloc(size);
     if (!buffer) {
        perror("malloc");
        return 5;
@@ -23154,7 +23159,7 @@ main(int argc, char **argv) {
        return 2;
     }
 
-    buffer = malloc(size);
+    buffer = (char *)malloc(size);
     if (!buffer) {
        perror("malloc");
        return 3;
diff --git a/Cross/config.sh-arm-linux b/Cross/config.sh-arm-linux
index 6f934af8a0..22cc579efe 100644
--- a/Cross/config.sh-arm-linux
+++ b/Cross/config.sh-arm-linux
@@ -32,12 +32,12 @@ alignbytes='4'
 ansi2knr=''
 aphostname='/bin/hostname'
 api_revision='5'
-api_subversion='0'
-api_version='26'
-api_versionstring='5.26.0'
+api_subversion='2'
+api_version='27'
+api_versionstring='5.27.2'
 ar='ar'
-archlib='/usr/lib/perl5/5.26.0/armv4l-linux'
-archlibexp='/usr/lib/perl5/5.26.0/armv4l-linux'
+archlib='/usr/lib/perl5/5.27.2/armv4l-linux'
+archlibexp='/usr/lib/perl5/5.27.2/armv4l-linux'
 archname64=''
 archname='armv4l-linux'
 archobjs=''
@@ -56,7 +56,7 @@ castflags='0'
 cat='cat'
 cc='cc'
 cccdlflags='-fpic'
-ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.26.0/armv4l-linux/CORE'
+ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.27.2/armv4l-linux/CORE'
 ccflags='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE 
-D_FILE_OFFSET_BITS=64'
 ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
 ccname='arm-linux-gcc'
@@ -826,7 +826,7 @@ inc_version_list=' '
 inc_version_list_init='0'
 incpath=''
 inews=''
-installarchlib='./install_me_here/usr/lib/perl5/5.26.0/armv4l-linux'
+installarchlib='./install_me_here/usr/lib/perl5/5.27.2/armv4l-linux'
 installbin='./install_me_here/usr/bin'
 installhtml1dir=''
 installhtml3dir=''
@@ -834,13 +834,13 @@ installman1dir='./install_me_here/usr/share/man/man1'
 installman3dir='./install_me_here/usr/share/man/man3'
 installprefix='./install_me_here/usr'
 installprefixexp='./install_me_here/usr'
-installprivlib='./install_me_here/usr/lib/perl5/5.26.0'
+installprivlib='./install_me_here/usr/lib/perl5/5.27.2'
 installscript='./install_me_here/usr/bin'
-installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.26.0/armv4l-linux'
+installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.27.2/armv4l-linux'
 installsitebin='./install_me_here/usr/bin'
 installsitehtml1dir=''
 installsitehtml3dir=''
-installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.26.0'
+installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.27.2'
 installsiteman1dir='./install_me_here/usr/share/man/man1'
 installsiteman3dir='./install_me_here/usr/share/man/man3'
 installsitescript='./install_me_here/usr/bin'
@@ -974,8 +974,8 @@ pmake=''
 pr=''
 prefix='/usr'
 prefixexp='/usr'
-privlib='/usr/lib/perl5/5.26.0'
-privlibexp='/usr/lib/perl5/5.26.0'
+privlib='/usr/lib/perl5/5.27.2'
+privlibexp='/usr/lib/perl5/5.27.2'
 procselfexe='"/proc/self/exe"'
 prototype='define'
 ptrsize='4'
@@ -1040,17 +1040,17 @@ sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 
19 20 21 22 23 24 25 26
 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 
38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, ... [78 chars truncated]
 sig_size='68'
 signal_t='void'
-sitearch='/usr/lib/perl5/site_perl/5.26.0/armv4l-linux'
-sitearchexp='/usr/lib/perl5/site_perl/5.26.0/armv4l-linux'
+sitearch='/usr/lib/perl5/site_perl/5.27.2/armv4l-linux'
+sitearchexp='/usr/lib/perl5/site_perl/5.27.2/armv4l-linux'
 sitebin='/usr/bin'
 sitebinexp='/usr/bin'
 sitehtml1dir=''
 sitehtml1direxp=''
 sitehtml3dir=''
 sitehtml3direxp=''
-sitelib='/usr/lib/perl5/site_perl/5.26.0'
+sitelib='/usr/lib/perl5/site_perl/5.27.2'
 sitelib_stem='/usr/lib/perl5/site_perl'
-sitelibexp='/usr/lib/perl5/site_perl/5.26.0'
+sitelibexp='/usr/lib/perl5/site_perl/5.27.2'
 siteman1dir='/usr/share/man/man1'
 siteman1direxp='/usr/share/man/man1'
 siteman3dir='/usr/share/man/man3'
@@ -1089,7 +1089,7 @@ stdio_stream_array=''
 strerror_r_proto='0'
 strings='/usr/include/string.h'
 submit=''
-subversion='0'
+subversion='2'
 sysman='/usr/share/man/man1'
 tail=''
 tar=''
@@ -1181,8 +1181,8 @@ vendorprefix=''
 vendorprefixexp=''
 vendorscript=''
 vendorscriptexp=''
-version='5.26.0'
-version_patchlevel_string='version 26 subversion 0'
+version='5.27.2'
+version_patchlevel_string='version 27 subversion 2'
 versiononly='undef'
 vi=''
 xlibpth='/usr/lib/386 /lib/386'
@@ -1195,10 +1195,10 @@ config_arg0='Configure'
 config_args=''
 config_argc=0
 PERL_REVISION=5
-PERL_VERSION=26
-PERL_SUBVERSION=0
+PERL_VERSION=27
+PERL_SUBVERSION=2
 PERL_API_REVISION=5
-PERL_API_VERSION=26
-PERL_API_SUBVERSION=0
+PERL_API_VERSION=27
+PERL_API_SUBVERSION=2
 PERL_PATCHLEVEL=
 PERL_CONFIG_SH=true
diff --git a/Cross/config.sh-arm-linux-n770 b/Cross/config.sh-arm-linux-n770
index 4b78f5dc47..efe292c5e8 100644
--- a/Cross/config.sh-arm-linux-n770
+++ b/Cross/config.sh-arm-linux-n770
@@ -32,12 +32,12 @@ alignbytes='4'
 ansi2knr=''
 aphostname='/bin/hostname'
 api_revision='5'
-api_subversion='0'
-api_version='26'
-api_versionstring='5.26.0'
+api_subversion='2'
+api_version='27'
+api_versionstring='5.27.2'
 ar='ar'
-archlib='/usr/lib/perl5/5.26.0/armv4l-linux'
-archlibexp='/usr/lib/perl5/5.26.0/armv4l-linux'
+archlib='/usr/lib/perl5/5.27.2/armv4l-linux'
+archlibexp='/usr/lib/perl5/5.27.2/armv4l-linux'
 archname64=''
 archname='armv4l-linux'
 archobjs=''
@@ -55,7 +55,7 @@ castflags='0'
 cat='cat'
 cc='arm-none-linux-gnueabi-gcc'
 cccdlflags='-fpic'
-ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.26.0/armv4l-linux/CORE'
+ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.27.2/armv4l-linux/CORE'
 ccflags='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE 
-D_FILE_OFFSET_BITS=64'
 ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
 ccname='arm-linux-gcc'
@@ -699,7 +699,7 @@ inc_version_list=' '
 inc_version_list_init='0'
 incpath=''
 inews=''
-installarchlib='./install_me_here/usr/lib/perl5/5.26.0/armv4l-linux'
+installarchlib='./install_me_here/usr/lib/perl5/5.27.2/armv4l-linux'
 installbin='./install_me_here/usr/bin'
 installhtml1dir=''
 installhtml3dir=''
@@ -707,13 +707,13 @@ installman1dir='./install_me_here/usr/share/man/man1'
 installman3dir='./install_me_here/usr/share/man/man3'
 installprefix='./install_me_here/usr'
 installprefixexp='./install_me_here/usr'
-installprivlib='./install_me_here/usr/lib/perl5/5.26.0'
+installprivlib='./install_me_here/usr/lib/perl5/5.27.2'
 installscript='./install_me_here/usr/bin'
-installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.26.0/armv4l-linux'
+installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.27.2/armv4l-linux'
 installsitebin='./install_me_here/usr/bin'
 installsitehtml1dir=''
 installsitehtml3dir=''
-installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.26.0'
+installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.27.2'
 installsiteman1dir='./install_me_here/usr/share/man/man1'
 installsiteman3dir='./install_me_here/usr/share/man/man3'
 installsitescript='./install_me_here/usr/bin'
@@ -841,8 +841,8 @@ pmake=''
 pr=''
 prefix='/usr'
 prefixexp='/usr'
-privlib='/usr/lib/perl5/5.26.0'
-privlibexp='/usr/lib/perl5/5.26.0'
+privlib='/usr/lib/perl5/5.27.2'
+privlibexp='/usr/lib/perl5/5.27.2'
 procselfexe='"/proc/self/exe"'
 prototype='define'
 ptrsize='4'
@@ -903,17 +903,17 @@ sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 
19 20 21 22 23 24 25 26
 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 
38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, ... [78 chars truncated]
 sig_size='68'
 signal_t='void'
-sitearch='/usr/lib/perl5/site_perl/5.26.0/armv4l-linux'
-sitearchexp='/usr/lib/perl5/site_perl/5.26.0/armv4l-linux'
+sitearch='/usr/lib/perl5/site_perl/5.27.2/armv4l-linux'
+sitearchexp='/usr/lib/perl5/site_perl/5.27.2/armv4l-linux'
 sitebin='/usr/bin'
 sitebinexp='/usr/bin'
 sitehtml1dir=''
 sitehtml1direxp=''
 sitehtml3dir=''
 sitehtml3direxp=''
-sitelib='/usr/lib/perl5/site_perl/5.26.0'
+sitelib='/usr/lib/perl5/site_perl/5.27.2'
 sitelib_stem='/usr/lib/perl5/site_perl'
-sitelibexp='/usr/lib/perl5/site_perl/5.26.0'
+sitelibexp='/usr/lib/perl5/site_perl/5.27.2'
 siteman1dir='/usr/share/man/man1'
 siteman1direxp='/usr/share/man/man1'
 siteman3dir='/usr/share/man/man3'
@@ -950,7 +950,7 @@ stdio_stream_array=''
 strerror_r_proto='0'
 strings='/usr/include/string.h'
 submit=''
-subversion='0'
+subversion='2'
 sysman='/usr/share/man/man1'
 tail=''
 tar=''
@@ -1035,8 +1035,8 @@ vendorprefix=''
 vendorprefixexp=''
 vendorscript=''
 vendorscriptexp=''
-version='5.26.0'
-version_patchlevel_string='version 26 subversion 0'
+version='5.27.2'
+version_patchlevel_string='version 27 subversion 2'
 versiononly='undef'
 vi=''
 xlibpth='/usr/lib/386 /lib/386'
@@ -1049,10 +1049,10 @@ config_arg0='Configure'
 config_args=''
 config_argc=0
 PERL_REVISION=5
-PERL_VERSION=26
-PERL_SUBVERSION=0
+PERL_VERSION=27
+PERL_SUBVERSION=2
 PERL_API_REVISION=5
-PERL_API_VERSION=26
-PERL_API_SUBVERSION=0
+PERL_API_VERSION=27
+PERL_API_SUBVERSION=2
 PERL_PATCHLEVEL=
 PERL_CONFIG_SH=true
diff --git a/INSTALL b/INSTALL
index d2b5784fe3..2a066affea 100644
--- a/INSTALL
+++ b/INSTALL
@@ -366,58 +366,79 @@ symbols during configure. An example might be:
 B<Unless stated otherwise these options are considered experimental or
 insecure and are not recommended for production use.>
 
-Perl 5.18 includes support for multiple hash functions, and changed
-the default (to ONE_AT_A_TIME_HARD), you can choose a different
-algorithm by defining one of the following symbols. Note that as of
-Perl 5.18 we can only recommend use of the default or SIPHASH. All
-the others are known to have security issues and are for research
-purposes only.
+Since Perl 5.18 we have included support for multiple hash functions,
+although from time to time we change which functions we support,
+and which function is default (currently SBOX+STADTX on 64 bit builds
+and SBOX+ZAPHOD32 for 32 bit builds). You can choose a different
+algorithm by defining one of the following symbols during configure.
+Note that there security implications of which hash function you choose
+to use. The functions are listed roughly by how secure they are believed
+to be, with the one believed to be most secure at release time being 
PERL_HASH_FUNC_SIPHASH.
 
     PERL_HASH_FUNC_SIPHASH
-    PERL_HASH_FUNC_SDBM
-    PERL_HASH_FUNC_DJB2
-    PERL_HASH_FUNC_SUPERFAST
-    PERL_HASH_FUNC_MURMUR3
-    PERL_HASH_FUNC_ONE_AT_A_TIME
-    PERL_HASH_FUNC_ONE_AT_A_TIME_HARD
-    PERL_HASH_FUNC_ONE_AT_A_TIME_OLD
-
-Perl 5.18 randomizes the order returned by keys(), values(), and each(),
-and allows controlling this behavior by using of the PERL_PERTURB_KEYS
-option. You can disable this option entirely with the define:
+    PERL_HASH_FUNC_SIPHASH13
+    PERL_HASH_FUNC_ZAPHOD32
+    PERL_HASH_FUNC_STADTX
+
+In addition, these, (or custom hash functions), may be "fronted" by the
+SBOX32 hash function for keys under a chosen size. This hash function is
+special in that it has proven theoretical security properties, and is very
+fast to hash, but which by nature is restricted to a maximum key length,
+and which has rather expensive setup costs (relatively speaking), both in
+terms of performance and more importantly in terms of memory. SBOX32
+requires 1k of storage per character it can hash, and it must populate that
+storage with 256 32-bit random values as well. In practice the RNG we use
+for seeding the SBOX32 storage is very efficient and populating the table
+required for hashing even fairly long keys is negligble as we only do it
+during startup. By default we build with SBOX32 enabled, but you change that
+by setting
+
+   PERL_HASH_USE_SBOX32_ALSO
+
+to zero in configure. By default Perl will use SBOX32 to hash strings 24 bytes
+or shorter, you can change this length by setting
+
+    SBOX32_MAX_LEN
+
+to the desired length, with the maximum length being 256.
+
+As of Perl 5.18 the order returned by keys(), values(), and each() is
+non-deterministic and distinct per hash, and the insert order for
+colliding keys is randomized as well, and perl allows for controlling this
+by the PERL_PERTURB_KEYS environment setting. You can disable this behavior
+entirely with the define
 
     PERL_PERTURB_KEYS_DISABLED
 
-You can disable the environment variable checks and specify the type of
-key traversal randomization to be used by defining one of these:
+You can disable the environment variable checks and compile time specify
+the type of key traversal randomization to be used by defining one of these:
 
     PERL_PERTURB_KEYS_RANDOM
     PERL_PERTURB_KEYS_DETERMINISTIC
 
-In Perl 5.18 the seed used for the hash function is randomly selected
-at process start which can be overridden by specifying a seed by setting
+Since Perl 5.18 the seed used for the hash function is randomly selected
+at process start, which can be overridden by specifying a seed by setting
 the PERL_HASH_SEED environment variable.
 
-You can change this behavior by building perl with the
-
-   USE_HASH_SEED_EXPLICIT
-
-define, in which case one has to explicitly set the PERL_HASH_SEED
-environment variable to enable the security feature or by adding
+You can change this behavior so that your perl is built with a hard coded
+seed with the define
 
     NO_HASH_SEED
 
-to the compilation flags to completely disable the randomisation feature.
-Note these modes are poorly tested, insecure and not recommended.
+Note that if you do this you should modify the code in hv_func.h to specify
+your own key. In the future this define may be renamed and replaced with one
+that requires you to specify the key to use.
 
-B<Perl has never guaranteed any ordering of the hash keys>, and the
+B<NOTE WELL: Perl has never guaranteed any ordering of the hash keys>, and the
 ordering has already changed several times during the lifetime of Perl
 5.  Also, the ordering of hash keys has always been, and continues to
-be, affected by the insertion order.  Note that because of this
-randomisation for example the Data::Dumper results will be different
-between different runs of Perl, since Data::Dumper by default dumps
-hashes "unordered".  The use of the Data::Dumper C<Sortkeys> option is
-recommended.
+be, affected by the insertion order regardless of whether you build with
+or without the randomization features.  Note that because of this
+and especially with randomization that the key order of a hash is *undefined*
+and that things like Data::Dumper, for example, may produce different output
+between different runs of Perl, since Data::Dumper serializes the key in the
+native order for the hash.  The use of the Data::Dumper C<Sortkeys> option is
+recommended if you are comparing dumps between different invocations of perl.
 
 See L<perlrun/PERL_HASH_SEED> and L<perlrun/PERL_PERTURB_KEYS> for
 details on the environment variables, and L<perlsec/Algorithmic
@@ -588,7 +609,7 @@ The directories set up by Configure fall into three broad 
categories.
 
 =item Directories for the perl distribution
 
-By default, Configure will use the following directories for 5.26.0.
+By default, Configure will use the following directories for 5.27.2.
 $version is the full perl version number, including subversion, e.g.
 5.12.3, and $archname is a string like sun4-sunos,
 determined by Configure.  The full definitions of all Configure
@@ -2451,7 +2472,7 @@ http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
 
 =head1 Coexistence with earlier versions of perl 5
 
-Perl 5.26.0 is not binary compatible with earlier versions of Perl.
+Perl 5.27.2 is not binary compatible with earlier versions of Perl.
 In other words, you will have to recompile your XS modules.
 
 In general, you can usually safely upgrade from one version of Perl
@@ -2526,9 +2547,9 @@ won't interfere with another version.  (The defaults 
guarantee this for
 libraries after 5.6.0, but not for executables. TODO?)  One convenient
 way to do this is by using a separate prefix for each version, such as
 
-       sh Configure -Dprefix=/opt/perl5.26.0
+       sh Configure -Dprefix=/opt/perl5.27.2
 
-and adding /opt/perl5.26.0/bin to the shell PATH variable.  Such users
+and adding /opt/perl5.27.2/bin to the shell PATH variable.  Such users
 may also wish to add a symbolic link /usr/local/bin/perl so that
 scripts can still start with #!/usr/local/bin/perl.
 
@@ -2541,13 +2562,13 @@ seriously consider using a separate directory, since 
development
 subversions may not have all the compatibility wrinkles ironed out
 yet.
 
-=head2 Upgrading from 5.25.9 or earlier
+=head2 Upgrading from 5.25.12 or earlier
 
-B<Perl 5.26.0 may not be binary compatible with Perl 5.25.9 or
+B<Perl 5.27.2 may not be binary compatible with Perl 5.25.12 or
 earlier Perl releases.>  Perl modules having binary parts
 (meaning that a C compiler is used) will have to be recompiled to be
-used with 5.26.0.  If you find you do need to rebuild an extension with
-5.26.0, you may safely do so without disturbing the older
+used with 5.27.2.  If you find you do need to rebuild an extension with
+5.27.2, you may safely do so without disturbing the older
 installations.  (See L<"Coexistence with earlier versions of perl 5">
 above.)
 
@@ -2580,15 +2601,15 @@ Firstly, the bare minimum to run this script
      print("$f\n");
   }
 
-in Linux with perl-5.26.0 is as follows (under $Config{prefix}):
+in Linux with perl-5.27.2 is as follows (under $Config{prefix}):
 
   ./bin/perl
-  ./lib/perl5/5.26.0/strict.pm
-  ./lib/perl5/5.26.0/warnings.pm
-  ./lib/perl5/5.26.0/i686-linux/File/Glob.pm
-  ./lib/perl5/5.26.0/feature.pm
-  ./lib/perl5/5.26.0/XSLoader.pm
-  ./lib/perl5/5.26.0/i686-linux/auto/File/Glob/Glob.so
+  ./lib/perl5/5.27.2/strict.pm
+  ./lib/perl5/5.27.2/warnings.pm
+  ./lib/perl5/5.27.2/i686-linux/File/Glob.pm
+  ./lib/perl5/5.27.2/feature.pm
+  ./lib/perl5/5.27.2/XSLoader.pm
+  ./lib/perl5/5.27.2/i686-linux/auto/File/Glob/Glob.so
 
 Secondly, for perl-5.10.1, the Debian perl-base package contains 591
 files, (of which 510 are for lib/unicore) totaling about 3.5MB in its
diff --git a/MANIFEST b/MANIFEST
index 197c7046a7..38b908e90d 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,4 +1,5 @@
 .dir-locals.el                 Emacs control file
+.travis.yml            continuous integration on github (where enabled)
 amigaos4/amigaio.c     AmigaOS4 port
 amigaos4/amigaio.h     AmigaOS4 port
 amigaos4/amigaos.c     AmigaOS4 port
@@ -1200,6 +1201,7 @@ cpan/ExtUtils-MakeMaker/t/MM_Unix.t                       
        See if ExtUtils::MM_UNIX works
 cpan/ExtUtils-MakeMaker/t/MM_VMS.t                             See if 
ExtUtils::MM_VMS works
 cpan/ExtUtils-MakeMaker/t/MM_Win32.t                           See if 
ExtUtils::MM_Win32 works
 cpan/ExtUtils-MakeMaker/t/oneliner.t                           See if MM can 
generate perl one-liners
+cpan/ExtUtils-MakeMaker/t/os_unsupported.t
 cpan/ExtUtils-MakeMaker/t/parse_abstract.t                     See if 
parse_abstract works
 cpan/ExtUtils-MakeMaker/t/parse_version.t                      See if 
parse_version works
 cpan/ExtUtils-MakeMaker/t/PL_FILES.t                           Test PL_FILES 
in MakeMaker
@@ -1582,7 +1584,12 @@ cpan/JSON-PP/t/113_overloaded_eq.t
 cpan/JSON-PP/t/114_decode_prefix.t
 cpan/JSON-PP/t/115_tie_ixhash.t
 cpan/JSON-PP/t/116_incr_parse_fixed.t
+cpan/JSON-PP/t/117_numbers.t
 cpan/JSON-PP/t/_unicode_handling.pm
+cpan/JSON-PP/t/gh_28_json_test_suite.t
+cpan/JSON-PP/t/gh_29_trailing_false_value.t
+cpan/JSON-PP/t/rt_116998_wrong_character_offset.t
+cpan/JSON-PP/t/rt_90071_incr_parse.t
 cpan/JSON-PP/t/zero-mojibake.t
 cpan/libnet/lib/Net/Cmd.pm
 cpan/libnet/lib/Net/Config.pm
@@ -1618,7 +1625,6 @@ cpan/libnet/t/smtp_ssl.t
 cpan/libnet/t/time.t           libnet
 cpan/Locale-Codes/lib/Locale/Codes.pm          Locale::Codes
 cpan/Locale-Codes/lib/Locale/Codes.pod         Locale::Codes documentation
-cpan/Locale-Codes/lib/Locale/Codes/API.pod     Locale::Codes documentation
 cpan/Locale-Codes/lib/Locale/Codes/Changes.pod Locale::Codes documentation
 cpan/Locale-Codes/lib/Locale/Codes/Constants.pm        Locale::Codes
 cpan/Locale-Codes/lib/Locale/Codes/Country.pm  Locale::Codes
@@ -1649,6 +1655,7 @@ cpan/Locale-Codes/lib/Locale/Codes/Script.pm      
Locale::Codes
 cpan/Locale-Codes/lib/Locale/Codes/Script.pod  Locale::Codes documentation
 cpan/Locale-Codes/lib/Locale/Codes/Script_Codes.pm     Locale::Codes
 cpan/Locale-Codes/lib/Locale/Codes/Script_Retired.pm   Locale::Codes
+cpan/Locale-Codes/lib/Locale/Codes/Types.pod   Locale::Codes documentation
 cpan/Locale-Codes/lib/Locale/Country.pm                Locale::Codes
 cpan/Locale-Codes/lib/Locale/Country.pod       Locale::Codes documentation
 cpan/Locale-Codes/lib/Locale/Currency.pm       Locale::Codes
@@ -1657,26 +1664,33 @@ cpan/Locale-Codes/lib/Locale/Language.pm        
Locale::Codes
 cpan/Locale-Codes/lib/Locale/Language.pod      Locale::Codes documentation
 cpan/Locale-Codes/lib/Locale/Script.pm         Locale::Codes
 cpan/Locale-Codes/lib/Locale/Script.pod                Locale::Codes 
documentation
-cpan/Locale-Codes/t/country.t                  Locale::Codes tests
+cpan/Locale-Codes/t/country_func.t     Locale::Codes tests
 cpan/Locale-Codes/t/country_old.t      Locale::Codes tests
-cpan/Locale-Codes/t/currency.t
-cpan/Locale-Codes/t/currency_old.t
-cpan/Locale-Codes/t/langext.t
-cpan/Locale-Codes/t/langfam.t
-cpan/Locale-Codes/t/language.t                 Locale::Codes tests
+cpan/Locale-Codes/t/country_oo.t       Locale::Codes tests
+cpan/Locale-Codes/t/currency_func.t    Locale::Codes tests
+cpan/Locale-Codes/t/currency_old.t     Locale::Codes tests
+cpan/Locale-Codes/t/currency_oo.t      Locale::Codes tests
+cpan/Locale-Codes/t/do_tests.pl        Locale::Codes tests
+cpan/Locale-Codes/t/langext_func.t     Locale::Codes tests
+cpan/Locale-Codes/t/langext_oo.t       Locale::Codes tests
+cpan/Locale-Codes/t/langfam_func.t     Locale::Codes tests
+cpan/Locale-Codes/t/langfam_oo.t       Locale::Codes tests
+cpan/Locale-Codes/t/language_func.t    Locale::Codes tests
 cpan/Locale-Codes/t/language_old.t     Locale::Codes tests
-cpan/Locale-Codes/t/langvar.t
-cpan/Locale-Codes/t/script.t
-cpan/Locale-Codes/t/script_old.t
+cpan/Locale-Codes/t/language_oo.t      Locale::Codes tests
+cpan/Locale-Codes/t/langvar_func.t     Locale::Codes tests
+cpan/Locale-Codes/t/langvar_oo.t       Locale::Codes tests
+cpan/Locale-Codes/t/script_func.t      Locale::Codes tests
+cpan/Locale-Codes/t/script_old.t       Locale::Codes tests
+cpan/Locale-Codes/t/script_oo.t        Locale::Codes tests
 cpan/Locale-Codes/t/testfunc.pl                        Locale::Codes tests
-cpan/Locale-Codes/t/vals.pl
-cpan/Locale-Codes/t/vals_country.pl
-cpan/Locale-Codes/t/vals_currency.pl
-cpan/Locale-Codes/t/vals_langext.pl
-cpan/Locale-Codes/t/vals_langfam.pl
-cpan/Locale-Codes/t/vals_language.pl
-cpan/Locale-Codes/t/vals_langvar.pl
-cpan/Locale-Codes/t/vals_script.pl
+cpan/Locale-Codes/t/vals_country.pl    Locale::Codes tests
+cpan/Locale-Codes/t/vals_currency.pl   Locale::Codes tests
+cpan/Locale-Codes/t/vals_langext.pl    Locale::Codes tests
+cpan/Locale-Codes/t/vals_langfam.pl    Locale::Codes tests
+cpan/Locale-Codes/t/vals_language.pl   Locale::Codes tests
+cpan/Locale-Codes/t/vals_langvar.pl    Locale::Codes tests
+cpan/Locale-Codes/t/vals_script.pl     Locale::Codes tests
 cpan/Locale-Maketext-Simple/lib/Locale/Maketext/Simple.pm      Locale::Simple
 cpan/Locale-Maketext-Simple/t/0-signature.t                    Locale::Simple 
tests
 cpan/Locale-Maketext-Simple/t/1-basic.t                                
Locale::Simple tests
@@ -1801,6 +1815,7 @@ cpan/Math-BigRat/t/bitwise.t              Math::BigRat 
test
 cpan/Math-BigRat/t/hang.t              Math::BigRat test for bug #34584 - hang 
in exp()
 cpan/Math-BigRat/t/Math/BigRat/Test.pm Math::BigRat test helper
 cpan/Math-BigRat/t/requirer.t          see if require works properly
+cpan/Math-BigRat/t/rt121139.t
 cpan/Math-BigRat/t/trap.t              see if trap_nan and trap_inf work
 cpan/Math-Complex/lib/Math/Complex.pm  A Complex package
 cpan/Math-Complex/lib/Math/Trig.pm     A simple interface to complex 
trigonometry
@@ -3150,6 +3165,7 @@ cpan/version/t/07locale.t         Tests for version 
objects
 cpan/version/t/08_corelist.t           Tests for version objects
 cpan/version/t/09_list_util.t          Tests for version objects
 cpan/version/t/10_lyon.t               Tests for version objects
+cpan/version/t/11_taint.t              Tests for version objects
 cpan/version/t/coretests.pm            Tests for version objects
 cpan/Win32/longpath.inc                        Win32 extension long path 
support
 cpan/Win32/Makefile.PL                 Win32 extension makefile writer
@@ -3509,6 +3525,7 @@ dist/Module-CoreList/t/corelist.t         
Module::CoreList tests
 dist/Module-CoreList/t/deprecated.t            Module::CoreList tests
 dist/Module-CoreList/t/find_modules.t          Module::CoreList tests
 dist/Module-CoreList/t/is_core.t               Module::CoreList tests
+dist/Module-CoreList/t/maintainer.t                    Module::CoreList tests
 dist/Module-CoreList/t/pod.t                   Module::CoreList tests
 dist/Module-CoreList/t/utils.t                 Module::CoreList tests
 dist/Net-Ping/Changes                  Net::Ping
@@ -3701,6 +3718,7 @@ dist/threads/t/stress_cv.t        Test with multiple 
threads, coderef cv argument.
 dist/threads/t/stress_re.t     Test with multiple threads, string cv argument 
and regexes.
 dist/threads/t/stress_string.t Test with multiple threads, string cv argument.
 dist/threads/t/thread.t                General ithread tests from thr5005
+dist/threads/t/unique.t                        Test unique attribute with 
threads
 dist/threads/threads.xs                ithreads
 dist/threads-shared/hints/linux.pl     thread shared variables
 dist/threads-shared/lib/threads/shared.pm      thread shared variables
@@ -3948,6 +3966,7 @@ ext/File-Glob/t/basic.t           See if File::Glob works
 ext/File-Glob/t/case.t         See if File::Glob works
 ext/File-Glob/t/global.t       See if File::Glob works
 ext/File-Glob/t/rt114984.t     See if File::Glob works
+ext/File-Glob/t/rt131211.t     See if File::Glob works
 ext/File-Glob/t/taint.t                See if File::Glob works
 ext/File-Glob/t/threads.t      See if File::Glob + threads works
 ext/File-Glob/TODO             File::Glob extension todo list
@@ -4045,6 +4064,7 @@ ext/PerlIO-scalar/scalar.xs       PerlIO layer for scalars
 ext/PerlIO-scalar/t/scalar.t   See if PerlIO::scalar works
 ext/PerlIO-scalar/t/scalar_ungetc.t    Tests for PerlIO layer for scalars
 ext/PerlIO-via/hints/aix.pl    Hint for PerlIO::via for named architecture
+ext/PerlIO-via/t/thread.t              See if PerlIO::via works with threads
 ext/PerlIO-via/t/via.t         See if PerlIO::via works
 ext/PerlIO-via/via.pm          PerlIO layer for layers in perl
 ext/PerlIO-via/via.xs          PerlIO layer for layers in perl
@@ -4230,16 +4250,16 @@ ext/XS-APItest/t/gv_fetchmeth.t         XS::APItest: 
tests for gv_fetchmeth() and varia
 ext/XS-APItest/t/gv_fetchmeth_autoload.t       XS::APItest: tests for 
gv_fetchmeth_autoload() and variants
 ext/XS-APItest/t/gv_fetchmethod_flags.t        XS::APItest: tests for 
gv_fetchmethod_flags() and variants
 ext/XS-APItest/t/gv_init.t     XS::APItest: tests for gv_init and variants
-ext/XS-APItest/t/handy0.t      XS::APItest: tests for handy.h
-ext/XS-APItest/t/handy1.t      XS::APItest: tests for handy.h
-ext/XS-APItest/t/handy2.t      XS::APItest: tests for handy.h
-ext/XS-APItest/t/handy3.t      XS::APItest: tests for handy.h
-ext/XS-APItest/t/handy4.t      XS::APItest: tests for handy.h
-ext/XS-APItest/t/handy5.t      XS::APItest: tests for handy.h
-ext/XS-APItest/t/handy6.t      XS::APItest: tests for handy.h
-ext/XS-APItest/t/handy7.t      XS::APItest: tests for handy.h
-ext/XS-APItest/t/handy8.t      XS::APItest: tests for handy.h
-ext/XS-APItest/t/handy9.t      XS::APItest: tests for handy.h
+ext/XS-APItest/t/handy00.t     XS::APItest: tests for handy.h
+ext/XS-APItest/t/handy01.t     XS::APItest: tests for handy.h
+ext/XS-APItest/t/handy02.t     XS::APItest: tests for handy.h
+ext/XS-APItest/t/handy03.t     XS::APItest: tests for handy.h
+ext/XS-APItest/t/handy04.t     XS::APItest: tests for handy.h
+ext/XS-APItest/t/handy05.t     XS::APItest: tests for handy.h
+ext/XS-APItest/t/handy06.t     XS::APItest: tests for handy.h
+ext/XS-APItest/t/handy07.t     XS::APItest: tests for handy.h
+ext/XS-APItest/t/handy08.t     XS::APItest: tests for handy.h
+ext/XS-APItest/t/handy09.t     XS::APItest: tests for handy.h
 ext/XS-APItest/t/handy_base.pl XS::APItest: tests for handy.h
 ext/XS-APItest/t/hash.t                XS::APItest: tests for hash related APIs
 ext/XS-APItest/t/join_with_space.t     test op_convert_list
@@ -4303,16 +4323,16 @@ ext/XS-APItest/t/utf16_to_utf8.t        Test behaviour 
of utf16_to_utf8{,reversed}
 ext/XS-APItest/t/utf8.t                Tests for code in utf8.c
 ext/XS-APItest/t/utf8_malformed.t      Tests for code in utf8.c
 ext/XS-APItest/t/utf8_setup.pl Tests for code in utf8.c
-ext/XS-APItest/t/utf8_warn0.t  Tests for code in utf8.c
-ext/XS-APItest/t/utf8_warn1.t  Tests for code in utf8.c
-ext/XS-APItest/t/utf8_warn2.t  Tests for code in utf8.c
-ext/XS-APItest/t/utf8_warn3.t  Tests for code in utf8.c
-ext/XS-APItest/t/utf8_warn4.t  Tests for code in utf8.c
-ext/XS-APItest/t/utf8_warn5.t  Tests for code in utf8.c
-ext/XS-APItest/t/utf8_warn6.t  Tests for code in utf8.c
-ext/XS-APItest/t/utf8_warn7.t  Tests for code in utf8.c
-ext/XS-APItest/t/utf8_warn8.t  Tests for code in utf8.c
-ext/XS-APItest/t/utf8_warn9.t  Tests for code in utf8.c
+ext/XS-APItest/t/utf8_warn00.t Tests for code in utf8.c
+ext/XS-APItest/t/utf8_warn01.t Tests for code in utf8.c
+ext/XS-APItest/t/utf8_warn02.t Tests for code in utf8.c
+ext/XS-APItest/t/utf8_warn03.t Tests for code in utf8.c
+ext/XS-APItest/t/utf8_warn04.t Tests for code in utf8.c
+ext/XS-APItest/t/utf8_warn05.t Tests for code in utf8.c
+ext/XS-APItest/t/utf8_warn06.t Tests for code in utf8.c
+ext/XS-APItest/t/utf8_warn07.t Tests for code in utf8.c
+ext/XS-APItest/t/utf8_warn08.t Tests for code in utf8.c
+ext/XS-APItest/t/utf8_warn09.t Tests for code in utf8.c
 ext/XS-APItest/t/utf8_warn_base.pl     Tests for code in utf8.c
 ext/XS-APItest/t/weaken.t      XS::APItest: tests for sv_rvweaken() and 
sv_get_backrefs()
 ext/XS-APItest/t/whichsig.t    XS::APItest: tests for whichsig() and variants
@@ -4444,6 +4464,7 @@ hints/vos.sh                      Hints for named 
architecture
 hv.c                           Hash value code
 hv.h                           Hash value header
 hv_func.h                      Hash value static inline function header
+hv_macro.h                     Macros used by hv_func.h
 inline.h                       Static inline functions
 INSTALL                                Detailed installation instructions
 install_lib.pl                 functions shared between install* scripts
@@ -4694,6 +4715,7 @@ lib/unicore/SpecialCasing.txt                     Unicode 
character database
 lib/unicore/StandardizedVariants.txt           Unicode character database
 lib/unicore/UnicodeData.txt                    Unicode character database
 lib/unicore/version                            The version of the Unicode
+lib/unicore/VerticalOrientation.txt            Unicode character database
 lib/UNIVERSAL.pm               Base class for ALL classes
 lib/User/grent.pm              By-name interface to Perl's builtin getgr*
 lib/User/grent.t               See if User::grwent works
@@ -4931,19 +4953,9 @@ pod/perl5222delta.pod            Perl changes in version 
5.22.2
 pod/perl5223delta.pod          Perl changes in version 5.22.3
 pod/perl5240delta.pod          Perl changes in version 5.24.0
 pod/perl5241delta.pod          Perl changes in version 5.24.1
-pod/perl5250delta.pod          Perl changes in version 5.25.0
-pod/perl52510delta.pod         Perl changes in version 5.25.10
-pod/perl52511delta.pod         Perl changes in version 5.25.11
-pod/perl52512delta.pod         Perl changes in version 5.25.12
-pod/perl5251delta.pod          Perl changes in version 5.25.1
-pod/perl5252delta.pod          Perl changes in version 5.25.2
-pod/perl5253delta.pod          Perl changes in version 5.25.3
-pod/perl5254delta.pod          Perl changes in version 5.25.4
-pod/perl5255delta.pod          Perl changes in version 5.25.5
-pod/perl5256delta.pod          Perl changes in version 5.25.6
-pod/perl5257delta.pod          Perl changes in version 5.25.7
-pod/perl5258delta.pod          Perl changes in version 5.25.8
-pod/perl5259delta.pod          Perl changes in version 5.25.9
+pod/perl5260delta.pod          Perl changes in version 5.26.0
+pod/perl5270delta.pod          Perl changes in version 5.27.0
+pod/perl5271delta.pod          Perl changes in version 5.27.1
 pod/perl561delta.pod           Perl changes in version 5.6.1
 pod/perl56delta.pod            Perl changes in version 5.6
 pod/perl581delta.pod           Perl changes in version 5.8.1
@@ -5207,8 +5219,10 @@ regexp.h                 Public declarations for the 
above
 regnodes.h                     Description of nodes of RE engine
 run.c                          The interpreter loop
 runtests.SH                    A script that generates runtests
+sbox32_hash.h                  SBox hash code (32 Bit SBOX based hash function)
 scope.c                                Scope entry and exit code
 scope.h                                Scope entry and exit header
+stadtx_hash.h                  StadtX hash code (64 Bit fast hash function)
 sv.c                           Scalar value code
 sv.h                           Scalar value header
 symbian/bld.inf                        Symbian sample app build config
@@ -5271,6 +5285,7 @@ t/base/term.t                     See if various terms 
work
 t/base/translate.t             See if character set translation works
 t/base/while.t                 See if while work
 t/benchmark/rt26188-speed-up-keys-on-empty-hash.t      Benchmark if keys on 
empty hashes is fast enough
+t/bigmem/hash.t                        Check hashing too large strings throws 
an exception
 t/bigmem/index.t               Check that index() handles large offsets
 t/bigmem/pos.t                 Check that pos() handles large offsets
 t/bigmem/read.t                        Check read() handles large offsets
@@ -5525,6 +5540,7 @@ t/op/blocks.t                     See if BEGIN and 
friends work
 t/op/bop.t                     See if bitops work
 t/op/caller.pl                 Tests shared between caller.t and XS op.t
 t/op/caller.t                  See if caller() works
+t/op/catch.t                   See if catching exception works
 t/op/chars.t                   See if character escapes work
 t/op/chdir.t                   See if chdir works
 t/op/chop.t                    See if chop works
@@ -5727,7 +5743,13 @@ t/perf/taint.t                   See if optimisations 
are keeping things fast (taint issues)
 t/perl.supp                    Perl valgrind suppressions
 t/porting/args_assert.t                Check that all PERL_ARGS_ASSERT* macros 
are used
 t/porting/authors.t            Check that all authors have been acknowledged
-t/porting/bench.t              Check that Porting/bench.pl is okay
+t/porting/bench.t              Check Porting/bench.pl runs ok
+t/porting/bench/badversion.json        a test file for t/porting/bench.t
+t/porting/bench/callsub.json   a test file for t/porting/bench.t
+t/porting/bench/callsub2.json  a test file for t/porting/bench.t
+t/porting/bench/ret0           a test file for t/porting/bench.t
+t/porting/bench/synerr         a test file for t/porting/bench.t
+t/porting/bench_selftest.t     run Porting/bench.pl's selftest facility
 t/porting/bincompat.t          Check that {non_,}bincompat_options are ordered
 t/porting/checkcase.t          Check whether we are 
case-insensitive-fs-friendly
 t/porting/checkcfgvar.t                Check that all config.sh-like files are 
good
@@ -5875,7 +5897,6 @@ t/uni/fold.t                      See if Unicode folding 
works
 t/uni/goto.t                   See if Unicode goto &sub works
 t/uni/greek.t                  See if Unicode in greek works
 t/uni/gv.t                     See if Unicode GVs work.
-t/uni/heavy.t                  See if utf8_heavy.pl uses perl that depends on 
it
 t/uni/labels.t                 See if Unicode labels work
 t/uni/latin2.t                 See if Unicode in latin2 works
 t/uni/lex_utf8.t               See if Unicode in lexer works
@@ -6027,3 +6048,4 @@ win32/wince.h                     WinCE port
 win32/wincesck.c               WinCE port
 write_buildcustomize.pl                Generate lib/buildcustomize.pl
 XSUB.h                         Include file for extension subroutines
+zaphod32_hash.h                        Zaphod32 hash code (32 bit fast hash 
function)
diff --git a/META.json b/META.json
index 8e5a6d2965..b74b05d94e 100644
--- a/META.json
+++ b/META.json
@@ -113,7 +113,7 @@
          "vxs.inc"
       ]
    },
-   "release_status" : "stable",
+   "release_status" : "unstable",
    "resources" : {
       "bugtracker" : {
          "web" : "https://rt.perl.org/";
@@ -126,6 +126,6 @@
          "url" : "http://perl5.git.perl.org/";
       }
    },
-   "version" : "5.026000",
-   "x_serialization_backend" : "JSON::PP version 2.27400_02"
+   "version" : "5.027002",
+   "x_serialization_backend" : "JSON::PP version 2.94"
 }
diff --git a/META.yml b/META.yml
index c164c52dee..87a64cce92 100644
--- a/META.yml
+++ b/META.yml
@@ -113,5 +113,5 @@ resources:
   homepage: http://www.perl.org/
   license: http://dev.perl.org/licenses/
   repository: http://perl5.git.perl.org/
-version: '5.026000'
+version: '5.027002'
 x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff --git a/Makefile.SH b/Makefile.SH
index 51d3c8ee47..778b4ae8d2 100755
--- a/Makefile.SH
+++ b/Makefile.SH
@@ -570,7 +570,7 @@ esac
 
 $spitshell >>$Makefile <<'!NO!SUBS!'
 
-perltoc_pod_prereqs = extra.pods pod/perl5260delta.pod pod/perlapi.pod 
pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod
+perltoc_pod_prereqs = extra.pods pod/perl5272delta.pod pod/perlapi.pod 
pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod
 generated_pods = pod/perltoc.pod $(perltoc_pod_prereqs)
 generated_headers = uudmap.h bitcount.h mg_data.h
 
@@ -1120,9 +1120,9 @@ pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc
 pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST
        $(MINIPERL) pod/perlmodlib.PL -q
 
-pod/perl5260delta.pod: pod/perldelta.pod
-       $(RMS) pod/perl5260delta.pod
-       $(LNS) perldelta.pod pod/perl5260delta.pod
+pod/perl5272delta.pod: pod/perldelta.pod
+       $(RMS) pod/perl5272delta.pod
+       $(LNS) perldelta.pod pod/perl5272delta.pod
 
 extra.pods: $(MINIPERL_EXE)
        -@test ! -f extra.pods || rm -f `cat extra.pods`
diff --git a/NetWare/Makefile b/NetWare/Makefile
index 779faeb5eb..4e08b18bfa 100644
--- a/NetWare/Makefile
+++ b/NetWare/Makefile
@@ -86,7 +86,7 @@ NLM_VERSION    = 3,20,0
 
 
 # Here comes the CW tools - TO BE FILLED TO BUILD WITH CW -
-MODULE_DESC     = "Perl 5.26.0 for NetWare"
+MODULE_DESC     = "Perl 5.27.2 for NetWare"
 CCTYPE          = CodeWarrior
 C_COMPILER             = mwccnlm -c
 CPP_COMPILER   = mwccnlm
@@ -462,7 +462,7 @@ INST_NW_TOP2 = $(INST_NW_DRV)\perl
 # versioned installation can be obtained by setting INST_TOP above to a
 # path that includes an arbitrary version string.
 #
-INST_VER       = \5.26.0
+INST_VER       = \5.27.2
 
 #
 # Comment this out if you DON'T want your perl installation to have
diff --git a/NetWare/config_H.wc b/NetWare/config_H.wc
index b96d6c958f..8b95b2c6ba 100644
--- a/NetWare/config_H.wc
+++ b/NetWare/config_H.wc
@@ -1042,7 +1042,7 @@
  *     This symbol contains the ~name expanded version of ARCHLIB, to be used
  *     in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define ARCHLIB "c:\\perl\\5.26.0\\lib\\NetWare-x86-multi-thread"              
/**/
+#define ARCHLIB "c:\\perl\\5.27.2\\lib\\NetWare-x86-multi-thread"              
/**/
 /*#define ARCHLIB_EXP ""       /**/
 
 /* ARCHNAME:
@@ -1073,8 +1073,8 @@
  *     This symbol is the filename expanded version of the BIN symbol, for
  *     programs that do not want to deal with that at run-time.
  */
-#define BIN "c:\\perl\\5.26.0\\bin\\NetWare-x86-multi-thread"  /**/
-#define BIN_EXP "c:\\perl\\5.26.0\\bin\\NetWare-x86-multi-thread"      /**/
+#define BIN "c:\\perl\\5.27.2\\bin\\NetWare-x86-multi-thread"  /**/
+#define BIN_EXP "c:\\perl\\5.27.2\\bin\\NetWare-x86-multi-thread"      /**/
 
 /* BYTEORDER:
  *     This symbol holds the hexadecimal constant defined in byteorder,
@@ -3088,7 +3088,7 @@
  *     This symbol contains the ~name expanded version of SITEARCH, to be used
  *     in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define SITEARCH "c:\\perl\\site\\5.26.0\\lib\\NetWare-x86-multi-thread"       
        /**/
+#define SITEARCH "c:\\perl\\site\\5.27.2\\lib\\NetWare-x86-multi-thread"       
        /**/
 /*#define SITEARCH_EXP ""      /**/
 
 /* SITELIB:
@@ -3111,7 +3111,7 @@
  *     removed.  The elements in inc_version_list (inc_version_list.U) can
  *     be tacked onto this variable to generate a list of directories to 
search.
  */
-#define SITELIB "c:\\perl\\site\\5.26.0\\lib"          /**/
+#define SITELIB "c:\\perl\\site\\5.27.2\\lib"          /**/
 /*#define SITELIB_EXP ""       /**/
 #define SITELIB_STEM ""                /**/
 
diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl
index e9032a91f3..d963396aec 100755
--- a/Porting/Maintainers.pl
+++ b/Porting/Maintainers.pl
@@ -120,7 +120,7 @@ use File::Glob qw(:case);
 %Modules = (
 
     'Archive::Tar' => {
-        'DISTRIBUTION' => 'BINGOS/Archive-Tar-2.24.tar.gz',
+        'DISTRIBUTION' => 'BINGOS/Archive-Tar-2.26.tar.gz',
         'FILES'        => q[cpan/Archive-Tar],
         'BUGS'         => '[email protected]',
         'EXCLUDED'     => [
@@ -337,7 +337,7 @@ use File::Glob qw(:case);
     },
 
     'Devel::PPPort' => {
-        'DISTRIBUTION' => 'WOLFSAGE/Devel-PPPort-3.35.tar.gz',
+        'DISTRIBUTION' => 'WOLFSAGE/Devel-PPPort-3.36.tar.gz',
         # RJBS has asked MHX to have UPSTREAM be 'blead'
         # (i.e. move this from cpan/ to dist/)
         'FILES'        => q[cpan/Devel-PPPort],
@@ -446,7 +446,7 @@ use File::Glob qw(:case);
     },
 
     'ExtUtils::Install' => {
-        'DISTRIBUTION' => 'BINGOS/ExtUtils-Install-2.04.tar.gz',
+        'DISTRIBUTION' => 'BINGOS/ExtUtils-Install-2.14.tar.gz',
         'FILES'        => q[cpan/ExtUtils-Install],
         'EXCLUDED'     => [
             qw( t/lib/Test/Builder.pm
@@ -460,7 +460,7 @@ use File::Glob qw(:case);
     },
 
     'ExtUtils::MakeMaker' => {
-        'DISTRIBUTION' => 'BINGOS/ExtUtils-MakeMaker-7.24.tar.gz',
+        'DISTRIBUTION' => 'BINGOS/ExtUtils-MakeMaker-7.30.tar.gz',
         'FILES'        => q[cpan/ExtUtils-MakeMaker],
         'EXCLUDED'     => [
             qr{^t/lib/Test/},
@@ -494,14 +494,12 @@ use File::Glob qw(:case);
     },
 
     'File::Path' => {
-        'DISTRIBUTION' => 'RICHE/File-Path-2.12.tar.gz',
+        'DISTRIBUTION' => 'JKEENAN/File-Path-2.14.tar.gz',
         'FILES'        => q[cpan/File-Path],
         'EXCLUDED'     => [
             qw(t/Path-Class.t),
             qr{^xt/},
         ],
-        # https://github.com/rpcme/File-Path/pull/34
-        'CUSTOMIZED' => [ qw( lib/File/Path.pm t/Path_win32.t ) ],
     },
 
     'File::Temp' => {
@@ -525,7 +523,7 @@ use File::Glob qw(:case);
     },
 
     'Filter::Util::Call' => {
-        'DISTRIBUTION' => 'RURBAN/Filter-1.55.tar.gz',
+        'DISTRIBUTION' => 'RURBAN/Filter-1.57.tar.gz',
         'FILES'        => q[cpan/Filter-Util-Call
                  pod/perlfilter.pod
                 ],
@@ -561,7 +559,7 @@ use File::Glob qw(:case);
     },
 
     'Getopt::Long' => {
-        'DISTRIBUTION' => 'JV/Getopt-Long-2.49.1.tar.gz',
+        'DISTRIBUTION' => 'JV/Getopt-Long-2.50.tar.gz',
         'FILES'        => q[cpan/Getopt-Long],
         'EXCLUDED'     => [
             qr{^examples/},
@@ -620,7 +618,7 @@ use File::Glob qw(:case);
     },
 
     'IO::Socket::IP' => {
-        'DISTRIBUTION' => 'PEVANS/IO-Socket-IP-0.38.tar.gz',
+        'DISTRIBUTION' => 'PEVANS/IO-Socket-IP-0.39.tar.gz',
         'FILES'        => q[cpan/IO-Socket-IP],
         'EXCLUDED'     => [
             qr{^examples/},
@@ -633,7 +631,7 @@ use File::Glob qw(:case);
     },
 
     'IPC::Cmd' => {
-        'DISTRIBUTION' => 'BINGOS/IPC-Cmd-0.96.tar.gz',
+        'DISTRIBUTION' => 'BINGOS/IPC-Cmd-0.98.tar.gz',
         'FILES'        => q[cpan/IPC-Cmd],
     },
 
@@ -648,14 +646,8 @@ use File::Glob qw(:case);
     },
 
     'JSON::PP' => {
-        'DISTRIBUTION' => 'MAKAMAKA/JSON-PP-2.27400.tar.gz',
+        'DISTRIBUTION' => 'ISHIGAKI/JSON-PP-2.94.tar.gz',
         'FILES'        => q[cpan/JSON-PP],
-        'CUSTOMIZED'   => [
-            'bin/json_pp',    # CVE-2016-1238
-            'lib/JSON/PP.pm', # CVE-2016-1238, CPAN RT 118469
-            't/011_pc_expo.t',      # CPAN RT 118469
-            't/018_json_checker.t', # CPAN RT 118469
-        ],
     },
 
     'lib' => {
@@ -684,7 +676,7 @@ use File::Glob qw(:case);
     },
 
     'Locale-Codes' => {
-        'DISTRIBUTION' => 'SBECK/Locale-Codes-3.42.tar.gz',
+        'DISTRIBUTION' => 'SBECK/Locale-Codes-3.52.tar.gz',
         'FILES'        => q[cpan/Locale-Codes],
         'EXCLUDED'     => [
             qw( README.first
@@ -758,7 +750,7 @@ use File::Glob qw(:case);
     },
 
     'Math::BigRat' => {
-        'DISTRIBUTION' => 'PJACKLAM/Math-BigRat-0.2611.tar.gz',
+        'DISTRIBUTION' => 'PJACKLAM/Math-BigRat-0.2613.tar.gz',
         'FILES'        => q[cpan/Math-BigRat],
         'EXCLUDED'     => [
             qr{^t/author-},
@@ -802,7 +794,7 @@ use File::Glob qw(:case);
     },
 
     'Module::CoreList' => {
-        'DISTRIBUTION' => 'BINGOS/Module-CoreList-5.20170420.tar.gz',
+        'DISTRIBUTION' => 'BINGOS/Module-CoreList-5.20170621.tar.gz',
         'FILES'        => q[dist/Module-CoreList],
     },
 
@@ -967,17 +959,8 @@ use File::Glob qw(:case);
     },
 
     'Scalar-List-Utils' => {
-        'DISTRIBUTION' => 'PEVANS/Scalar-List-Utils-1.46.tar.gz',
+        'DISTRIBUTION' => 'PEVANS/Scalar-List-Utils-1.48.tar.gz',
         'FILES'        => q[cpan/Scalar-List-Utils],
-        'CUSTOMIZED'   => [
-            'lib/List/Util.pm',    # CPAN RT 118470
-            'lib/List/Util/XS.pm', # CPAN RT 118470
-            'lib/Scalar/Util.pm',  # CPAN RT 118470
-            'lib/Sub/Util.pm',     # CPAN RT 118470
-            't/lln.t',             # CPAN RT 118470
-            't/uniq.t',            # CPAN RT 118470
-            't/tainted.t',         # CPAN RT 119169
-        ],
     },
 
     'Search::Dict' => {
@@ -1062,7 +1045,7 @@ use File::Glob qw(:case);
     },
 
     'Test::Harness' => {
-        'DISTRIBUTION' => 'LEONT/Test-Harness-3.38.tar.gz',
+        'DISTRIBUTION' => 'LEONT/Test-Harness-3.39.tar.gz',
         'FILES'        => q[cpan/Test-Harness],
         'EXCLUDED'     => [
             qr{^examples/},
@@ -1161,7 +1144,7 @@ use File::Glob qw(:case);
     },
 
     'threads' => {
-        'DISTRIBUTION' => 'JDHEDDEN/threads-2.15.tar.gz',
+        'DISTRIBUTION' => 'JDHEDDEN/threads-2.16.tar.gz',
         'FILES'        => q[dist/threads],
         'EXCLUDED'     => [
             qr{^examples/},
@@ -1173,7 +1156,7 @@ use File::Glob qw(:case);
     },
 
     'threads::shared' => {
-        'DISTRIBUTION' => 'JDHEDDEN/threads-shared-1.55.tar.gz',
+        'DISTRIBUTION' => 'JDHEDDEN/threads-shared-1.57.tar.gz',
         'FILES'        => q[dist/threads-shared],
         'EXCLUDED'     => [
             qw( examples/class.pl
@@ -1195,7 +1178,7 @@ use File::Glob qw(:case);
     },
 
     'Time::HiRes' => {
-        'DISTRIBUTION' => 'JHI/Time-HiRes-1.9741.tar.gz',
+        'DISTRIBUTION' => 'JHI/Time-HiRes-1.9742.tar.gz',
         'FILES'        => q[dist/Time-HiRes],
     },
 
@@ -1214,7 +1197,7 @@ use File::Glob qw(:case);
     },
 
     'Time::Piece' => {
-        'DISTRIBUTION' => 'ESAYM/Time-Piece-1.31.tar.gz',
+        'DISTRIBUTION' => 'ESAYM/Time-Piece-1.3201.tar.gz',
         'FILES'        => q[cpan/Time-Piece],
     },
 
diff --git a/Porting/bench.pl b/Porting/bench.pl
index efff214e7a..0bb3fd89ab 100755
--- a/Porting/bench.pl
+++ b/Porting/bench.pl
@@ -14,24 +14,21 @@ perls.
     # Basic: run the tests in t/perf/benchmarks against two or
     # more perls
 
-    bench.pl [options] -- perlA[=labelA] perlB[=labelB] ...
+    bench.pl [options] perlA[=labelA] perlB[=labelB] ...
 
-    # run the tests against same perlA 2x, with and without extra
-    # options
+    # run the tests against the same perl twice, with varying options
 
-    bench.pl [options] -- perlA=fast PerlA=slow -Mstrict -Dpsltoc 
+    bench.pl [options] perlA=bigint --args='-Mbigint' perlA=plain
 
-    # Run bench.pl's own built-in sanity tests
+    # Run bench on blead, saving results to file; then modify the blead
+    # binary, and benchmark again, comparing against the saved results
 
-    bench.pl --action=selftest
+    bench.pl [options] --write=blead.time ./perl=blead
+    # ... hack hack hack, updating ./perl ...
+    bench.pl --read=blead.time ./perl=hacked
 
-    # Run bench on blead, which is then modified and timed again
+    # You can also combine --read with --write and new benchmark runs
 
-    bench.pl [options] --write=blead.time -- ./perl=blead
-    # hack hack hack
-    bench.pl --read=blead.time -- ./perl=hacked
-
-    # You can also combine --read with --write
     bench.pl --read=blead.time --write=last.time -- ./perl=hacked
 
 =head1 DESCRIPTION
@@ -39,8 +36,9 @@ perls.
 By default, F<bench.pl> will run code snippets found in
 F<t/perf/benchmarks> (or similar) under cachegrind, in order to calculate
 how many instruction reads, data writes, branches, cache misses, etc. that
-one execution of the snippet uses. It will run them against two or more
-perl executables and show how much each test has gotten better or worse.
+one execution of the snippet uses. Usually it will run them against two or
+more perl executables and show how much each test has gotten better or
+worse.
 
 It is modelled on the F<perlbench> tool, but since it measures instruction
 reads etc., rather than timings, it is much more precise and reproducible.
@@ -53,15 +51,40 @@ There are options to write the raw data to a file, and to 
read it back.
 This means that you can view the same run data in different views with
 different selection and sort options. You can also use this mechanism
 to save the results of timing one perl, and then read it back while timing
-a modification, so that you dont have rerun the same tests on the same
-perl over and over, or have two perls built at the same time.
+a modification, so that you don't have rerun the same tests on the same
+perl over and over, or have two perl executables built at the same time.
 
 The optional C<=label> after each perl executable is used in the display
 output. If you are doing a two step benchmark then you should provide
-a label for at least the "base" perl.
+a label for at least the "base" perl. If a label isn't specified, it
+defaults to the name of the perl executable. Labels must be unique across
+all current executables, plus any previous ones obtained via --read.
+
+In its most general form, the specification of a perl executable is:
+
+    path/perl=+mylabel --args='-foo -bar' --args='-baz' \
+                       --env='A=a' --env='B=b'
+
+This defines how to run the executable F<path/perl>. It has a label,
+which due to the C<+>, is appended to the binary name to give a label of
+C<path/perl=+mylabel> (without the C<+>, the label would be just
+C<mylabel>).
+
+It can be optionally followed by one or more C<--args> or C<--env>
+switches, which specify extra command line arguments or environment
+variables to use when invoking that executable. Each C<--env> switch
+should be of the form C<--env=VARIABLE=value>. Any C<--arg> values are
+concatenated to the eventual command line, along with the global
+C<--perlargs> value if any. The above would cause a system() call looking
+something like:
+
+    PERL_HASH_SEED=0 A=a B=b valgrind --tool=cachegrind \
+        path/perl -foo -bar -baz ....
 
 =head1 OPTIONS
 
+=head2 General options
+
 =over 4
 
 =item *
@@ -74,131 +97,110 @@ I<selftest>, which runs some basic sanity checks and 
produces TAP output.
 
 =item *
 
---average
+--debug
 
-Only display the overall average, rather than the results for each
-individual test.
+Enable verbose debugging output.
 
 =item *
 
---benchfile=I<foo>
+---help
 
-The path of the file which contains the benchmarks (F<t/perf/benchmarks>
-by default).
+Display basic usage information.
 
 =item *
 
---bisect=I<field,minval,maxval>
+--verbose
 
-Run a single test against one perl and exit with a zero status if the
-named field is in the specified range; exit 1 otherwise. It will complain
-if more than one test or perl has been specified. It is intended to be
-called as part of a bisect run, to determine when something changed.
-For example,
+Display progress information.
 
-    bench.pl -j 8 --tests=foo --bisect=Ir,100,105 --perlargs=-Ilib \
-        ./miniperl
+=back
 
-might be called from bisect to find when the number of instruction reads
-for test I<foo> falls outside the range 100..105.
+=head2 Test selection options
+
+=over 4
 
 =item *
 
---compact=<Iperl>
+--tests=I<FOO>
 
-Display the results for a single perl executable in a compact form.
-Which perl to display is specified in the same manner as C<--norm>.
+Specify a subset of tests to run (or in the case of C<--read>, to read).
+It may be either a comma-separated list of test names, or a regular
+expression. For example
 
-=item *
+    --tests=expr::assign::scalar_lex,expr::assign::2list_lex
+    --tests=/^expr::/
 
---debug
 
-Enable verbose debugging output.
+=back
 
-=item *
+=head2 Input options
 
---fields=I<a,b,c>
+=over 4
 
-Display only the specified fields; for example,
 
-    --fields=Ir,Ir_m,Ir_mm
+=item *
 
-If only one field is selected, the output is in more compact form.
+-r I<file>
+--read=I<file>
 
-=item *
+Read in saved data from a previous C<--write> run from the specified file.
+If C<--tests> is present too, then only tests matching those conditions
+are read from the file.
 
---grindargs=I<foo>
+C<--read> may be specified multiple times, in which case the results
+across all files are aggregated. The list of test names from each file
+(after filtering by C<--tests>) must be identical across all files.
 
-Optional command-line arguments to pass to all cachegrind invocations.
+This list of tests is used instead of that obtained from the normal
+benchmark file (or C<--benchfile>) for any benchmarks that are run.
+
+The perl labels must be unique across all read in test results.
 
-This option is appended to those which bench.pl uses for its own
-purposes; so it can be used to override them (see --debug output
-below), and can also be 'abused' to add redirects into the valgrind
-command invocation.
+Requires C<JSON::PP> to be available.
 
-For example, this writes PERL_MEM_LOG activity to foobar.$$, because
-3>foobar.$$ redirects fd 3, then perl under PERL_MEM_LOG writes to fd 3.
+=back
 
- $ perl Porting/bench.pl --jobs=2 --verbose --debug \
-    --tests=call::sub::amp_empty \
-    \
-    --grindargs='--cachegrind-out-file=junk.$$ 3>foobar.$$' \
-    -- \
-    perl5.24.0 perl5.24.0:+memlog:PERL_MEM_LOG=3mst
+=head2 Benchmarking options
 
-for the +memlog tests, this executes as: (shown via --debug, then prettyfied)
+Benchmarks will be run for all perls specified on the command line.
+These options can be used to modify the benchmarking behavior:
 
-  Command: PERL_HASH_SEED=0 PERL_MEM_LOG=3mst
-    valgrind --tool=cachegrind  --branch-sim=yes
-    --cachegrind-out-file=/dev/null --cachegrind-out-file=junk.$$
-    3>foobar.$$ perl5.24.0  - 10 2>&1
+=over 4
 
-The result is that a set of junk.$$ files containing raw cachegrind
-output are written, and foobar.$$ contains the expected memlog output.
+=item *
 
-Notes:
+--autolabel
 
-Theres no obvious utility for those junk.$$ and foobar.$$ files, but
-you can have them anyway.
+Generate a unique label for every executable which doesn't have an
+explicit C<=label>. Works by stripping out common prefixes and suffixes
+from the executable names, then for any non-unique names, appending
+C<-0>, C<-1>, etc. text directly surrounding the unique part which look
+like version numbers (i.e. which match C</[0-9\.]+/>) aren't stripped.
+For example,
 
-The 3 in PERL_MEM_LOG=3mst is needed because the output would
-otherwize go to STDERR, and cause parse_cachegrind() to reject the
-test and die.
+    perl-5.20.0-threaded  perl-5.22.0-threaded  perl-5.24.0-threaded
 
-The --grindargs redirect is needed to capture the memlog output;
-without it, the memlog output is written to fd3, around
-parse_cachegrind and effectively into /dev/null
+stripped to unique parts would be:
 
-PERL_MEM_LOG is expensive when used.
+    20  22  24
 
-call::sub::amp_empty
-&foo function call with no args or body
+but is actually only stripped down to:
 
-       perl5.24.0 perl5.24.0+memlog
-       ---------- -----------------
-    Ir      394.0          543477.5
-    Dr      161.0          146814.1
-    Dw       72.0          122304.6
-  COND       58.0           66796.4
-   IND        5.0            5537.7
+    5.20.0  5.22.0  5.24.0
 
-COND_m        0.0            6743.1
- IND_m        5.0            1490.2
 
- Ir_m1        0.0             683.7
- Dr_m1        0.0              65.9
- Dw_m1        0.0               8.5
+=item *
 
- Ir_mm        0.0              11.6
- Dr_mm        0.0              10.6
- Dw_mm        0.0               4.7
+--benchfile=I<foo>
 
+The path of the file which contains the benchmarks (F<t/perf/benchmarks>
+by default).
 
 =item *
 
----help
+--grindargs=I<foo>
 
-Display basic usage information.
+Optional command-line arguments to pass to all cachegrind invocations.
 
 =item *
 
@@ -206,82 +208,126 @@ Display basic usage information.
 --jobs=I<N>
 
 Run I<N> jobs in parallel (default 1). This determines how many cachegrind
-process will running at a time, and should generally be set to the number
+process will run at a time, and should generally be set to the number
 of CPUs available.
 
 =item *
 
---norm=I<foo>
+--perlargs=I<foo>
 
-Specify which perl column in the output to treat as the 100% norm.
-It may be a column number (0..N-1) or a perl executable name or label.
-It defaults to the leftmost column.
+Optional command-line arguments to pass to every perl executable.  This
+may optionaly be combined with C<--args> switches following individual
+perls. For example:
+
+    bench.pl --perlargs='-Ilib -It/lib' .... \
+        perlA --args='-Mstrict' \
+        perlB --args='-Mwarnings'
+
+would cause the invocations
+
+    perlA -Ilib -It/lib -Mstrict
+    perlB -Ilib -It/lib -Mwarnings
+
+=back
+
+=head2 Output options
+
+Any results accumulated via --read or by running benchmarks can be output
+in any or all of these three ways:
+
+=over 4
 
 =item *
 
---perlargs=I<foo>
+-w I<file>
+--write=I<file>
+
+Save the raw data to the specified file. It can be read back later with
+C<--read>. If combined with C<--read> then the output file will be
+the merge of the file read and any additional perls added on the command
+line.
 
-Optional command-line arguments to pass to each perl-under-test
-(perlA, perlB in synopsis) For example, C<--perlargs=-Ilib>.
+Requires C<JSON::PP> to be available.
 
 =item *
 
---raw
+--bisect=I<field,minval,maxval>
 
-Display raw data counts rather than percentages in the outputs. This
-allows you to see the exact number of intruction reads, branch misses etc.
-for each test/perl combination. It also causes the C<AVERAGE> display
-per field to be calculated based on the average of each tests's count
-rather than average of each percentage. This means that tests with very
-high counts will dominate.
+Exit with a zero status if the named field is in the specified range;
+exit with 1 otherwise. It will complain if more than one test or perl has
+been specified. It is intended to be called as part of a bisect run, to
+determine when something changed.  For example,
+
+    bench.pl -j 8 --tests=foo --bisect=Ir,100,105 --perlargs=-Ilib \
+        ./miniperl
+
+might be called from bisect to find when the number of instruction reads
+for test I<foo> falls outside the range 100..105.
 
 =item *
 
---sort=I<field:perl>
+--show
 
-Order the tests in the output based on the value of I<field> in the
-column I<perl>. The I<perl> value is as per C<--norm>. For example
+Display the results to stdout in human-readable form.  This is enabled by
+default, except with --write and --bisect. The following sub-options alter
+how --show behaves.
 
-    bench.pl --sort=Dw:perl-5.20.0 \
-        perl-5.16.0 perl-5.18.0 perl-5.20.0
+=over 4
 
 =item *
 
--r I<file>
---read=I<file>
+--average
 
-Read in saved data from a previous C<--write> run from the specified file.
+Only display the overall average, rather than the results for each
+individual test.
 
-Requires C<JSON::PP> to be available.
+=item *
+
+--compact=I<perl>
+
+Display the results for a single perl executable in a compact form.
+Which perl to display is specified in the same manner as C<--norm>.
 
 =item *
 
---tests=I<FOO>
+--fields=I<a,b,c>
 
-Specify a subset of tests to run (or in the case of C<--read>, to display).
-It may be either a comma-separated list of test names, or a regular
-expression. For example
+Display only the specified fields; for example,
 
-    --tests=expr::assign::scalar_lex,expr::assign::2list_lex
-    --tests=/^expr::/
+    --fields=Ir,Ir_m,Ir_mm
+
+If only one field is selected, the output is in more compact form.
 
 =item *
 
---verbose
+--norm=I<foo>
 
-Display progress information.
+Specify which perl column in the output to treat as the 100% norm.
+It may be a column number (0..N-1) or a perl executable name or label.
+It defaults to the leftmost column.
 
 =item *
 
--w I<file>
---write=I<file>
+--raw
 
-Save the raw data to the specified file. It can be read back later with
-C<--read>. If combined with C<--read> then the output file will be
-the merge of the file read and any additional perls added on the command
-line.
+Display raw data counts rather than percentages in the outputs. This
+allows you to see the exact number of intruction reads, branch misses etc.
+for each test/perl combination. It also causes the C<AVERAGE> display
+per field to be calculated based on the average of each tests's count
+rather than average of each percentage. This means that tests with very
+high counts will dominate.
 
-Requires C<JSON::PP> to be available.
+=item *
+
+--sort=I<field:perl>
+
+Order the tests in the output based on the value of I<field> in the
+column I<perl>. The I<perl> value is as per C<--norm>. For example
+
+    bench.pl --sort=Dw:perl-5.20.0 \
+        perl-5.16.0 perl-5.18.0 perl-5.20.0
+
+=back
 
 =back
 
@@ -310,53 +356,88 @@ my %VALID_FIELDS = map { $_ => 1 }
 
 sub usage {
     die <<EOF;
-usage: $0 [options] -- perl[=label] ...
-  --action=foo       What action to perform [default: grind].
-  --average          Only display average, not individual test results.
-  --benchfile=foo    File containing the benchmarks;
-                       [default: t/perf/benchmarks].
-  --bisect=f,min,max run a single test against one perl and exit with a
-                       zero status if the named field is in the specified
-                       range; exit 1 otherwise.
-  --compact=perl     Display the results of a single perl in compact form.
-                     Which perl specified like --norm
+Usage: $0 [options] -- perl[=label] ...
+
+General options:
+
+  --action=foo       What action to perform [default: grind]:
+                        grind      run the code under cachegrind
+                        selftest   perform a selftest; produce TAP output
   --debug            Enable verbose debugging output.
-  --fields=a,b,c     Display only the specified fields (e.g. Ir,Ir_m,Ir_mm).
-  --grindargs=foo    Optional command-line args to pass to cachegrind.
   --help             Display this help.
+  --verbose          Display progress information.
+
+
+Selection:
+
+  --tests=FOO        Select only the specified tests for reading, benchmarking
+                       and display.  FOO may be either a list of tests or
+                       a pattern: 'foo,bar,baz' or '/regex/';
+                       [default: all tests].
+
+Input:
+
+  -r|--read=file     Read in previously saved data from the specified file.
+                        May be repeated, and be used together with new
+                        benchmarking to create combined results.
+
+Benchmarking:
+  Benchmarks will be run for any perl specified on the command line.
+  These options can be used to modify the benchmarking behavior:
+
+  --autolabel        generate labels for any executables without one
+  --benchfile=foo    File containing the benchmarks.
+                         [default: t/perf/benchmarks].
+  --grindargs=foo    Optional command-line args to pass to cachegrind.
   -j|--jobs=N        Run N jobs in parallel [default 1].
-  --norm=perl        Which perl column to treat as 100%; may be a column
-                       number (0..N-1) or a perl executable name or label;
-                       [default: 0].
   --perlargs=foo     Optional command-line args to pass to each perl to run.
-  --raw              Display raw data counts rather than percentages.
-  --show             Show results even though we are going to write results.
-  --sort=field:perl  Sort the tests based on the value of 'field' in the
+
+Output:
+  Any results accumulated via --read or running benchmarks can be output
+  in any or all of these three ways:
+
+  -w|--write=file    Save the raw data to the specified file (may be read
+                       back later with --read).
+
+  --bisect=f,min,max Exit with a zero status if the named field f is in
+                       the specified min..max range; exit 1 otherwise.
+                       Produces no other output. Only legal if a single
+                       benchmark test has been specified.
+
+  --show             Display the results to stdout in human-readable form.
+                       This is enabled by default, except with --write and
+                       --bisect. The following sub-options alter how
+                       --show behaves.
+
+    --average          Only display average, not individual test results.
+    --compact=perl     Display the results of a single perl in compact form.
+                       Which perl specified like --norm
+    --fields=a,b,c     Display only the specified fields (e.g. Ir,Ir_m,Ir_mm).
+    --norm=perl        Which perl column to treat as 100%; may be a column
+                         number (0..N-1) or a perl executable name or label;
+                         [default: 0].
+    --raw              Display raw data counts rather than percentages.
+    --sort=field:perl  Sort the tests based on the value of 'field' in the
                        column 'perl'. The perl value is as per --norm.
-  -r|--read=file     Read in previously saved data from the specified file.
-  --tests=FOO        Select only the specified tests from the benchmarks file;
-                       FOO may be either of the form 'foo,bar' or '/regex/';
-                       [default: all tests].
-  --verbose          Display progress information.
-  -w|--write=file    Save the raw data to the specified file.
 
---action is one of:
-    grind            run the code under cachegrind
-    selftest         perform a selftest; produce TAP output
 
 The command line ends with one or more specified perl executables,
 which will be searched for in the current \$PATH. Each binary name may
 have an optional =LABEL appended, which will be used rather than the
-executable name in output. E.g.
+executable name in output. The labels must be unique across all current
+executables and previous runs obtained via --read. Each executable may
+optionally be succeeded by --args= and --env= to specify per-executable
+arguments and environmenbt variables:
 
-    perl-5.20.1=PRE-BUGFIX  perl-5.20.1-new=POST-BUGFIX
+    perl-5.24.0=strict --args='-Mwarnings -Mstrict' --env='FOO=foo' \
+    perl-5.24.0=plain
 EOF
 }
 
 my %OPTS = (
     action    => 'grind',
     average   => 0,
-    benchfile => 't/perf/benchmarks',
+    benchfile => undef,
     bisect    => undef,
     compact   => undef,
     debug     => 0,
@@ -367,7 +448,7 @@ my %OPTS = (
     perlargs  => '',
     raw       => 0,
     read      => undef,
-    show      => 0,
+    show      => undef,
     sort      => undef,
     tests     => undef,
     verbose   => 0,
@@ -381,24 +462,25 @@ my %OPTS = (
     GetOptions(
         'action=s'    => \$OPTS{action},
         'average'     => \$OPTS{average},
+        'autolabel'   => \$OPTS{autolabel},
         'benchfile=s' => \$OPTS{benchfile},
         'bisect=s'    => \$OPTS{bisect},
         'compact=s'   => \$OPTS{compact},
         'debug'       => \$OPTS{debug},
         'grindargs=s' => \$OPTS{grindargs},
-        'help'        => \$OPTS{help},
+        'help|h'      => \$OPTS{help},
         'fields=s'    => \$OPTS{fields},
         'jobs|j=i'    => \$OPTS{jobs},
         'norm=s'      => \$OPTS{norm},
         'perlargs=s'  => \$OPTS{perlargs},
         'raw'         => \$OPTS{raw},
-        'read|r=s'    => \$OPTS{read},
-        'show!'       => \$OPTS{show},
+        'read|r=s@'   => \$OPTS{read},
+        'show'        => \$OPTS{show},
         'sort=s'      => \$OPTS{sort},
         'tests=s'     => \$OPTS{tests},
         'verbose'     => \$OPTS{verbose},
         'write|w=s'   => \$OPTS{write},
-    ) or usage;
+    ) or die "Use the -h option for usage information.\n";
 
     usage if $OPTS{help};
 
@@ -431,7 +513,7 @@ my %OPTS = (
               . "'$OPTS{sort}'\n";
         }
         my ($field, $perl) = @s;
-        die "Error: --sort: unknown field '$field\n"
+        die "Error: --sort: unknown field '$field'\n"
             unless $VALID_FIELDS{$field};
         # the 'perl' value will be validated later, after we have processed
         # the perls
@@ -439,24 +521,16 @@ my %OPTS = (
         $OPTS{'sort-perl'}  = $perl;
     }
 
-    if ($OPTS{action} eq 'selftest') {
-        if (@ARGV) {
-            die "Error: no perl executables may be specified with --read\n"
-        }
-    }
-    elsif (defined $OPTS{bisect}) {
-        die "Error: exactly one perl executable must be specified for bisect\n"
-                                                unless @ARGV == 1;
-        die "Error: Can't specify both --bisect and --read\n"
-                                                if defined $OPTS{read};
-        die "Error: Can't specify both --bisect and --write\n"
-                                                if defined $OPTS{write};
-    }
+    # show is the default output action
+    $OPTS{show} = 1 unless $OPTS{write} || $OPTS{bisect};
 
     if ($OPTS{action} eq 'grind') {
         do_grind(\@ARGV);
     }
     elsif ($OPTS{action} eq 'selftest') {
+        if (@ARGV) {
+            die "Error: no perl executables may be specified with selftest\n"
+        }
         do_selftest();
     }
 }
@@ -484,10 +558,18 @@ sub filter_tests {
     else {
         my %t;
         for (split /,/, $opt) {
-            die "Error: no such test found: '$_'\n"
-                . ($OPTS{verbose} ? "  have: @{[ sort keys %$tests ]}\n" : "")
-                unless exists $tests->{$_};
             $t{$_} = 1;
+            next if exists $tests->{$_};
+
+            my $e = "Error: no such test found: '$_'\n";
+            if ($OPTS{verbose}) {
+                $e .= "Valid test names are:\n";
+                $e .= "  $_\n" for sort keys %$tests;
+            }
+            else {
+                $e .= "Re-run with --verbose for a list of valid tests.\n";
+            }
+            die $e;
         }
         for (keys %$tests) {
             delete $tests->{$_} unless exists $t{$_};
@@ -510,7 +592,9 @@ sub read_tests_file {
         $ta = do $file;
     }
     unless ($ta) {
-        die "Error: can't parse '$file': $@\n" if $@;
+        die "Error: can't load '$file': code didn't return a true value\n"
+                if defined $ta;
+        die "Error: can't parse '$file':\n$@\n" if $@;
         die "Error: can't read '$file': $!\n";
     }
 
@@ -525,8 +609,8 @@ sub read_tests_file {
 }
 
 
-# Process the perl/column argument of options like --norm and --sort.
-# Return the index of the matching perl.
+# Process the perl name/label/column argument of options like --norm and
+# --sort.  Return the index of the matching perl.
 
 sub select_a_perl {
     my ($perl, $perls, $who) = @_;
@@ -549,41 +633,143 @@ sub select_a_perl {
 }
 
 
-# Validate the list of perl=label (+ cmdline options) on the command line.
-# Return a list of [ exe, label, cmdline-options ] tuples, i.e.
-# 'perl-under-test's (PUTs)
+# Validate the list of perl executables on the command line.
+# The general form is
+#
+#      a_perl_exe[=label] [ --args='perl args'] [ --env='FOO=foo' ]
+#
+# Return a list of [ exe, label, {env}, 'args' ] tuples
+
+sub process_executables_list {
+    my ($read_perls, @cmd_line_args) = @_;
+
+    my @results; # returned, each item is [ perlexe, label, {env}, 'args' ]
+    my %seen_from_reads = map { $_->[1] => 1 } @$read_perls;
+    my %seen;
+    my @labels;
 
-sub process_puts {
-    my $read_perls= shift;
-    my @res_puts; # returned, each item is [ perlexe, label, @putargs ]
-    my %seen= map { $_->[1] => 1 } @$read_perls;
-    my @putargs; # collect not-perls into args per PUT
+    while (@cmd_line_args) {
+        my $item = shift @cmd_line_args;
 
-    for my $p (reverse @_) {
-        push @putargs, $p and next if $p =~ /^-/; # not-perl, dont send to qx//
+        if ($item =~ /^--(.*)$/) {
+            my ($switch, $val) = split /=/, $1, 2;
+            die "Error: unrecognised executable switch '--$switch'\n"
+                unless $switch =~  /^(args|env)$/;
 
-        my ($perl, $label, $env) = split /[=:,]/, $p, 3;
-        $label //= $perl;
-        $label = $perl.$label if $label =~ /^\+/;
-        die "$label cannot be used on 2 different perls under test\n" if 
$seen{$label}++;
+            die "Error: --$switch without a preceding executable name\n"
+                unless @results;
 
-        my %env;
-        if ($env) {
-            %env = split /[=,]/, $env;
+            unless (defined $val) {
+                $val = shift @cmd_line_args;
+                die "Error: --$switch is missing value\n"
+                    unless defined $val;
+            }
+
+            if ($switch eq 'args') {
+                $results[-1][3] .= " $val";
+            }
+            else {
+                # --env
+                $val =~ /^(\w+)=(.*)$/
+                    or die "Error: --env is missing =value\n";
+                $results[-1][2]{$1} = $2;
+            }
+
+            next;
+        }
+
+        # whatever is left must be the name of an executable
+
+        my ($perl, $label) = split /=/, $item, 2;
+        push @labels, $label;
+        unless ($OPTS{autolabel}) {
+            $label //= $perl;
+            $label = $perl.$label if $label =~ /^\+/;
         }
+
+        die "Error: duplicate label '$label': "
+                        . "each executable must have a unique label\n"
+            if defined $label && $seen{$label}++;
+
+        die "Error: duplicate label '$label': "
+                        . "seen both in --read file and on command line\n"
+            if defined $label && $seen_from_reads{$label};
+
         my $r = qx($perl -e 'print qq(ok\n)' 2>&1);
-        if ($r eq "ok\n") {
-           push @res_puts, [ $perl, $label, \%env, reverse @putargs ];
-            @putargs = ();
-            warn "Added Perl-Under-Test: [ @{[@{$res_puts[-1]}]} ]\n"
-                if $OPTS{verbose};
-       } else {
-            warn "perl-under-test args: @putargs + a not-perl: $p $r\n"
-                if $OPTS{verbose};
-            push @putargs, $p; # not-perl
-       }
+        die "Error: unable to execute '$perl': $r\n" if $r ne "ok\n";
+
**** PATCH TRUNCATED AT 2000 LINES -- 162716 NOT SHOWN ****

--
Perl5 Master Repository

Reply via email to