New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
v5.17.9-80-g9f351b4 breaks SARTAK/Path-Dispatcher-1.04.tar.gz #12846
Comments
From @andkgit bisect commit 9f351b4 Disable by default the new Copy-on-Write for 5.18 sample fail report http://www.cpantesters.org/cpan/report/16f730a6-840d-11e2-b7d1-6ff133fcb185 perl -V Summary of my perl5 (revision 5 version 17 subversion 10) configuration: Characteristics of this binary (from libperl): -- |
From @jkeenanOn Mon Mar 11 23:06:25 2013, andreas.koenig.7os6VVqR@franz.ak.mind.de wrote:
When a non-core module fails when run against blead, is the module's Thank you very much. |
The RT System itself - Status changed from 'new' to 'open' |
From @andk"James E Keenan via RT" <perlbug-followup@perl.org> writes:
Cpantesters.org has its own private mechanisms which can be configured Usually I CC the committer to blead and the maintainer of the broken (1) I do not CC the cpan author if I believe that it's obvious that the (2) I bring the issue directly to rt.cpan.org when I believe that it's These two deviations from the normal process are rare cases because they -- |
From @timbunceOn Thu, Mar 14, 2013 at 08:04:15AM +0100, Andreas Koenig wrote:
I, for one, am very grateful for this service and the care with which Thank you Andreas! Tim. |
From @iabynOn Mon, Mar 11, 2013 at 11:06:26PM -0700, Andreas J. Koenig via RT wrote:
tl;dr: the module's handling of $' needs a bit of reworking (as I describe This issue is due to the delayed $' in Path/Dispatcher/Rule/Regex.pm: # only provide leftover if we need it. $' is slow, and it may be undef The test code in t/031-structured-match.t requires that C<eval q{$'}> Traditionally in perl a pattern match would make a copy of the complete $ perl5100 -le"'abc' =~ /a/; print eval q{\$'}" $ perl5100 -le"'abc' =~ /a/; \$';print eval q{\$'}" But once one of those vars had been seen, or if the pattern contained a 5.17.4 changed this so that only the needed parts of the match string were $ perl5173 -le"'abc' =~ /a/; \$&;print eval q{\$'}" $ This avoided an O(N^2) slowdown on code like $&; while ($megabyte_string =~ /./g) { ...} Then in 5.17.7, the new Copy-on-Write mechanism was introduced, which $ perl5177 -le"'abc' =~ /a/; print eval q{\$'}" Now in blead, we have disabled the new COW by default for 5.18, due to I'd suggest the following workaround for Path/Dispatcher/Rule/Regex.pm: do an 'eval q{$'}' just *before* the regex is executed; then when the regex is -- |
From @demerphqOn 14 March 2013 12:35, Dave Mitchell <davem@iabyn.com> wrote:
What about using the /p variants instead? Yves -- |
From @iabynOn Thu, Mar 14, 2013 at 01:08:50PM +0100, demerphq wrote:
There's currently a bug with /p, in that it applies to the pattern, not $str =~ /$r/p sets ${^POSTMATCH} etc based on whether $r was compiled with /p, and -- |
From @demerphqOn 14 March 2013 13:53, Dave Mitchell <davem@iabyn.com> wrote:
But that would be a bug with /$regex/ and not with /p right? Yves -- |
From @iabynOn Thu, Mar 14, 2013 at 02:15:34PM +0100, demerphq wrote:
well, that's probably a nicety of semantics. I *think* (without having -- |
From p5p@sartak.orgDave Mitchell wrote:
Hi Dave, Thanks very much for your thorough description of the problem (and for Cheers! |
@iabyn - Status changed from 'open' to 'resolved' |
From @iabynOn Thu, Mar 14, 2013 at 10:17:36AM -0400, Shawn M Moore wrote:
I think the big difference in bleadperl is that just having a capture in -- |
From @khwilliamsonOn 03/14/2013 04:09 AM, Tim Bunce wrote:
++ Me too |
From @demerphqOn 14 March 2013 15:11, Dave Mitchell <davem@iabyn.com> wrote:
But it shouldn't (just) be. The whole idea is that /p "moves" with the pattern. $str=~/(?p:....)/; should be the same as $str=~/..../p; Should be the same as: $re= qr/..../p; $str=~/$re/; cheers, -- |
From @iabynOn Thu, Mar 14, 2013 at 08:41:04AM -0600, Karl Williamson wrote:
+1 -- |
From @iabynOn Thu, Mar 14, 2013 at 03:56:00PM +0100, demerphq wrote:
I think that's where we disagree. I see /p as related to the use of the Treating it like /i makes no sense to me. Can you suggest any use cases? -- |
From @khwilliamsonOn 03/14/2013 09:53 AM, Dave Mitchell wrote:
This warning gets raised for your final example: The first one turns on /p globally for the regex |
From @ap* demerphq <demerphq@gmail.com> [2013-03-14 16:00]:
What sense does that make? How can the declaration site of the regex If anything, qr/.../p should be an error, same as qr/.../g is. Regards, |
From @demerphqOn 15 March 2013 10:53, Aristotle Pagaltzis <pagaltzis@gmx.de> wrote:
$ perl -le'"abcdcba"=~ /(?p:[abcd](?{ print ${^MATCH} }))+/'
I beg to differ. Yves -- |
From @maukeOn 15.03.2013 10:57, demerphq wrote:
FWIW I agree with Aristotle that /p should only be valid on the match -- |
From @demerphqOn 15 March 2013 11:09, Lukas Mai <l.mai@web.de> wrote:
As I said to Aristotle, A) you are wrong, and B) you are about 5 years Yves -- |
From @rjbs* demerphq <demerphq@gmail.com> [2013-03-15T07:15:15]
(B) is not a great argument, regardless of (A), if we want to act like we can Anyway, I had a look into this. Regardless of where /p and (?p: belong, I For example, you gave us this program: perl -le'"abcdcba"=~ /(?p:[abcd](?{ print ${^MATCH} }))+/' That prints 7 blank lines since 5.17.4, inclusive. With /p, it works. I don't Further, do we agree that d78f32f needs to be reverted? -- |
From @demerphqOn 15 March 2013 17:03, Ricardo Signes <perl.p5p@rjbs.manxome.org> wrote:
I admit, I was frustrated by Lukas'es mail. I posted an example of As for the 5 years comment, at the time /p was introduced there was
This is a regression. It should definitely print out stuff. I cant say
At a very quick glance yes. Yves -- |
From @ap* demerphq <demerphq@gmail.com> [2013-03-15 17:25]:
I _asked_ what sense it makes; _before_ you posted your counterexample; |
From @iabynOn Fri, Mar 15, 2013 at 10:57:47AM +0100, demerphq wrote:
Ah, I see, yes. My remaining question is whether $r = qr/a/; /$r/p; (Of course this will all become academic once COW is made the default -- |
From @demerphqOn 18 March 2013 15:35, Dave Mitchell <davem@iabyn.com> wrote:
Yep agreed. The match should occur in /p mod IFF the actual match Thanks for looking into this. Sorry if I was a bit crusty about this Yves -- |
From @iabynOn Fri, Mar 15, 2013 at 05:19:49PM +0100, demerphq wrote:
(it bisects to 2c7b5d7). But looking at the issue now, I think there's a bigger problem with "a" =~ /(?p)a/ or die; print "[${^MATCH}]\n"; 5.17.3: [a] "a" =~ /(?p:a)/ or die; print "[${^MATCH}]\n"; 5.17.3: [] "a" =~ /(?p)a(?{ print "[${^MATCH}]\n" })/ or die; 5.17.3: [a] "a" =~ /(?p:a(?{ print "[${^MATCH}]\n" }))/ or die; 5.17.3: [a] -- |
From @demerphqOn Friday, 3 May 2013, Dave Mitchell wrote:
both wrong.
second one is wrong. what does 510 do? cheers
-- |
From @iabynOn Fri, May 03, 2013 at 09:37:48PM +0200, demerphq wrote:
Ah good. Glad I wasn't going mad then.
5[1246]0 all do the same as 5.17.3; blead does the same as 5.17.4. -- |
From @demerphqOn 4 May 2013 00:06, Dave Mitchell <davem@iabyn.com> wrote:
Oh fudge, More fallout from my patches. Sorry about this. Can I help at all? Yves -- |
From @iabynOn Sun, May 05, 2013 at 09:52:41AM +0200, demerphq wrote:
It's ok for now. I'll let you know if I get stuck, thanks. -- |
From @iabynOn Sun, May 05, 2013 at 03:03:05PM +0100, Dave Mitchell wrote:
Now fixed by 1e1a634 The other issue,
I'll leave till after 5.18, since its not a regression. -- |
From @demerphqOn 6 May 2013 13:33, Dave Mitchell <davem@iabyn.com> wrote:
Cool thanks.
Agreed.
Make sense. -- |
Migrated from rt.perl.org#117135 (status was 'resolved')
Searchable as RT117135$
The text was updated successfully, but these errors were encountered: