Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2016-09-08

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

All times shown according to UTC.

Time Nick Message
00:51 Zoffix m: my %foo = :42foo, :43bar, :44meow; for %foo { .say }
00:51 camelia rakudo-moar a62207: OUTPUT«bar => 43␤foo => 42␤meow => 44␤»
00:52 Zoffix m: my %foo = :42foo, :43bar, :44meow; for %foo { .say; say "GOT IT!" if .value == 44 }
00:52 camelia rakudo-moar a62207: OUTPUT«bar => 43␤foo => 42␤meow => 44␤GOT IT!␤»
00:52 Zoffix I wonder if there's a way to make this more efficient, if you know the wanted value is somewhere at the end.
00:53 Zoffix I found this spot where a .say always prints 6 times before the right value is found and it looks like it's used all over.
00:55 Zoffix bench: my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :46meows; for ^100 { for %foo { last if .value == 46 } }
00:55 benchable6 Zoffix, starting to benchmark the 1 given commits
00:55 benchable6 Zoffix, ¦«my»:Cannot find this revision
00:55 Zoffix bench: HEAD my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :46meows; for ^100 { for %foo { last if .value == 46 } }
00:55 benchable6 Zoffix, starting to benchmark the 1 given commits
00:55 benchable6 Zoffix, ¦«HEAD»:0.1171
00:55 Zoffix bench: HEAD my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :46meows; for ^2000 { for %foo { last if .value == 46 } }
00:55 benchable6 Zoffix, starting to benchmark the 1 given commits
00:55 benchable6 Zoffix, ¦«HEAD»:0.1686
00:55 Zoffix bench: HEAD my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :46meows; for ^2000 { for %foo.reverse { last if .value == 46 } }
00:55 benchable6 Zoffix, starting to benchmark the 1 given commits
00:55 benchable6 Zoffix, ¦«HEAD»:0.2026
00:56 Zoffix bench: HEAD my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :46meows; for ^20000 { for %foo { last if .value == 46 } }
00:56 benchable6 Zoffix, starting to benchmark the 1 given commits
00:56 benchable6 Zoffix, ¦«HEAD»:0.5336
00:57 Zoffix bench: HEAD my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :46meows; for ^200000 { for %foo { last if .value == 46 } }
00:57 benchable6 Zoffix, starting to benchmark the 1 given commits
00:57 benchable6 Zoffix, ¦«HEAD»:3.9382
00:57 Zoffix bench: HEAD my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :46meows; for ^200000 { for %foo.reverse { last if .value == 46 } }
00:57 benchable6 Zoffix, starting to benchmark the 1 given commits
00:58 Zoffix I guess there's no point if 2_000_000 times take just ~3.5 seconds
00:58 benchable6 Zoffix, ¦«HEAD»:6.8479
01:00 Zoffix This was the spot FWIW: https://github.com/rakudo/rakudo/blob/nom/src/Perl6/Grammar.nqp#L219
01:01 Zoffix m: use nqp; my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :meows("foo"); for %foo { .say; last if nqp::istype(.value, Str) }
01:01 camelia rakudo-moar a62207: OUTPUT«bar => 43␤bars => 43␤meows => foo␤»
01:01 Zoffix m: use nqp; my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :zmeows("foo"); for %foo { .say; last if nqp::istype(.value, Str) }
01:01 camelia rakudo-moar a62207: OUTPUT«bar => 43␤bars => 43␤foos => 42␤foo => 42␤zmeows => foo␤»
01:02 Zoffix bench: HEAD use nqp; my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :zmeows("foo"); for ^20000 { for %foo { .say; last if nqp::istype(.value, Str) } }
01:02 benchable6 Zoffix, starting to benchmark the 1 given commits
01:02 Zoffix :(
01:02 MasterDuke but there's no guarantee of the order of a hash, correct?
01:02 MasterDuke huh, segfaulted
01:03 Zoffix I'm still unsure about that. Supposedly not, but so far all I see is evidence to the contrary.
01:03 benchable6 joined #perl6-dev
01:04 MasterDuke well, i think however it's actually implemented today, it's specced to have no guarantee
01:04 Zoffix But in this case what matters is how it's implemented today :)
01:04 Zoffix bench: HEAD use nqp; my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :zmeows("foo"); for ^20000 { for %foo { .say; last if nqp::istype(.value, Str) } }
01:04 benchable6 Zoffix, starting to benchmark the 1 given commits
01:04 travis-ci joined #perl6-dev
01:04 travis-ci Rakudo build passed. Zoffix Znet 'Merge pull request #872 from LemonBoy/ternary-sym
01:04 travis-ci https://travis-ci.org/rakudo/rakudo/builds/158303176 https://github.com/rakudo/rakudo/compare/f0bb581ffbd9...c98ab93552df
01:04 travis-ci left #perl6-dev
01:06 Zoffix oh damn. I left the .say in... That's why it's slow
01:06 MasterDuke free(): invalid size: 0x00007f9f81f6abc0
01:07 benchable6 joined #perl6-dev
01:08 Zoffix bench: HEAD use nqp; my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :zmeows("foo"); for ^20000 { for %foo { last if nqp::istype(.value, Str) } }
01:08 benchable6 Zoffix, starting to benchmark the 1 given commits
01:08 benchable6 Zoffix, ¦«HEAD»:0.5829
01:08 Zoffix bench: HEAD use nqp; my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :zmeows("foo"); for ^200000 { for %foo { last if nqp::istype(.value, Str) } }
01:08 benchable6 Zoffix, starting to benchmark the 1 given commits
01:09 benchable6 Zoffix, ¦«HEAD»:4.5705
01:09 Zoffix bench: HEAD use nqp; my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :zmeows("foo"); for ^200000 { my @v = %foo; my $c = +@v; until $c-- >= 0 { last if nqp::istype(@v[$c].value, Str) } }
01:09 benchable6 Zoffix, starting to benchmark the 1 given commits
01:09 benchable6 Zoffix, ¦«HEAD»:3.1483
01:10 Zoffix Gonna try this and see if there's any improvement in parse times
01:10 MasterDuke ooooooo, that would be nice
01:11 MasterDuke benchable6: compare HEAD use nqp; my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :zmeows("foo"); for ^200000 { for %foo { last if nqp::istype(.value, Str) } } ||| use nqp; my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :zmeows("foo"); for ^200000 { my @v = %foo; my $c = +@v; until $c-- >= 0 { last if nqp::istype(@v[$c].value, Str) } }
01:11 benchable6 MasterDuke, starting to benchmark the 1 given commits
01:11 Zoffix (there's an off-by-one with that >= BTW)
01:12 MasterDuke ah, should just be >?
01:12 Zoffix Yeah
01:12 benchable6 joined #perl6-dev
01:12 MasterDuke benchable6: compare HEAD use nqp; my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :zmeows("foo"); for ^100000 { for %foo { last if nqp::istype(.value, Str) } } ||| use nqp; my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :zmeows("foo"); for ^100000 { my @v = %foo; my $c = +@v; until $c-- > 0 { last if nqp::istype(@v[$c].value, Str) } }
01:12 benchable6 MasterDuke, starting to benchmark the 1 given commits
01:14 b2gills MasterDuke: the order of keys in a Hash should not be relied upon ( I think they should be made more random like Hashes in Perl 5.18 )
01:14 benchable6 joined #perl6-dev
01:15 Zoffix <MasterDuke> but there's no guarantee of the order of a hash, correct? <MasterDuke> well, i think however it's actually implemented today, it's specced to have no guarantee <Zoffix> But in this case what matters is how it's implemented today :)
01:15 MasterDuke benchable6: compare HEAD use nqp; my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :zmeows("foo"); for ^50000 { for %foo { last if nqp::istype(.value, Str) } } ||| use nqp; my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :zmeows("foo"); for ^50000 { my @v = %foo; my $c = +@v; until $c-- > 0 { last if nqp::istype(@v[$c].value, Str) } }
01:15 benchable6 MasterDuke, starting to benchmark the 1 given commits
01:15 MasterDuke damn
01:16 benchable6 joined #perl6-dev
01:16 MasterDuke Unhandled exception in code scheduled on thread 6. Cannot send a message on a closed channel
01:16 Zoffix And it should also be possible to move out the `my @v = %foo; my $c = +@v; ` part out of the loop and run it just once
01:18 MasterDuke benchable6: compare HEAD use nqp; my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :zmeows("foo"); for ^50000 { for %foo { last if nqp::istype(.value, Str) } } ||| use nqp; my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :zmeows("foo"); my @v = %foo; my $b = +@v; my $c; for ^50000 { $c = $b; until $c-- > 0 { last if nqp::istype(@v[$c].value, Str) } }
01:18 benchable6 MasterDuke, starting to benchmark the 1 given commits
01:19 MasterDuke it doesn't like something about that
01:19 benchable6 joined #perl6-dev
01:19 MasterDuke benchable6: HEAD use nqp; my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :zmeows("foo"); my @v = %foo; my $b = +@v; my $c; for ^50000 { $c = $b; until $c-- > 0 { last if nqp::istype(@v[$c].value, Str) } }
01:19 benchable6 MasterDuke, starting to benchmark the 1 given commits
01:19 benchable6 MasterDuke, ¦«HEAD»:0.1524
01:20 MasterDuke benchable6: HEAD use nqp; my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :zmeows("foo"); for ^50000 { for %foo { last if nqp::istype(.value, Str) } }
01:20 benchable6 MasterDuke, starting to benchmark the 1 given commits
01:20 benchable6 MasterDuke, ¦«HEAD»:1.2572
01:27 Zoffix nqp: my %*LANGZ; %*LANGZ<Regex> := 42; %*LANGZ<Regex2> :=72; my @*LANGZ; for %*LANGZ {  unshift(@*LANGZ, $_.value) };
01:27 camelia nqp-moarvm: OUTPUT«Cannot invoke this object (REPR: Null; VMNull)␤   at <tmp>:1  (<ephemeral file>:<mainline>)␤ from gen/moar/stage2/NQPHLL.nqp:1428  (/home/camelia/rakudo-m-inst-1/share/nqp/lib/NQPHLL.moarvm:eval)␤ from gen/moar/stage2/NQPHLL.nqp:1631  (/home/camelia/rakudo-m…»
01:28 Zoffix Why is it crying? What object?
01:31 Zoffix nqp: my %*LANGZ; %*LANGZ<Regex> := 42; %*LANGZ<Regex2> :=72; my @z; my $n := elems(%*LANGZ); for %*LANGZ {  bindpos(@z, --$n, $_.value) };
01:31 camelia nqp-moarvm: OUTPUT«Cannot invoke this object (REPR: Null; VMNull)␤   at <tmp>:1  (<ephemeral file>:<mainline>)␤ from gen/moar/stage2/NQPHLL.nqp:1428  (/home/camelia/rakudo-m-inst-1/share/nqp/lib/NQPHLL.moarvm:eval)␤ from gen/moar/stage2/NQPHLL.nqp:1631  (/home/camelia/rakudo-m…»
01:31 Zoffix Bah, screw this.
01:32 Zoffix nqp: my %*LANGZ; %*LANGZ<Regex> := 42; %*LANGZ<Regex2> :=72; my @z; my $n := nqp::elems(%*LANGZ); for %*LANGZ {  nqp::bindpos(@z, --$n, $_.value) };
01:32 camelia nqp-moarvm: ( no output )
01:40 MasterDuke does anyone have a suggestion about where tests for stuff in Any-iterable-methods.pm should go?
01:41 Zoffix Don't see any measurable effect from this attempt to do it. Oh well :)
01:46 Zoffix I think if you do:    tree -f | grep method-name   you usually get a file with those tests. Like grep.t map.t I think we have
01:46 * Zoffix & # bed
01:49 ilbot3 joined #perl6-dev
01:49 Topic for #perl6-dev is now Perl 6 language and compiler development 2.0 | Logs at http://irclog.perlgeek.de/perl6-dev/today
02:00 AlexDaniel any comments on this?
02:00 AlexDaniel m: class Foo { method gist { say ‘what?’ } }; say Foo.WHAT
02:00 camelia rakudo-moar a62207: OUTPUT«what?␤This type cannot unbox to a native string: P6opaque, Bool␤  in block <unit> at <tmp> line 1␤␤»
02:00 AlexDaniel aaaah…
02:01 AlexDaniel OK got it
02:01 AlexDaniel thanks
02:04 dalek roast: ced5101 | MasterDuke17++ | S32-hash/map.t:
02:04 dalek roast: Test an untested method in Any-iterable-methods.pm
02:04 dalek roast: review: https://github.com/perl6/roast/commit/ced5101403
02:10 travis-ci joined #perl6-dev
02:10 travis-ci Rakudo build passed. Elizabeth Mattijsen 'We don't need no 'use nqp' in the setting :-)'
02:10 travis-ci https://travis-ci.org/rakudo/rakudo/builds/158304174 https://github.com/rakudo/rakudo/compare/c98ab93552df...a62207ec7589
02:10 travis-ci left #perl6-dev
02:49 dalek roast: d1a874d | MasterDuke17++ | S32-list/grep.t:
02:49 dalek roast: Test a grep error in Any-iterable-methods.pm
02:49 dalek roast: review: https://github.com/perl6/roast/commit/d1a874df55
03:21 dalek roast: 34ad043 | MasterDuke17++ | S32-list/unique.t:
03:21 dalek roast: Test unique(:as, :with) in Any-iterable-methods.pm
03:21 dalek roast: review: https://github.com/perl6/roast/commit/34ad043440
03:30 dalek roast: c498bcc | MasterDuke17++ | S32-list/repeated.t:
03:30 dalek roast: Test repeated(:as, :with) in Any-iterable-methods
03:30 dalek roast: review: https://github.com/perl6/roast/commit/c498bcc6ac
03:43 dalek roast: ca2b03d | MasterDuke17++ | S32-basics/pairup.t:
03:43 dalek roast: Test an untested method in Any-iterable-methods.pm
03:43 dalek roast: review: https://github.com/perl6/roast/commit/ca2b03d63c
03:46 MasterDuke .tell timotimo if you don't mind updating the coverage report for Any-iterable-methods.pm i'd be curious to see if the tests i added change it
03:46 yoleaux2 MasterDuke: I'll pass your message to timotimo.
03:50 zengargoyle joined #perl6-dev
03:56 geekosaur joined #perl6-dev
03:59 geekosaur joined #perl6-dev
05:02 skids joined #perl6-dev
07:01 RabidGravy joined #perl6-dev
07:19 nine Oh my. Of course %!loaded{$precomp-id} //= $unit; is totally inadequate for updating an outdated cache item :) That's what you get for coding an a hurry
07:27 [Tux] This is Rakudo version 2016.08.1-130-ga62207e built on MoarVM version 2016.08-43-g3d04391
07:27 [Tux] csv-ip5xs        9.428
07:27 [Tux] test            16.030
07:27 [Tux] test-t           7.340
07:27 [Tux] csv-parser      17.522
07:28 lizmat Files=1136, Tests=52709, 235 wallclock secs (14.06 usr  3.61 sys + 1453.95 cusr 124.85 csys = 1596.47 CPU)
07:28 masak nine: maybe you need an operator that's like `||` and `//` but only goes into the right-hand branch when the cache item is outdated :)
08:02 dalek rakudo/nom: 7925d66 | niner++ | src/core/CompUnit/PrecompilationStore/File.pm:
08:02 dalek rakudo/nom: Update precomp unit cache after precompiling an outdated unit
08:02 dalek rakudo/nom:
08:02 dalek rakudo/nom: We try to load a precomp file, discover that it's outdated and precompile it
08:02 dalek rakudo/nom: again. When we then try again to load it, we found the old version in the cache
08:02 dalek rakudo/nom: and happily used that again. Fix by updating the cache when storing the new
08:02 dalek rakudo/nom: version.
08:02 dalek rakudo/nom: Thanks to TheLemonMan++ fo the report.
08:02 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/7925d66e97
09:27 timotimo MasterDuke: annoyingly, rakudo crashes when the coverage report is on :(
09:27 yoleaux2 03:46Z <MasterDuke> timotimo: if you don't mind updating the coverage report for Any-iterable-methods.pm i'd be curious to see if the tests i added change it
09:29 timotimo i expect i just have to set MVM_SPESH_INLINE_DISABLE to make it not crash, though
09:47 lizmat commute&
10:21 Zoffix NeuralAnomaly, stats
10:21 NeuralAnomaly Zoffix, [✘] Next release will be in 1 week and 2 days. Since last release, there are 41 new still-open tickets (5 unreviewed and 0 blockers) and 19 unreviewed commits. See http://perl6.fail/release/stats for details
10:23 Zoffix .ask jnthn so is there a way to match all digits without combinators without listing each digit in a character class? RE: https://rt.perl.org/Ticket/Display.html?id=129221#ticket-history
10:23 yoleaux2 Zoffix: I'll pass your message to jnthn.
10:27 nine Zoffix: the stats list deleted tickets
10:28 Zoffix Yeah, I haven't added logic to get rid of those, because they don't show up in `Updated Since` RT search
10:29 Zoffix m: say "Yeah, that looks pretty small, like what a one digit would be like. Plenty of space to store it!" if (7 ~ "\x[308]" x 100_000) ~~ /^ \d**1 $/
10:29 camelia rakudo-moar 7925d6: OUTPUT«Yeah, that looks pretty small, like what a one digit would be like. Plenty of space to store it!␤»
10:30 Zoffix m: say "Yeah, that looks pretty small, like what a one digit would be like. Plenty of space to store it!" if (7 ~ "\x[308]" x 1000_000) ~~ /^ \d**1 $/
10:30 camelia rakudo-moar 7925d6: OUTPUT«(signal SEGV)»
10:30 Zoffix heh
10:31 moritz m: say so 7 ~ "\x[308]" x 1000_000
10:31 camelia rakudo-moar 7925d6: OUTPUT«(signal SEGV)»
10:31 moritz m:  7 ~ "\x[308]" x 1000_000
10:31 camelia rakudo-moar 7925d6: OUTPUT«(signal SEGV)»
10:31 moritz m:  "\x[308]" x 1000_000
10:31 camelia rakudo-moar 7925d6: OUTPUT«WARNINGS for <tmp>:␤Useless use of "x" in expression "\"\\x[308]\" x 1000_000" in sink context (line 1)␤»
10:31 moritz m:  7 ~ "\x[308]" x 500_000
10:31 camelia rakudo-moar 7925d6: OUTPUT«(signal SEGV)»
10:31 moritz m:  7 ~ "\x[308]" x 200_000
10:31 camelia rakudo-moar 7925d6: OUTPUT«(signal SEGV)»
10:31 timotimo damn, i ran a full coverage log, but forgot to build moar with coverage log support
10:31 moritz m:  7 ~ "\x[308]" x 100_000
10:31 camelia rakudo-moar 7925d6: OUTPUT«WARNINGS for <tmp>:␤Useless use of "~" in expression "7 ~ \"\\x[308]\" x" in sink context (line 1)␤»
10:31 moritz m:  7 ~ "\x[308]" x 150_000
10:31 camelia rakudo-moar 7925d6: OUTPUT«(signal SEGV)»
10:33 timotimo urgh, and MVM_SPESH_INLINE_DISABLE doesn't prevent the crashes with the coverage log :(
10:34 Zoffix m: my $input = "7\x[308]"; $input ~~ /^ \d $/ and say "Awesome! We only have digits! Let's do some math"; say $input + 2
10:34 camelia rakudo-moar 7925d6: OUTPUT«Awesome! We only have digits! Let's do some math␤Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏7̈' (indicated by ⏏)␤  in block <unit> at <tmp> line 1␤␤Actually thrown at:␤  in block <unit> at …»
10:35 Zoffix I really hate this is the way it's meant to work because I foresee a huge number of exploits and bugs due to this
10:36 Zoffix Especially since doesn't work like this in Perl 5 and I'm assuming many other "traditional" regex engines.
10:37 Zoffix I mean, we have a bug in core due to this, even.
10:37 Zoffix m: say Date.new: "2\x[308]016-09-08"
10:37 camelia rakudo-moar 7925d6: OUTPUT«Earlier failure:␤ Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏2̈016' (indicated by ⏏)␤  in block <unit> at <tmp> line 1␤␤Final error:␤ Type check failed in assignment to $!year; expected Int…»
10:39 Zoffix I wonder how Swift does it
10:45 Zoffix Ticket for SEGV above: https://rt.perl.org/Ticket/Display.html?id=129227
10:45 jnthn It's meant to work this way so it does the right thing for cases where these things would actually show up
10:45 yoleaux2 7 Sep 2016 22:28Z <japhb> jnthn: I sent a comment of support for your continued funding as well (pretty much of the "you'd be crazy not to" variety)
10:45 yoleaux2 10:23Z <Zoffix> jnthn: so is there a way to match all digits without combinators without listing each digit in a character class? RE: https://rt.perl.org/Ticket/Display.html?id=129221#ticket-history
10:45 jnthn (As in, in useful real world scenarios)
10:45 jnthn (Which is why we even do NFG)
10:46 Zoffix How to match digits without combinators though?
10:46 Zoffix m: 0x1FFFF .grep(*.uniprop eq 'Nd').elems.say
10:46 camelia rakudo-moar 7925d6: OUTPUT«0␤»
10:47 Zoffix m: 0x1FFFF .grep(*.uniprop eq 'Nd').say
10:47 camelia rakudo-moar 7925d6: OUTPUT«()␤»
10:47 Zoffix bah
10:47 jnthn Well, easy way to reject strings that have synthetics is checking .chars != .codes
10:48 jnthn I think S05 may speculate matching in NFD mode
10:48 jnthn (If so, that's not implemented yet)
10:50 jnthn The other direction we could possibly go in is whitelisting which properties are inherited from the base char, or which general categories inherit properties from the case char
10:50 jnthn *base char
10:50 jnthn Well, *an* other directino :)
10:50 jnthn *direction
10:50 jnthn Though that creates its own surprises and lists to remember
10:51 timotimo MasterDuke: http://hack.p6c.org/~timo/coverage/
10:53 Zoffix The .chars != .codes sounds good.
11:31 skids joined #perl6-dev
12:12 timotimo masterduke, i deleted the original report, which may have been a bad idea. i hope it's useful anyway
12:17 dalek rakudo/nom: a2b6f74 | (Zoffix Znet)++ | src/core/Date (2 files):
12:17 dalek rakudo/nom: Reject synthetics in constructor strings
12:17 dalek rakudo/nom:
12:17 dalek rakudo/nom: To make formats like "2016-07\x[308]-05" throw a correct exception, instead
12:17 dalek rakudo/nom: of barfing when attempting to convert to individual numbers.
12:17 dalek rakudo/nom:
12:17 dalek rakudo/nom: Fix suggested by jnthn++ http://irclog.perlgeek.de/perl6-dev/2016-09-08#i_13170748
12:17 dalek rakudo/nom: Fixes RT#128545
12:17 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=128545
12:17 dalek rakudo/nom:
12:17 dalek rakudo/nom: "Broke up with my girl. She kept the cap off the toothpaste.
12:17 dalek rakudo/nom: Know who does that? A SYNTH!"—Diamond City Security Officer
12:17 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a2b6f74be1
12:25 dalek roast: 3ed2af4 | (Zoffix Znet)++ | S32-temporal/Date (2 files):
12:25 dalek roast: Synthetics rejected in constructor strings
12:25 dalek roast:
12:25 dalek roast: RT#128545
12:25 dalek roast: review: https://github.com/perl6/roast/commit/3ed2af4c42
12:25 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=128545
12:26 timotimo that afallout 4 reference? :)
12:50 dalek rakudo/nom: 83b8b1a | (Zoffix Znet)++ | docs/ChangeLog:
12:50 dalek rakudo/nom: Log all changes to date
12:50 dalek rakudo/nom:
12:50 dalek rakudo/nom: Include changes made by commits:
12:50 dalek rakudo/nom: 74f1edc a87fc7d e5d7a16 f648d3b 490cf72 b3e442c
12:50 dalek rakudo/nom: 73c9dd5 72d3be6 f55e113 26fabdf ffb5789
12:50 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/83b8b1a834
12:59 AlexDaniel joined #perl6-dev
13:48 dalek nqp: fc62a59 | coke++ | docs/ops.markdown:
13:48 dalek nqp: remove docs for non-existent opcodes
13:48 dalek nqp: review: https://github.com/perl6/nqp/commit/fc62a591cf
13:48 dalek nqp: c97be19 | coke++ | docs/ops.markdown:
13:48 dalek nqp: tag moar only opcodes
13:48 dalek nqp: review: https://github.com/perl6/nqp/commit/c97be19027
13:48 dalek nqp: b67c7da | coke++ | docs/ops.markdown:
13:48 dalek nqp: fix typo
13:48 dalek nqp: review: https://github.com/perl6/nqp/commit/b67c7dae78
13:48 dalek nqp: ba08592 | coke++ | docs/ops.markdown:
13:48 dalek nqp: split out jvm only internal op
13:48 dalek nqp: review: https://github.com/perl6/nqp/commit/ba0859269e
13:55 skids joined #perl6-dev
13:56 dalek nqp: 7e18157 | coke++ | docs/ops.markdown:
13:56 dalek nqp: fixup shell documentation
13:56 dalek nqp: review: https://github.com/perl6/nqp/commit/7e181572d3
14:21 pyrimidine just did a quick benchmark w/ bioperl6 and parsing a sequence file
14:22 pyrimidine was 200x slower than the p5 bioperl equivalent about a year ago, now 10x slower using a chunking loop and grammar (suboptimal hack)
14:22 pyrimidine using just a grammar is 6x slower.  So, pretty awesome work!
14:23 timotimo wow, nice
14:23 timotimo can you put that stuff up in a very-easy-to-reproduce fashion?
14:24 pyrimidine sure, will set up a gist
14:24 timotimo cool; not promising i'll look into it soon or anything, but it'll be good to look at :)
14:27 jnthn 6x isn't bad given we've got a good bit of grammars optimization work still to do :)
14:32 timotimo a gigantic amount
14:35 pyrimidine yes, and the grammar hasn't really been optimized (though it's a simple format, FASTA)
14:36 pyrimidine The main issue we have on the informatics end w/ grammars is parsing very large files, which I think Cat was to allow (which IIRC has been pushed back to a later 6.? release).
14:40 pyrimidine timotimo: https://gist.github.com/cjfields/50c7611d8f2ab78821780e7397a08bd5
14:40 pyrimidine code forthcoming
14:41 timotimo will you put the code into the same gist?
14:42 pyrimidine yup
14:42 timotimo great :)
14:45 pyrimidine Code is there
14:45 pyrimidine the github for bioperl6 is https://github.com/cjfields/bioperl6
14:46 timotimo cheers, maybe i should put some stuff into the irclog that i can later search for, like "benchmark code" or "comparison perl5" or whatever
14:46 pyrimidine I resorted to a hack to get iteration of grammars working, which I'm sure is slowing down the parser.  But even with that it's not terrible
14:47 pyrimidine I'm sure that can be improved quite a bit
14:47 pyrimidine just... so little time :P
14:48 timotimo i think you should be able to set .nl-in to '\n>' on your IO handle and use .get to get "chunks"
14:49 pyrimidine yep, that might be from a point where having multiple chars defined for line endings wasn't working
14:49 pyrimidine I'm sure it's been addressed now, will check
14:50 timotimo great, that'll make your code a whole bunch simpler, i expect
14:58 timotimo also, you could actually implement a Seq that'd also be able to supply a count without nomming the whole file (by seeking ahead and looking for ">\n") and gobbling up as many things at once as possible or lazily one at a time
15:26 timotimo pyrimidine: i'm very much looking forward to hearing if the .nl-in = ">\n" thing works out, but i'll be AFK for a bit now
17:20 timotimo i opened an issue, so hopefully i'll remember to do this over carefully and thoroughly
17:25 dalek nqp: b923c59 | coke++ | t/docs/opcodes.t:
17:25 dalek nqp: track more js ops
17:25 dalek nqp: review: https://github.com/perl6/nqp/commit/b923c59dc8
17:32 dalek nqp: fb3f70a | coke++ | t/docs/opcodes.t:
17:32 dalek nqp: catch more JS ops.
17:32 dalek nqp:
17:32 dalek nqp: remove superstitious parens
17:32 dalek nqp: review: https://github.com/perl6/nqp/commit/fb3f70ac66
17:32 [Coke] down to 387 failures in nqp's t/docs/opcodes.t
17:35 [Coke] of that, 258 are actual undocumented opcodes. 126 are opcodes that *probably* don't exist yet in js.
17:47 dalek rakudo/async-socket-str-fixes: 21c8671 | jnthn++ | src/core/IO/Socket/Async.pm:
17:47 dalek rakudo/async-socket-str-fixes: Don't emit empty strings.
17:47 dalek rakudo/async-socket-str-fixes: review: https://github.com/rakudo/rakudo/commit/21c867162c
18:08 cognominal joined #perl6-dev
18:09 pyrimidine joined #perl6-dev
18:10 dalek rakudo/async-socket-str-fixes: 657b804 | jnthn++ | src/core/IO/Socket/Async.pm:
18:10 dalek rakudo/async-socket-str-fixes: Unbust UDP after async socket improvements.
18:10 dalek rakudo/async-socket-str-fixes:
18:10 dalek rakudo/async-socket-str-fixes: There, we should treat packets as a whole, and simply decode them
18:10 dalek rakudo/async-socket-str-fixes: without any kind of streamy stuff.
18:10 dalek rakudo/async-socket-str-fixes: review: https://github.com/rakudo/rakudo/commit/657b80401b
18:19 jnthn yay clean spectest
18:19 dalek rakudo/nom: 1beae10 | jnthn++ | src/core/IO/Socket/Async.pm:
18:19 dalek rakudo/nom: First steps on fixing string async socket reads.
18:19 dalek rakudo/nom:
18:19 dalek rakudo/nom: This uses the new VM-backed streaming decode API, which will allow for
18:19 dalek rakudo/nom: much better error handling, choosing the encoding, and in the future
18:20 jnthn And that was a merge :)
18:20 dalek joined #perl6-dev
18:21 dalek roast: 726d6fc | jnthn++ | S32-io/IO-Socket-Async.t:
18:21 dalek roast: String handling stress tests for async sockets.
18:21 dalek roast:
18:21 dalek roast: To check how it copes with encoding errors, graphemes split over
18:21 dalek roast: packets, and multi-byte sequences split over packets. (The answers,
18:21 dalek roast: prior to latest fixes, were "badly".)
18:21 dalek roast: review: https://github.com/perl6/roast/commit/726d6fc545
18:22 hankache joined #perl6-dev
18:26 jnthn And another RT down :)
18:28 mst niiice
18:28 mst split-over-packet problems are always fun
18:30 jnthn The sync sockets were handling it fine, as were things like file I/O when things were split over chunks. This case, embarassingly enough, was not.
18:30 MasterDuke_ joined #perl6-dev
18:31 FROGGS joined #perl6-dev
18:32 MasterDuke_ jnthn: ahoy. got a free cycle or two for infix<x>?
18:38 FROGGS o/
18:38 yoleaux2 2 Aug 2016 15:41Z <unmatched}> FROGGS: are you able to upload your GPG public key to your GitHub account so the 2016.06 tag shows as verified? https://github.com/rakudo/rakudo/tags Just run gpg --armor --export <email> to generate public key and then add it on https://github.com/settings/keys
18:39 jnthn MasterDuke_: Sorta...though not too many
18:39 jnthn MasterDuke_: Remind me what the issue was, again?
18:40 jnthn o/ FROGGS
18:40 MasterDuke_ essentially, in my PR i changed the behavior to truncate the passed in value to int.Range.max
18:41 MasterDuke_ because otherwise unbox_i'ing or decont'ing could pass a value to x that it would see as negative
18:41 MasterDuke_ a slightly longer reply here: https://github.com/rakudo/rakudo/pull/867
18:41 jnthn Yeah, I think the PR is working around deeper bugs we should fix
18:41 jnthn yeah, just found/read it :)
18:42 jnthn "Cannot unbox 65 bit wide bigint into native integer" - I think we should fix this detection so it actually gets the "overflow to negative" boundary correct.
18:43 jnthn In fact, fixing exactly that would deal with it
18:43 jnthn (And probably other things)
18:43 MasterDuke_ ah ha, think that's a fix in nqp or moarvm?
18:44 jnthn MoarVM
18:44 jnthn https://github.com/MoarVM/MoarVM/blob/94ed36d6b7c63a998d6849de5aa1330aaeea88ff/src/6model/reprs/P6bigint.c#L19
18:44 jnthn Around here somewhere
18:45 jnthn Though that actually is asking for an unsigned, so there's a tad more to clean up there
18:46 jnthn Anyway, I think that'd be the right place to fix things.
18:47 MasterDuke_ ok, so it sounds like i shouldn't try to fix/change the PR until after moarvm fix
18:47 jnthn Yes, and that may be a sufficient fix that no further Rakudo action is needed
18:48 b2gills I would add a todo test to roast if there isn't one already
18:51 * jnthn off for a bit
18:52 TheLemonMan joined #perl6-dev
18:53 timotimo MasterDuke_: did you see the messages i left you (unfortinately not with yoleaux)?
18:54 MasterDuke_ yeah. it looks like a couple of the tests i added got picked up in the new report
18:54 MasterDuke_ not sure why the others didn't
18:54 timotimo i don't think the coverage report is all reliable
18:54 MasterDuke_ but haven't been able to actually try and figure out why
18:54 timotimo it F's up a little
18:55 MasterDuke_ it does seem spotty for individual lines, but seems to usually pick up when a method is/isn't called
18:56 MasterDuke_ i was thinking about trying to extend the parsing script to specially pull out uncovered subs/methods
18:57 timotimo how do you mean that? parse the actual source code to see where subs and methods were defined?
18:57 MasterDuke_ since those seem like good LHF (and more reliably reported anyway)
18:57 timotimo and then check where all lines were red or grey?
18:58 MasterDuke_ yeah, or even just any line that has method/sub on it and is red
18:58 timotimo i welcome any additions to the script
18:58 timotimo i'm going to push a new branch that has the changes rebased onto the latest moarvm
18:59 MasterDuke_ i don't remember seeing any instances of green lines in a body where the actual method/sub line was red/grey
18:59 timotimo just pushed
19:03 MasterDuke_ cool. i hope to take a look this evening
19:04 AlexDaniel joined #perl6-dev
19:06 timotimo if you want to run it yourself, you have to set MVM_SPESH_INLINE_DISABLE to some truthy value
19:06 TheLemonMan o/
19:06 timotimo otherwise i can also just give you my input data
19:06 timotimo greetings lemonman
19:06 Ven_ joined #perl6-dev
19:12 timotimo i wonder how much faster it'd be to turn code like "$a + $b * i" into Complex.new($a, $b) immediately
19:14 MasterDuke_ good to know, i'll see if i can dig up how i ran it before. if i run into trouble i'll hit you up for your data
19:14 MasterDuke_ and i'm outa here...
19:14 timotimo oh
20:07 lizmat joined #perl6-dev
20:20 dalek rakudo/nom: bc35922 | timotimo++ | src/core/Promise.pm:
20:20 dalek rakudo/nom: don't autothread a junction every time we .Bool a Promise
20:20 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/bc35922cd9
20:21 lizmat yeah, that should help performance quite a bit :-)
20:21 * lizmat waves from Prague
20:23 timotimo heyo lizmat
20:23 timotimo that commit also prevented a crash in a script i had
20:24 lizmat cool
20:24 timotimo but don't worry, i already found a new way to crash it!
20:27 lizmat joined #perl6-dev
20:50 Zoffix yeah, fallout 4
21:51 b2gills Are there ever going to be more Promise statuses than Broken Kept and Planned?
21:52 timotimo don't think so
21:52 b2gills because currently it could be shortened to just 「so $!status」
21:52 timotimo psst :)
21:52 jnthn The only strong candidate would be a cancelled state.
21:53 timotimo we'll just assign -0 to that one :D
21:54 timotimo actually, isn't Promise.Bool about resultness, rather than Keptness?
21:55 b2gills It is now
21:55 jnthn Yeah, bool is about "did it come to some kind of conclusion"
21:56 jnthn It's most useful if you're just using a Promise as a synchronization mechanism rather than to convey a result
21:57 b2gills If we define Promise.Bool as not currently in the planned state, and planned is always going to be 0, it can be just 「so $!status」 even after canceled is added.
21:57 timotimo yeah, we could make that code change and put a little comment to where Promise has that attribute maybe? or the enum?
21:57 jnthn When I say strong candidate, that kinda over-states it fwiw.
21:57 jnthn I'm not especially keen on that approach.
21:58 b2gills I think it would probably be fine if cancelled  was the same as broken
21:58 timotimo i imagine "cancelled" will behave a lot like "broken"?
21:59 jnthn We could also just have it Broken and the .cause would be X::Cancalled or so.
21:59 timotimo X::Canned
21:59 jnthn hah :)
21:59 timotimo sorry about your Promise. it was X::Canned.
22:00 b2gills X::Bucket as in kicked the ___
22:00 b2gills or thrown in the ___
22:00 timotimo did you know that a horse can actually buck a Bucket?
22:01 b2gills I bet a buck could buck uncle Buck while he holds a bucket
22:01 * timotimo notices this is #perl6-dev rather than #perl6
22:34 skids joined #perl6-dev
22:51 lizmat good night, #perl6!
22:52 lizmat *#perl6-dev  :-)
22:53 Zoffix might
22:53 Zoffix *night
23:17 Zoffix What's $/.CURSOR? https://github.com/rakudo/rakudo/blob/bc35922/src/Perl6/Grammar.nqp#L130
23:17 Zoffix I see .peek_delimiters only in ./nqp/src/HLL/Grammar.nqp, so is that a way to access HLL::Grammar object?
23:28 Zoffix "No command 'p6doc' found, did you mean:
23:28 Zoffix Command 'pydoc' from package 'python' (main)
23:28 Zoffix "
23:28 Zoffix No... apt-suggester... no, I didn't :)
23:36 ShimmerFairy ooc, has anyone ever seen "Error encoding ASCII string: could not encode codepoint 955" ?
23:44 Zoffix yes, several times.
23:45 Zoffix m: grammar foo { token TOP { <hozé> }; token hozé { . };  }
23:45 camelia rakudo-moar bc3592: OUTPUT«===SORRY!===␤Error encoding ASCII string: could not encode codepoint 233␤»
23:46 Zoffix That's one. And the other one was using non-ASCII numerals in :42pair, but that was fixed
23:48 Zoffix Any idea what this $c.target is from? https://github.com/rakudo/rakudo/blob/bc35922/src/Perl6/Grammar.nqp#L131 I see it in nqp/src/QRegex/Cursor.nqp but it's just method target() { nqp::getattr_s($!shared, ParseShared, '$!target') }, so what is in $!target? Where does it get its value from?
23:52 Zoffix Seems this easy part of grammar I was writing an article about all of a sudden turned into a mountain of a learning curve :} oops
23:59 benchable6 joined #perl6-dev

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