[perl #131845] Binding a Seq to a `@` variable tries to consume it first
On Sun, 06 Aug 2017 18:52:07 -0700, alex.jakime...@gmail.com wrote: > Not sure if this info is relevant now, but the hang was introduced in > (2016-02-18) > https://github.com/rakudo/rakudo/commit/9983c2c8434ed81c532a5706996f284283b48d0a Yes, very relevant. It's the .perl that hangs and even in non-hanging cases it has the potential to perform huge amounts of work, just to throw it all-but-first-score of chars. I see a bunch of other exceptions use .perl and are probably subject to the same issue. I'd say this is another face of some meta ticket for "Errors of Rakudo — The Full Picture"; discussion for which is currently happening on this ticket: https://rt.perl.org/Ticket/Display.html?id=131877#txn-1480778
[perl #131845] Binding a Seq to a `@` variable tries to consume it first
On Sun, 06 Aug 2017 18:52:07 -0700, alex.jakime...@gmail.com wrote: > Not sure if this info is relevant now, but the hang was introduced in > (2016-02-18) > https://github.com/rakudo/rakudo/commit/9983c2c8434ed81c532a5706996f284283b48d0a Yes, very relevant. It's the .perl that hangs and even in non-hanging cases it has the potential to perform huge amounts of work, just to throw it all-but-first-score of chars. I see a bunch of other exceptions use .perl and are probably subject to the same issue. I'd say this is another face of some meta ticket for "Errors of Rakudo — The Full Picture"; discussion for which is currently happening on this ticket: https://rt.perl.org/Ticket/Display.html?id=131877#txn-1480778
[perl #131845] Binding a Seq to a `@` variable tries to consume it first
Not sure if this info is relevant now, but the hang was introduced in (2016-02-18) https://github.com/rakudo/rakudo/commit/9983c2c8434ed81c532a5706996f284283b48d0a On 2017-08-05 06:33:14, c...@zoffix.com wrote: > Since Seq is not a Positional type, *binding* it to a `@` variable is > typecheck error: > > 13:26 m: my @a := Seq.new: class :: does Iterator {method > pull-one {IterationEnd}}.new; > 13:26 camelia rakudo-moar abf1cf: OUTPUT: «Type check failed in > binding; expected Positional but got Seq ($(().Seq))? in block > at line 1??» > > However, it appears the code is trying to consume the entire Seq, > before generating the error: > > 13:26 Zoffix m: my @a := Seq.new: class :: does Iterator {method > pull-one {42}}.new; # hang > 13:27 camelia rakudo-moar abf1cf: OUTPUT: «(timeout)» > 13:31 Zoffix m: my @a := 1…?; # but this one has `is-lazy` set > 13:31 camelia rakudo-moar abf1cf: OUTPUT: «Type check failed in > binding; expected Positional but got Seq (?)? in block at > line 1??» > > > Perhaps it thinks it's gonna do assignment and consumes non-lazy Seqs > in preparation for it, but then the binding happens and then it > throws?
[perl #131845] Binding a Seq to a `@` variable tries to consume it first
# New Ticket Created by Zoffix Znet # Please include the string: [perl #131845] # in the subject line of all future correspondence about this issue. # https://rt.perl.org/Ticket/Display.html?id=131845 > Since Seq is not a Positional type, *binding* it to a `@` variable is typecheck error: 13:26 m: my @a := Seq.new: class :: does Iterator {method pull-one {IterationEnd}}.new; 13:26 camelia rakudo-moar abf1cf: OUTPUT: «Type check failed in binding; expected Positional but got Seq ($(().Seq))? in block at line 1??» However, it appears the code is trying to consume the entire Seq, before generating the error: 13:26 Zoffix m: my @a := Seq.new: class :: does Iterator {method pull-one {42}}.new; # hang 13:27 camelia rakudo-moar abf1cf: OUTPUT: «(timeout)» 13:31 Zoffix m: my @a := 1…?; # but this one has `is-lazy` set 13:31 camelia rakudo-moar abf1cf: OUTPUT: «Type check failed in binding; expected Positional but got Seq (?)? in block at line 1??» Perhaps it thinks it's gonna do assignment and consumes non-lazy Seqs in preparation for it, but then the binding happens and then it throws?