On Wed, 02 Aug 2017 03:59:53 -0700, alex.jakime...@gmail.com wrote:
> Code:
> say (1…∞).grep(* < 0)[^10]
> 
> 
> Given that all of the values are thrown away by grep, I expect the
> memory usage to be constant (even though the code will never finish).
> However, it seems that there's a leak somewhere.
> 
> There's a lot to this, so please see IRC log:
> https://irclog.perlgeek.de/perl6-dev/2017-08-02#i_14956475
> For example, gather-take seems to be leaking as well, and in some
> cases it doesn't leak if you remove map, or if you use a range instead
> of a sequence…


Found another example without any maps or WhateverCodes that's leaking on 
2017.07-87-g6d3ba60 and I'm fairly sure I tried that code a while back (to see 
if `$a = Seq; for @$a` vs `$a := Seq; for $a` was caching/non-caching) and back 
then memory didn't grow on this code.

    my $a := 1…∞; for $a {}

And this is the same gather/take issue as binding to an infinite Seq made out 
of an Iterator instead of gather/take does not leak anything:

    my $a := Seq.new: class :: does Iterator { method is-lazy (-->True) {}; 
method pull-one { 42 } }.new; for $a {}

Reply via email to