Branch: refs/heads/smoke-me/khw-case Home: https://github.com/Perl/perl5 Commit: 810a7134b8ccbffa381f8bee41b8fb895f7621ac https://github.com/Perl/perl5/commit/810a7134b8ccbffa381f8bee41b8fb895f7621ac Author: Karl Williamson <k...@cpan.org> Date: 2020-09-30 (Wed, 30 Sep 2020)
Changed paths: M cpan/Test-Harness/lib/App/Prove.pm M cpan/Test-Harness/lib/App/Prove/State.pm M cpan/Test-Harness/lib/App/Prove/State/Result.pm M cpan/Test-Harness/lib/App/Prove/State/Result/Test.pm M cpan/Test-Harness/lib/TAP/Base.pm M cpan/Test-Harness/lib/TAP/Formatter/Base.pm M cpan/Test-Harness/lib/TAP/Formatter/Color.pm M cpan/Test-Harness/lib/TAP/Formatter/Console.pm M cpan/Test-Harness/lib/TAP/Formatter/Console/ParallelSession.pm M cpan/Test-Harness/lib/TAP/Formatter/Console/Session.pm M cpan/Test-Harness/lib/TAP/Formatter/File.pm M cpan/Test-Harness/lib/TAP/Formatter/File/Session.pm M cpan/Test-Harness/lib/TAP/Formatter/Session.pm M cpan/Test-Harness/lib/TAP/Harness.pm M cpan/Test-Harness/lib/TAP/Harness/Env.pm M cpan/Test-Harness/lib/TAP/Object.pm M cpan/Test-Harness/lib/TAP/Parser.pm M cpan/Test-Harness/lib/TAP/Parser/Aggregator.pm M cpan/Test-Harness/lib/TAP/Parser/Grammar.pm M cpan/Test-Harness/lib/TAP/Parser/Iterator.pm M cpan/Test-Harness/lib/TAP/Parser/Iterator/Array.pm M cpan/Test-Harness/lib/TAP/Parser/Iterator/Process.pm M cpan/Test-Harness/lib/TAP/Parser/Iterator/Stream.pm M cpan/Test-Harness/lib/TAP/Parser/IteratorFactory.pm M cpan/Test-Harness/lib/TAP/Parser/Multiplexer.pm M cpan/Test-Harness/lib/TAP/Parser/Result.pm M cpan/Test-Harness/lib/TAP/Parser/Result/Bailout.pm M cpan/Test-Harness/lib/TAP/Parser/Result/Comment.pm M cpan/Test-Harness/lib/TAP/Parser/Result/Plan.pm M cpan/Test-Harness/lib/TAP/Parser/Result/Pragma.pm M cpan/Test-Harness/lib/TAP/Parser/Result/Test.pm M cpan/Test-Harness/lib/TAP/Parser/Result/Unknown.pm M cpan/Test-Harness/lib/TAP/Parser/Result/Version.pm M cpan/Test-Harness/lib/TAP/Parser/Result/YAML.pm M cpan/Test-Harness/lib/TAP/Parser/ResultFactory.pm M cpan/Test-Harness/lib/TAP/Parser/Scheduler.pm M cpan/Test-Harness/lib/TAP/Parser/Scheduler/Job.pm M cpan/Test-Harness/lib/TAP/Parser/Scheduler/Spinner.pm M cpan/Test-Harness/lib/TAP/Parser/Source.pm M cpan/Test-Harness/lib/TAP/Parser/SourceHandler.pm M cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Executable.pm M cpan/Test-Harness/lib/TAP/Parser/SourceHandler/File.pm M cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Handle.pm M cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Perl.pm M cpan/Test-Harness/lib/TAP/Parser/SourceHandler/RawTAP.pm M cpan/Test-Harness/lib/TAP/Parser/YAMLish/Reader.pm M cpan/Test-Harness/lib/TAP/Parser/YAMLish/Writer.pm M cpan/Test-Harness/lib/Test/Harness.pm Log Message: ----------- TAP::Harness: Move timer initialization Prior to this commit, the timers for counting elapsed time and CPU usage were begun when a job's first output appears. This yields inaccurate results. These results are saved in t/test_state for future runs so that they can start the longest-running tests first, which leads to using the available cores more efficiently. (If you start a long running test after everything else is nearly done, you have to wait for it to finish before the suite as a whole is; if you start the long ones first, and the shortest last, you don't have to wait very long for any stragglers to complete.) Inaccurate results here lead to this situation, which we were often seeing in the podcheck.t test. The worst case is if there is heavy computation at the beginning of the test being run. podcheck, for example, examines all the pods in the directory structure to find which links to other pods do or do not have corresponding anchors. Output doesn't happen until the analysis is complete. On my system, this takes over 30 seconds, but prior to this commit, what was noted was just the time required to do the output, about 200 milliseconds. The result was that podcheck was viewed as being one of the shortest tests run, so was started late in the process, and generally held up the completion of it. This commit by itself doesn't improve the test completion very much, because, test tests are run a whole directory at a time, and the directory podcheck is in, for example, is run last. The next commit addresses that. Commit: e0b568a944ce920c77bc9cb5c4c6642a0dd9b149 https://github.com/Perl/perl5/commit/e0b568a944ce920c77bc9cb5c4c6642a0dd9b149 Author: Karl Williamson <k...@cpan.org> Date: 2020-09-30 (Wed, 30 Sep 2020) Changed paths: M t/harness Log Message: ----------- XXX env name: t/harness: Add option for faster test suite execution This commit adds an environment variable, XXX, which if set to non-zero increases the parallelism in the execution of the test suite, speeding it up on systems with multiple cores. Normally, there are two main test sections, one for core and the second for non-core tests, and the testing of the non-core one doesn't begin until the first is complete. Within each section, there are a number of test categories, like 're' for regular expressions, and 'JSON::PP' for the pure perl implementation of JSON. Within each category, there are various single .t test files. Some categories can have those be tested in parallel; some require them to be done in a particular order, say because an earlier .t does setup for subsequent ones. We already have this capability. Completion of all the tests in a category is not needed before those of another category can be started. This is how it already works. However, the core section categories are ordered so that they begin in a logical order for someone trying to get perl to work. First to start are the basic sanity tests, then by roughly decreasing order of widespread use in perl programs in the wild, with the final two categories, porting and perf, being mainly of use to perl5 porters. These two categories aren't started until all the tests in the earlier categories are started. We have some long running tests in those two categories, and generally they delay the start of the entire second section. If those long running tests could be started sooner, shorter tests in the first section could be run in parallel with them, increasing the average CPU utilization, and the second section could begin (and hence end) earlier, shortening the total elapsed execution time of the entire suite. The second section has some very long running tests. JSON-PP is one of them. If it could run in parallel with tests from the first section, that would also speed up the completion of the suite. The environment variable added by this commit does both things. The basic sanity test categories in the first section continue to be started before anything else. But then all other tests are run in decreasing order of elapsed time they take to run, removing the boundaries between some categories, and between the two sections. The gain from this increases as the number of jobs run in parallel does; slower high core platforms have the highest increase. On the old dromedary with 24 cores, the gain is 20%, almost 2 minutes. On my more modern box with 12 cores, it is 8%. Commit: a5714f795ebd2afd66b2db4fe235dfd33dac0d3e https://github.com/Perl/perl5/commit/a5714f795ebd2afd66b2db4fe235dfd33dac0d3e Author: Karl Williamson <k...@cpan.org> Date: 2020-09-30 (Wed, 30 Sep 2020) Changed paths: M regexec.c Log Message: ----------- XXX regrepeat, regmatch? regexec.c: S_find_byclass() Restructure bounds checking This commit moves the traditional bound code, which is the outlier, out of the switch statement for the types. The rest of the cases have common code before and after, so consolidate this to outside the switch, removing duplication. Commit: 20913a4e3972c647cde0089d4a779eb7314eb73a https://github.com/Perl/perl5/commit/20913a4e3972c647cde0089d4a779eb7314eb73a Author: Karl Williamson <k...@cpan.org> Date: 2020-09-30 (Wed, 30 Sep 2020) Changed paths: M regexec.c Log Message: ----------- regexec.c: White-space only Adjust indentation as a result of the previous commit. Commit: 3ad50037f1ade300bf8d33dc96d99d79a0a26b0a https://github.com/Perl/perl5/commit/3ad50037f1ade300bf8d33dc96d99d79a0a26b0a Author: Karl Williamson <k...@cpan.org> Date: 2020-09-30 (Wed, 30 Sep 2020) Changed paths: M pod/perldebguts.pod M regcomp.sym M regnodes.h Log Message: ----------- regcomp.sym: Reorder some entries These are mostly used in regexec.c in three functions. Two of the functions use less than half the available ones, as case labels in a switch() statement. By moving all the ones used by those functions to be nearly contiguous at the beginning, compilers can generate smaller jump tables for the switch(). Commit: 7418994ad33196ade3cf313aee0b16f333d251ab https://github.com/Perl/perl5/commit/7418994ad33196ade3cf313aee0b16f333d251ab Author: Karl Williamson <k...@cpan.org> Date: 2020-09-30 (Wed, 30 Sep 2020) Changed paths: M regen/regcomp.pl Log Message: ----------- regen/regcomp.pl: Extract repeated format to a scalar So if change, only have to change it once. Commit: e7ac45e2290877168a1311988d05a86a946acc69 https://github.com/Perl/perl5/commit/e7ac45e2290877168a1311988d05a86a946acc69 Author: Karl Williamson <k...@cpan.org> Date: 2020-09-30 (Wed, 30 Sep 2020) Changed paths: M regen/regcomp.pl M regnodes.h Log Message: ----------- regen/regcomp.pl: Generate #defines for UTF8ness This causes #defines to be generated for regexec.c to use in switch statements, so that for each opcode there that is a case: there are actually 4 cases, for the the target being UTF-8 or not, combined with the pattern being UTF-8 or not. This will be used in future commits to simplify things. Commit: de59ed19f3bfb1cd97b1323c5f9592f1e6ad49b0 https://github.com/Perl/perl5/commit/de59ed19f3bfb1cd97b1323c5f9592f1e6ad49b0 Author: Karl Williamson <k...@cpan.org> Date: 2020-09-30 (Wed, 30 Sep 2020) Changed paths: M regexec.c Log Message: ----------- regexec.c: S_find_byclass(): utf8ness in switch() This uses the #defines created in the previous commit to make the switch statement in this function incorporate the UTF8ness of both the pattern and the target string. This commit just makes 4 case statements where previously there was one. Future commits will restructure to take advantage of the change to make the code cleaner, and to have fewer conditionals, as many of the case:s first task is to find out the target's and pattern's UTF8ness, Commit: 87e2e0d03907f51408a78e4a7be123703caf5e05 https://github.com/Perl/perl5/commit/87e2e0d03907f51408a78e4a7be123703caf5e05 Author: Karl Williamson <k...@cpan.org> Date: 2020-09-30 (Wed, 30 Sep 2020) Changed paths: M regexec.c Log Message: ----------- XXX flesh out regexec.c find_byclass(): Restructure This moves things around so that the information now carried in the case statements is used without having to recheck it. Commit: ed1331beb2d7547841a8082465cc6b21cf16a836 https://github.com/Perl/perl5/commit/ed1331beb2d7547841a8082465cc6b21cf16a836 Author: Karl Williamson <k...@cpan.org> Date: 2020-09-30 (Wed, 30 Sep 2020) Changed paths: M regexec.c Log Message: ----------- regexec.c: Rename a static variable This is to distinguish it from a similar variable being added in a future commit Commit: f248faee459b2f6e794cea382a87ed0b6f6a9085 https://github.com/Perl/perl5/commit/f248faee459b2f6e794cea382a87ed0b6f6a9085 Author: Karl Williamson <k...@cpan.org> Date: 2020-09-30 (Wed, 30 Sep 2020) Changed paths: M regexec.c Log Message: ----------- regexec.c: Macroize a common paradigm Commit: 348b450731e2dba3d4153f6e3125b0067327c500 https://github.com/Perl/perl5/commit/348b450731e2dba3d4153f6e3125b0067327c500 Author: Karl Williamson <k...@cpan.org> Date: 2020-09-30 (Wed, 30 Sep 2020) Changed paths: M regexec.c Log Message: ----------- regexec.c: Macroize another common paradigm Compare: https://github.com/Perl/perl5/compare/810a7134b8cc%5E...348b450731e2