Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2016-06-10

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
01:48 ilbot3 joined #perl6-dev
01:48 Topic for #perl6-dev is now Perl 6 language and compiler development 2.0 | Logs at http://irclog.perlgeek.de/perl6-dev/today
03:08 skids joined #perl6-dev
07:01 brrt joined #perl6-dev
07:05 [Tux] This is Rakudo version 2016.05-84-g87e91cc built on MoarVM version 2016.05-18-g1339332
07:05 [Tux] test            18.764
07:05 [Tux] test-t          10.907
07:05 [Tux] csv-parser      22.138
07:06 [Tux] lizmat, this version broke csv_gram.pl - No error message given
07:07 * [Tux] => $work
07:47 [Tux] joined #perl6-dev
08:05 RabidGravy joined #perl6-dev
08:48 AlexDaniel joined #perl6-dev
09:54 stmuk_ one of my benchmarks which ran at 13 sec towards the end of last year now runs about 8 secs!
09:56 RabidGravy cool
09:57 DrForr Nice.
10:32 |Tux| stmuk_, thanks for testing too!
10:45 lizmat [Tux]: csv_gram.pl hangs for me at 0% CPU
10:45 |Tux| p6 csv_gram.pl </tmp/hello.csv
10:45 |Tux| it needs input :)
10:47 lizmat ah, duh  :-)
10:48 lizmat works ok, but then I have a much smaller hello.csv
10:48 |Tux| does it report a count?
10:48 |Tux| it should report 50000 (with my hello.csv)
10:48 lizmat ah, no, it didn't
10:49 |Tux| there you go
10:50 lizmat it ends after 257 iterations
10:52 perlpilot joined #perl6-dev
10:53 lizmat if I MVM_SPESH_DISABLE=1, it runs to completion
10:53 * |Tux| feels like a canary again
10:53 lizmat yup
10:54 TimToady joined #perl6-dev
10:56 timotimo uh oh
11:01 lizmat This fixes it:
11:01 lizmat method getline(){
11:01 lizmat -        return $!ast;
11:01 lizmat +        $!ast;
11:01 lizmat }
11:01 lizmat I was put on this trail when I removed the MAIN around it and just ran it in the mainline of the program
11:02 lizmat it then started to say "Attempt to return outside of any Routine"
11:02 lizmat since this was the only return statement in the whole file, it was easy to check
11:03 lizmat so it looks to me it loses some stack info after 257 iterations, and then the next return will just return out of the MAIN, and we're silently done
11:03 lizmat because returning out of MAIN is a legal thing to do
11:04 lizmat I wonder how many bugs we've put under the carpet by removing "return" statements
11:04 lizmat otoh, I don't think it's wise to pursue this bug at this time, because of jnthn's work
11:05 lizmat so I'll wait until that's landed
11:05 timotimo that could even have a tiny bit to do with how the count-only broke?
11:05 lizmat possibly, yes
11:06 lizmat somehow it also feels this is GC related, and since frames have become GC collectable recently
11:07 timotimo if that's the case, maybe we can tease it out by putting force_gc in the right (randomly selected) spot?
11:07 lizmat lemme try
11:08 lizmat nope, forcing a gc inside the loop does not fix it
11:09 timotimo i'm not actually sure if that would help at all
11:10 lizmat huh
11:12 lizmat ok, get this:
11:12 lizmat removing the "return" from the method "getline" in class CSV_Actions fixes the issue
11:12 lizmat *HOW* does that get called anyway???
11:13 lizmat in my stripped down version, the return happens from lines()
11:13 lizmat so it looks like it is calling "getline" from the CSV_Actions class, instead of from IO::Handle
11:16 lizmat oops
11:16 lizmat maybe not  :-)
11:18 lizmat ok, if I have a "return outside of any Routine" error, it points to the "for lines()"
11:18 * timotimo maximum shrugs
11:19 lizmat perhaps that's part of the confusion
11:20 timotimo if it says the return happens outside of any routine, it could just be the thing that has the return got inlined into a block that isn't a routine
11:20 timotimo and the handlers weren't fixed up properly/fully
11:21 AlexDaniel joined #perl6-dev
11:21 lizmat fwiw, it's not laziness in lines
11:21 lizmat putting the lines into an array, same problem
11:24 timotimo OK
11:26 lizmat m: class A { has $.foo; method foo { return $!foo } }; my $a = A.new(foo => 42); my $sum = 0; for ^500 { $sum += $a.foo }   # golfed
11:26 camelia rakudo-moar 87e91c: OUTPUT«Attempt to return outside of any Routine␤  in block <unit> at /tmp/oLh4prjqJW line 1␤␤»
11:26 lizmat m: class A { has $.foo; method foo { return $!foo } }; my $a = A.new(foo => 42); for ^500 { $a.foo }  # further golfed
11:26 camelia rakudo-moar 87e91c: OUTPUT«Attempt to return outside of any Routine␤  in block <unit> at /tmp/VNXQ9AZcD1 line 1␤␤»
11:28 lizmat m: class A { has $.foo; method foo { return $!foo } }; my $a = A.new(foo => 42); for ^158 { $a.foo }   # first value it breaks on 158
11:28 camelia rakudo-moar 87e91c: OUTPUT«Attempt to return outside of any Routine␤  in block <unit> at /tmp/9NqzgIZLo_ line 1␤␤»
11:28 lizmat m: class A { has $.foo; method foo { return $!foo } }; my $a = A.new(foo => 42); for ^157 { $a.foo }   # 157 is ok
11:28 camelia rakudo-moar 87e91c: ( no output )
11:34 * lizmat haz a ticket: https://rt.perl.org/Ticket/Display.html?id=128368
11:34 timotimo ooooh, good golf!
11:41 lizmat m: class A { method foo { return 42 } }; my $a = A.new; for ^157 { $a.foo }  # still smaller golf, no attributes neede
11:41 camelia rakudo-moar 87e91c: ( no output )
11:41 lizmat m: class A { method foo { return 42 } }; my $a = A.new; for ^158 { $a.foo }  # at 158 it fails
11:41 camelia rakudo-moar 87e91c: OUTPUT«Attempt to return outside of any Routine␤  in block <unit> at /tmp/OZc4EqaZLv line 1␤␤»
11:42 lizmat can't get it to fail with a sub
11:43 lizmat eh
11:43 lizmat m: sub foo() { return 42 }; for ^157 { foo }   # still smaller golf
11:43 camelia rakudo-moar 87e91c: ( no output )
11:43 lizmat m: sub foo() { return 42 }; for ^158 { foo }   # fails at 158
11:43 camelia rakudo-moar 87e91c: OUTPUT«Attempt to return outside of any Routine␤  in block <unit> at /tmp/tOCcim2lY1 line 1␤␤»
12:18 dalek rakudo/nom: 9cfcb96 | lizmat++ | src/core/Baggy.pm:
12:18 dalek rakudo/nom: Remove no-sinks from Baggy
12:18 dalek rakudo/nom:
12:18 dalek rakudo/nom: And streamline a bit
12:18 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/9cfcb96a2f
12:19 lizmat afk for a few hours&
12:27 skids joined #perl6-dev
12:37 brrt joined #perl6-dev
12:56 psch nine: https://gist.github.com/peschwa/488d4bc687e7bb6c456652654d86c5d9 is the NPE i get when i put mast_frames into $*W
12:57 psch nine: well, it's a bit of jdb details... :)
12:58 psch hm, m.qbid is 7
12:59 psch so we're trying to add one more CodeRef than we have..?
12:59 psch doesn't that mean that we skip one?  'cause the NPE was because [5] was null afair
13:00 psch as in, we have the correct number of CodeRefs, but bad indexing
13:02 psch mlist[*] => qb_* is 0 => 3, 1 => 4, 2 => 2, 3 => 1, 4 => 0, 5 => 7, 6 => 6
14:01 skids joined #perl6-dev
17:03 psch well, however it happens, it happens during $*JMETH declarations
17:03 psch somehow, somewhere, we're skipping qb_5
17:08 psch it's especially confusing considering we preseed %*CUID_TO_QBID
17:09 psch so we either have the wrong cuid when instantiating the JAST::Method, or... something else?
17:34 b2gills Shouldn't &infix:<eqv>(Match:D $a, Match:D $b) be 「{ $a =:= $b || [&&] ..... }」 instead of 「{ [&&] $a =:= $b, ...... }」 because the current behavior is the same as just 「{ $a =:= $b }」 and I assume the =:= is supposed to be just an optimization
17:35 timotimo oh, that seems very wrong
17:35 timotimo spec tests didn't catch that? shameful :(
17:35 psch i think there's a half-finished PR for that eqv candidate..?
17:37 timotimo no clue :S
17:37 timotimo i've lost overview of pretty much everything
18:18 tomboy64 joined #perl6-dev
19:20 [Tux] joined #perl6-dev
20:11 lizmat b2gills: please RT it
21:06 dalek rakudo/nom: 74d7ac0 | lizmat++ | src/core/List.pm:
21:06 dalek rakudo/nom: Remove no-sink from List.pick
21:06 dalek rakudo/nom:
21:06 dalek rakudo/nom: Plus some streamlining
21:06 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/74d7ac05ee
21:06 dalek rakudo/nom: 5b4470b | lizmat++ | src/core/Map.pm:
21:06 dalek rakudo/nom: Remove no-sink from Map.*
21:06 dalek rakudo/nom:
21:06 dalek rakudo/nom: Plus some streamlining
21:06 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/5b4470bd19
21:15 camelia joined #perl6-dev
21:42 jdv79 joined #perl6-dev
22:28 skids joined #perl6-dev
22:51 b2gills lizmat: I just did a PR on it with a link to the PR that added the &[eqv] candidate, which bears out my suspicion of it being intended as an optimization
23:15 hankache joined #perl6-dev
23:45 sortiz joined #perl6-dev

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary