summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* rework how the trie logic handles the newer EXACT nodetypessmoke-me/trie2Yves Orton2012-02-208-190/+262
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This cleans up and simplifies and extends how the trie logic interacts with the new node types. This change ultimately makes the EXACTFU, EXACTFU_SS, EXACTFU_NO_TRIE (renamed to EXACTFU_TRICKYFOLD) work properly with the trie engine regardless of whether the string is utf8 or latin1. This patch depends on the following: EXACT => utf8 or "binary" text EXACTFU => either pre-folded utf8, or latin1 that has to be folded as though it was utf8 EXACTFU_SS => special case of EXACTFU to handle \xDF/ss (affects latin1 treatment) EXACTFU_TRICKYFOLD => special case of EXACTFU to handle tricky non-latin1 fold rules EXACTF => "old style fold logic" untriable nodetype EXACTFA => (currently) untriable nodetype EXACTFL => (currently) untriable nodetype See the comments in regcomp.sym for these fold types. This patch involves a number of distinct, but related parts. Starting from compilation: * Simplify how we detect a triable sequence given the new nodetypes, this also probably fixed some "bugs" in how we detected certain sequences, like /||foo|bar/. * Simplify how we read EXACTFU nodes under utf8 by removing the now redundant folding logic (EXACTFU nodes under utf8 are prefolded). Also extend this logic to handle latin1 patterns properly (in conjunction with other changes) * Part of the problems associated with EXACTFU_SS and EXACTFU_TRICKYFOLD have to do with how the trie logic interacts with the minlen logic. This change handles both by pessimising the minlen when encounting these nodetypes. One observation is that the minlen logic is basically broken, and works only because it conflates bytes and codepoints in such a way that we more or less always get a value small enough that things work out anyway. Fixing that is properly is the job of another patch. * Part of the problem of doing folding under unicode rules is that there are a lot of foldings possible, some with strange rules. This means that the bitmap logic does not work correctly in all cases, as we currently do not have any way to populate it properly. So this patch disables the bitmap entirely when folding is involved until that is fixed. The end result of this is: we can TRIE/AHOCORASICK any sequence of EXACT, or EXACTFU (ish) nodes, regardless of utf8 or not, but we disable the bitmap when folding. A note for follow up relating to this patch is that the way EXACTFU_XXX nodes are currently dealt with we wont build the "maximal" trie because of their presence, instead creating a "jumptrie" consisting of either a leading EXACTFU node followed by a EXACTFU_XXX node, or vice versa. We should eventually address that.
* make test.pl show test number and name in failure diagnostics outputYves Orton2012-02-201-1/+1
| | | | | | | The old output would show only the line number as diagnostics but not the test number, nor the test name, which often contains very useful information. This patch makes sure this is visible in the diagnostics output of test failures.
* handy.h: Silence Solaris compiler warningKarl Williamson2012-02-191-1/+1
| | | | | Making this an unsigned constant silences the scary and wrong Solaris warnings about integer overflow
* podcheck.t: Typo in podKarl Williamson2012-02-191-1/+1
|
* Avoid defining the same global between perl and re.pmTony Cook2012-02-201-1/+5
| | | | | | This caused -Uusedl builds to fail due to the duplicate symbol. A more complex fix can be expected after 5.16.
* Make t/porting/authors.t work on WindowsMax Maischein2012-02-191-1/+2
| | | | | | | The Windows shell cmd.exe does not know about single quotes. Double quotes are the only thing available here. This patch selects the kind of quote to use based on the operating system and constructs the pipeline accordingly.
* Revert updates to compression librariesRicardo Signes2012-02-1959-1224/+914
| | | | | | | | | | | Revert "Update Compress-Raw-Bzip2 to CPAN version 2.049" This reverts commit db98b5a25ac5537be04f17243c5e929aceb3560b. Revert "Update Compress-Raw_Zlib to CPAN version 2.049" This reverts commit 8b782679b6ea1247bd559efc311e7366582feaad. Revert "Update IO-Compress to CPAN version 2.049" This reverts commit 785e05e1c22f7d7c6ed38839cc28cc6d13a286de.
* epigraphs.pod: Rmv illegal spaces after | in L<>Karl Williamson2012-02-191-3/+3
|
* perlintro: Add missing closing ">"Karl Williamson2012-02-191-1/+1
|
* ...and add unadded fileRicardo Signes2012-02-191-0/+1
|
* remove MANIFEST entries for pruned filesRicardo Signes2012-02-191-2/+0
|
* Refactor the Tk event loop to allow for other event loopsMax Maischein2012-02-194-148/+161
| | | | | | Term::ReadLine supports any event loop, including unpubished ones and simple IO::Select loops without the need to rewrite existing code for any particular framework.
* In S_validate_suid(), move declarations after the first statement.Nicholas Clark2012-02-191-2/+2
| | | | | Otherwise exacting C89 compilers refuse to build the code. And at least one Win32 compiler is exacting on this.
* Refactor code in Data::Dumper to assume that >=5.8.0 is the common case.Nicholas Clark2012-02-192-19/+36
| | | | | | | | | The 5.8.0 versions of &init_refaddr_format and &format_refaddr are now compiled by default, and then redefined with their 5.6.x replacements if it turns out that we're on 5.6.1 or 5.6.2. Previously both versions were compiled, and the correct pair bound using typeglob assignment.
* Fix typo in 985213f2fede57.Craig A. Berry2012-02-181-1/+1
| | | | Which broke the build on both VMS and Win32.
* Remove gete?[ug]id cachingÆvar Arnfjörð Bjarmason2012-02-1812-115/+137
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently we cache the UID/GID and effective UID/GID similarly to how we used to cache getpid() before v5.14.0-251-g0e21945. Remove this magical behavior in favor of always calling getpid(), getgid() etc. This resolves RT #96208. A minimal testcase for this is the following by Leon Timmermans attached to RT #96208: eval { require 'syscall.ph'; 1 } or eval { require 'sys/syscall.ph'; 1 } or die $@; if (syscall(&SYS_setuid, $ARGV[0] + 0 || 1000) >= 0 or die "$!") { printf "\$< = %d, getuid = %d\n", $<, syscall(&SYS_getuid); } I.e. if we call the sete?[ug]id() functions unbeknownst to perl the $<, $>, $( and $) variables won't be updated. This results in the same sort of issues we had with $$ before v5.14.0-251-g0e21945, and getppid() before my v5.15.7-407-gd7c042c patch. I'm completely eliminating the PL_egid, PL_euid, PL_gid and PL_uid variables as part of this patch, this will break some CPAN modules, but it'll be really easy before the v5.16.0 final to reinstate them. I'd like to remove them to see what breaks, and how easy it is to fix it. These variables are not part of the public API, and the modules using them could either use the Perl_gete?[ug]id() functions or are working around the bug I'm fixing with this commit. The new PL_delaymagic_(egid|euid|gid|uid) variables I'm adding are *only* intended to be used internally in the interpreter to facilitate the delaymagic in Perl_pp_sassign. There's probably some way not to export these to programs that embed perl, but I haven't found out how to do that.
* Add t/porting/pending-author.t, fixing a limitation of t/porting/authors.tNicholas Clark2012-02-183-0/+70
| | | | | | | | | t/porting/pending-author.t attempts to avoid the problem of C<make test> passing 100%, but the subsequent git commit causing F<t/porting/authors.t> to fail, because it uses a "new" e-mail address. This test is only run if one is building inside a git checkout, B<and> one has made local changes. Otherwise it's skipped.
* t/porting/authors.t only needs to pass the Author to checkAUTHORS.plNicholas Clark2012-02-181-1/+1
| | | | | | | | | Commit 3ea0c581844689ab didn't go far enough in pruning the input. When Porting/checkAUTHORS.pl is invoked with --tap it uses parse_commits_from_stdin_authors() instead of parse_commits_from_stdin(), which only looks for lines matching /^Author:/ This reduces runtime by a further 8%.
* Correct the location of t/porting/perlfunc.t in perldelta.podNicholas Clark2012-02-181-3/+3
| | | | | It was somewhere completely wrong, thanks to no human double checking of a git rebase during development.
* Longer filenames for while_readdir.t.Craig A. Berry2012-02-181-1/+1
| | | | | | | | | | | | With filenames varying between only one and five characters in length, it was fairly easy to get two files differing only in case ('A' and 'a', for example). Which on non-case-sensitive file systems could generate a warning at unlink time because it would unlink 'a' and then check for the existence of 'a' and get true because 'A' was still there and indistinguishable from 'a'. So just use longer filenames to make the possibility of collision vanishingly small.
* perlvar: $] is not deprecatedFather Chrysostomos2012-02-181-2/+0
| | | | See <20011022034838.B1676@blackrider> and commit 0c8d858bc.
* Update IO-Compress to CPAN version 2.049Chris 'BinGOs' Williams2012-02-1834-147/+185
| | | | | | | | | | [DELTA] 2.049 18 February 2012 * IO::Compress::Zip Error in t/cz-03zlib-v1.t that caused warnings with 5.15 [RT# 110736: warnings from cpan/IO-Compress/t/cz-03zlib-v1.t]
* Update Compress-Raw_Zlib to CPAN version 2.049Chris 'BinGOs' Williams2012-02-1823-759/+1027
| | | | | | | | [DELTA] 2.049 30 January 2012 * Include zlib 1.2.6 source.
* Update Compress-Raw-Bzip2 to CPAN version 2.049Chris 'BinGOs' Williams2012-02-186-8/+12
| | | | | | | | [DELTA] 2.049 18 February 2012 * No Changes
* Update perlfaq to CPAN version 5.0150039Chris 'BinGOs' Williams2012-02-188-63/+31
| | | | | | | | | | [DELTA] 5.0150039 Sat 18 Feb 2012 15:33:17 +0100 * Rewrite "How do I create a module?" (ranguard) * Remove more old questions (ranguard) * Improve Email::MIME example (madsen) * Fix to regex (RT #74215)
* populate the Future Deprecations sectionRicardo Signes2012-02-181-0/+58
| | | | | These items aggregate the bullets put forth on the perl5-porters list, omitting those to which there was an immediate objection.
* Merge the Pod::Functions refactoring to blead.Nicholas Clark2012-02-1815-434/+917
|\
| * Describe the update to Pod::Functions in perldelta.Nicholas Clark2012-02-181-0/+8
| |
| * Add metadata to perlfunc.pod for which version or feature added a function.Nicholas Clark2012-02-182-14/+16
| | | | | | | | | | | | Whilst this isn't used (yet), it makes sense to put it in now, before any external program decides that parsing the private Pod::Function blocks in perlfunc.pod is fair game, and then becomes dependent on their format.
| * Test that Pod::Function's descriptions are stylistically consistent.Nicholas Clark2012-02-181-1/+9
| | | | | | | | | | Function descriptions should start with a lowercase letter, or the proper noun SysV.
| * Test that functions in the groups in perlfunc.pod are in sorted order.Nicholas Clark2012-02-181-0/+11
| | | | | | | | | | This ensures consistency in the documentation, and that the functions in %Pod::Functions::Kinds are in sorted order.
| * Test that every function in perlfunc.pod has a summary for Pod::Functions.Nicholas Clark2012-02-182-5/+19
| | | | | | | | | | Historically Pod::Functions has failed to get updated when functions are added. This should solve that.
| * Add t/porting/perlfunc.t so that porting tests catch problems with perlfuncNicholas Clark2012-02-184-2/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | Pod::Functions is now generated from pod/perlfunc.pod by ext/Pod-Functions/Functions_pm.PL If it can't parse pod/perlfunc.pod, it will abort, which will cause the build to break. It's really not possible for it to carry on, hence aborting is the only option. However, innocent-seeming changes to documentation shouldn't break the build, and we expect everyone to run (at least) the porting tests, hence this test, to catch such problems before it's too late. To avoid duplicating the parsing logic, we make Functions_pm.PL take a --tap option, to test that all is well.
| * In the generated Pod::Functions, store all function data with tab separation.Nicholas Clark2012-02-181-6/+5
| | | | | | | | | | Previously the data was stored with a comma separated list inside a tab separated list.
| * Generate Pod::Functions from perlfunc.podNicholas Clark2012-02-182-255/+110
| | | | | | | | This avoids it getting out of synchronisation.
| * Add a dependency for ext/Pod-Functions/Functions_pm.PL on pod/perlfunc.podNicholas Clark2012-02-185-5/+23
| | | | | | | | | | This ensures that it gets re-run, and lib/Pod/Functions.pm rebuilt, if perlfunc.pod is changed.
| * Ensure Pod::Simple is built before Pod::Functions.Nicholas Clark2012-02-182-2/+5
| | | | | | | | | | This will allow Pod::Functions to use Pod::Simple as part of its build process.
| * Change ext/Pod-Functions to generate Functions.pm from a Perl script.Nicholas Clark2012-02-183-1/+41
| | | | | | | | For the first step, simply output the current file in one hit.
| * Add annotations to perlfunc.pod for Pod::Functions.Nicholas Clark2012-02-181-0/+498
| | | | | | | | | | | | | | | | In the list for "Perl Functions by Category" each item is annotated with its type as used internally by Pod::Functions. In the "Alphabetical Listing of Perl Functions" each function is annotated with the summary description returned by %Pod::Functions::Flavor.
| * Move Pod::Functions from lib/ to ext/Nicholas Clark2012-02-185-14/+10
| |
| * Bring the joy of strict and warnings to Functions.tNicholas Clark2012-02-181-5/+7
| | | | | | | | | | This reveals that use_ok() was not in a BEGIN block, and in turn that the test count needs to be declared before this BEGIN block runs. Now fixed.
| * Terser code in Pod::Functions to generate $Type_Description and @Type_Order.Nicholas Clark2012-02-181-48/+27
| |
| * Teach Pod::Functions that each, keys and values also operate on arrays.Nicholas Clark2012-02-182-4/+4
| | | | | | | | | | | | | | These were added to the section 'Functions for real @ARRAYs' in perlfunc.pod by commit a5ce339cb0c533c9 in Sep 2010. As ever, tweak the golden results in the test to match these changes.
| * Add all missing functions to Pod::Functions.Nicholas Clark2012-02-182-13/+22
| | | | | | | | | | | | | | | | | | | | | | evalbytes was added to perlfunc.pod by commit 7289c5e6ca773d7c in Nov 2011. fc was added to perlfunc.pod by commit 628253b8ba8b9cbe in Jan 2012. say was added by commit 0d863452f5cac863 in Dec 2005. state was added.pod by commit 36fb85f3330d45ee in Jul 2006. __FILE__, __LINE__ and __PACKAGE__ were added by commit cfa52385fa426b5e in Aug 2011, and __SUB__ by commit 84ed01088568ffe9 in Nov 2011. Again, tweak the golden results in the test to match these changes.
| * Teach Pod::Functions about 'Keywords related to the switch feature'.Nicholas Clark2012-02-182-4/+13
| | | | | | | | | | | | | | Commit 0d863452f5cac863 in Dec 2005 added the switch feature, along with documentation in perlfunc.pod, but did not update Pod::Functions. Again, tweak the golden results in the test to match these changes.
| * Update Pod::Functions with changes from perlfunc.podNicholas Clark2012-02-182-31/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Updated description of Binary from commit 5dac7880bdc47787 in Feb 2011. Updated description of Flow from commit cf2649810f00335b in Jul 2005, and added the "the" which has always been missing from Pod::Function's version. Updated description of Modules from commit 3b10bc60979cfe9a in Jan 2010. Updated description of Objects from commit 353c650532037e40 in Oct 2007. The description of Namespaces had always differed from that in perlfunc.pod. Remove stray tabs from the descriptions of gets and sprintf. Commit 19799a22062ef658 (May 1999) added lock to perlfunc.pod without a it is the only function in "Threads", move it to "Misc", instead of creating a category just for it. use always had two entries with different descriptions in the __DATA__ section. This isn't actually sensible, as the code that builds the exported data structures ends up taking Types from both, and using the last description that it sees. So merge the two together to reflect this. Drop the CHANGES section from the Pod, which is both incomplete and redundant, given that version control does this job much better. Tweak the golden results in the test to match these changes.
| * In perlfunc.pod, sort the descriptions more consistently.Nicholas Clark2012-02-181-12/+12
| | | | | | | | | | | | | | | | The order is neither strictly lexical, nor strictly dictionary, but now for all cases __FOO__ follows foo, and qx// is after qw//. In the "Regular expressions and pattern matching" summary, put qr// in the correct position alphabetically.
| * Add 4 functions missing from perlfunc.pod's 'Perl Functions by Category'.Nicholas Clark2012-02-181-6/+7
|/ | | | | | | | | | | | | | | | | | | | C<readline> added to 'Input and output functions' Documentation on readline was added by commit 8490252049bf42d3 in Aug 1997. That commit also added readpipe without adding it to a category group, an omission that was fixed by commit 4319b00c03e6a517 in Nov 2011. C<sysseek> added to 'Functions for fixed-length data or records' Documentation on sysseek was added by commit 137443ea0a858c43 in Apr 1997, which implemented sysseek. C<prototype> added to both 'Keywords related to the control flow of your Perl program' and 'Miscellaneous functions', as Pod::Functions places it in both. Commit da0045b73af6f504 in Jul 1996, included 'Add documentation for new "prototype" operator', but only added the main documentation, not an entry in a category group. C<lock> added to 'Miscellaneous functions'. Documentation on lock was added by commit 19799a22062ef658 in May 1999.
* correctly clone eval context framesZefram2012-02-181-0/+3
| | | | | | When cloning stacks (only used for Win32 fork emulation, not for ordinary threads), the CV referenced by an eval context frame wasn't being cloned. This led to crashes when Win32 forked inside an eval [perl #109718].
* Revert "Increase the fallback value of MAXPATHLEN"Dominic Hargreaves2012-02-181-1/+1
| | | | | | | | This reverts commit ffa23acf6bf9670bd1d5fdc9a958c918b6cf3d06. This change was made without realisation that the fallback value for MAXPATHLEN on POSIX systems comes (in perl.h) from _POSIX_MAX_PATH, so the fallback value here was not used.