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
