Zoffix | m: my %foo = :42foo, :43bar, :44meow; for %foo { .say } | 00:51 | |
camelia | rakudo-moar a62207: OUTPUT«bar => 43foo => 42meow => 44» | ||
Zoffix | m: my %foo = :42foo, :43bar, :44meow; for %foo { .say; say "GOT IT!" if .value == 44 } | 00:52 | |
camelia | rakudo-moar a62207: OUTPUT«bar => 43foo => 42meow => 44GOT IT!» | ||
Zoffix | I wonder if there's a way to make this more efficient, if you know the wanted value is somewhere at the end. | ||
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:53 | ||
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 | ||
Zoffix, ¦«my»:Cannot find this revision | |||
Zoffix | bench: HEAD my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :46meows; for ^100 { for %foo { last if .value == 46 } } | ||
benchable6 | Zoffix, starting to benchmark the 1 given commits | ||
Zoffix, ¦«HEAD»:0.1171 | |||
Zoffix | bench: HEAD my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :46meows; for ^2000 { for %foo { last if .value == 46 } } | ||
benchable6 | Zoffix, starting to benchmark the 1 given commits | ||
Zoffix, ¦«HEAD»:0.1686 | |||
Zoffix | bench: HEAD my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :46meows; for ^2000 { for %foo.reverse { last if .value == 46 } } | ||
benchable6 | Zoffix, starting to benchmark the 1 given commits | ||
Zoffix, ¦«HEAD»:0.2026 | |||
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 | ||
Zoffix, ¦«HEAD»:0.5336 | |||
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 | ||
Zoffix, ¦«HEAD»:3.9382 | |||
Zoffix | bench: HEAD my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :46meows; for ^200000 { for %foo.reverse { last if .value == 46 } } | ||
benchable6 | Zoffix, starting to benchmark the 1 given commits | ||
Zoffix | I guess there's no point if 2_000_000 times take just ~3.5 seconds | 00:58 | |
benchable6 | Zoffix, ¦«HEAD»:6.8479 | ||
Zoffix | This was the spot FWIW: github.com/rakudo/rakudo/blob/nom/...r.nqp#L219 | 01:00 | |
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 => 43bars => 43meows => foo» | ||
Zoffix | m: use nqp; my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :zmeows("foo"); for %foo { .say; last if nqp::istype(.value, Str) } | ||
camelia | rakudo-moar a62207: OUTPUT«bar => 43bars => 43foos => 42foo => 42zmeows => foo» | ||
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 | ||
Zoffix | :( | ||
MasterDuke | but there's no guarantee of the order of a hash, correct? | ||
huh, segfaulted | |||
Zoffix | I'm still unsure about that. Supposedly not, but so far all I see is evidence to the contrary. | 01:03 | |
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 :) | ||
bench: HEAD use nqp; my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :zmeows("foo"); for ^20000 { for %foo { .say; last if nqp::istype(.value, Str) } } | |||
benchable6 | Zoffix, starting to benchmark the 1 given commits | ||
travis-ci | Rakudo build passed. Zoffix Znet 'Merge pull request #872 from LemonBoy/ternary-sym | ||
travis-ci.org/rakudo/rakudo/builds/158303176 github.com/rakudo/rakudo/compare/f...8ab93552df | |||
Zoffix | oh damn. I left the .say in... That's why it's slow | 01:06 | |
MasterDuke | free(): invalid size: 0x00007f9f81f6abc0 | ||
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 | ||
Zoffix, ¦«HEAD»:0.5829 | |||
Zoffix | bench: HEAD use nqp; my %foo = :42foo, :43bar, :44meow, :42foos, :43bars, :zmeows("foo"); for ^200000 { for %foo { last if nqp::istype(.value, Str) } } | ||
benchable6 | Zoffix, starting to benchmark the 1 given commits | ||
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) } } | ||
benchable6 | Zoffix, starting to benchmark the 1 given commits | ||
Zoffix, ¦«HEAD»:3.1483 | |||
Zoffix | Gonna try this and see if there's any improvement in parse times | 01:10 | |
MasterDuke | ooooooo, that would be nice | ||
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 | ||
Zoffix | (there's an off-by-one with that >= BTW) | ||
MasterDuke | ah, should just be >? | 01:12 | |
Zoffix | Yeah | ||
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) } } | ||
benchable6 | MasterDuke, starting to benchmark the 1 given commits | ||
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 | |
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) } } | ||
benchable6 | MasterDuke, starting to benchmark the 1 given commits | ||
MasterDuke | damn | ||
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 | ||
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 | ||
MasterDuke | it doesn't like something about that | 01:19 | |
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) } } | |||
benchable6 | MasterDuke, starting to benchmark the 1 given commits | ||
MasterDuke, ¦«HEAD»:0.1524 | |||
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 | ||
MasterDuke, ¦«HEAD»:1.2572 | |||
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…» | ||
Zoffix | Why is it crying? What object? | 01:28 | |
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…» | ||
Zoffix | Bah, screw this. | ||
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 | ( no output ) | ||
MasterDuke | does anyone have a suggestion about where tests for stuff in Any-iterable-methods.pm should go? | 01:40 | |
Zoffix | Don't see any measurable effect from this attempt to do it. Oh well :) | 01:41 | |
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 | |||
AlexDaniel | any comments on this? | 02:00 | |
m: class Foo { method gist { say ‘what?’ } }; say Foo.WHAT | |||
camelia | rakudo-moar a62207: OUTPUT«what?This type cannot unbox to a native string: P6opaque, Bool in block <unit> at <tmp> line 1» | ||
AlexDaniel | aaaah… | ||
OK got it | 02:01 | ||
thanks | |||
dalek | ast: ced5101 | MasterDuke17++ | S32-hash/map.t: Test an untested method in Any-iterable-methods.pm |
02:04 | |
travis-ci | Rakudo build passed. Elizabeth Mattijsen 'We don't need no 'use nqp' in the setting :-)' | 02:10 | |
travis-ci.org/rakudo/rakudo/builds/158304174 github.com/rakudo/rakudo/compare/c...2207ec7589 | |||
dalek | ast: d1a874d | MasterDuke17++ | S32-list/grep.t: Test a grep error in Any-iterable-methods.pm |
02:49 | |
ast: 34ad043 | MasterDuke17++ | S32-list/unique.t: Test unique(:as, :with) in Any-iterable-methods.pm |
03:21 | ||
ast: c498bcc | MasterDuke17++ | S32-list/repeated.t: Test repeated(:as, :with) in Any-iterable-methods |
03:30 | ||
ast: ca2b03d | MasterDuke17++ | S32-basics/pairup.t: Test an untested method in Any-iterable-methods.pm |
03:43 | ||
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. | ||
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:19 | |
[Tux] | This is Rakudo version 2016.08.1-130-ga62207e built on MoarVM version 2016.08-43-g3d04391 | 07:27 | |
csv-ip5xs 9.428 | |||
test 16.030 | |||
test-t 7.340 | |||
csv-parser 17.522 | |||
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 :) | ||
dalek | kudo/nom: 7925d66 | niner++ | src/core/CompUnit/PrecompilationStore/File.pm: Update precomp unit cache after precompiling an outdated unit We try to load a precomp file, discover that it's outdated and precompile it again. When we then try again to load it, we found the old version in the cache and happily used that again. Fix by updating the cache when storing the new version. Thanks to TheLemonMan++ fo the report. |
08:02 | |
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 | ||
timotimo | i expect i just have to set MVM_SPESH_INLINE_DISABLE to make it not crash, though | 09:29 | |
lizmat | commute& | 09:47 | |
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 perl6.fail/release/stats for details | ||
Zoffix | .ask jnthn so is there a way to match all digits without combinators without listing each digit in a character class? RE: rt.perl.org/Ticket/Display.html?id...et-history | 10:23 | |
yoleaux2 | Zoffix: I'll pass your message to jnthn. | ||
nine | Zoffix: the stats list deleted tickets | 10:27 | |
Zoffix | Yeah, I haven't added logic to get rid of those, because they don't show up in `Updated Since` RT search | 10:28 | |
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!» | ||
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)» | ||
Zoffix | heh | ||
moritz | m: say so 7 ~ "\x[308]" x 1000_000 | 10:31 | |
camelia | rakudo-moar 7925d6: OUTPUT«(signal SEGV)» | ||
moritz | m: 7 ~ "\x[308]" x 1000_000 | ||
camelia | rakudo-moar 7925d6: OUTPUT«(signal SEGV)» | ||
moritz | m: "\x[308]" x 1000_000 | ||
camelia | rakudo-moar 7925d6: OUTPUT«WARNINGS for <tmp>:Useless use of "x" in expression "\"\\x[308]\" x 1000_000" in sink context (line 1)» | ||
moritz | m: 7 ~ "\x[308]" x 500_000 | ||
camelia | rakudo-moar 7925d6: OUTPUT«(signal SEGV)» | ||
moritz | m: 7 ~ "\x[308]" x 200_000 | ||
camelia | rakudo-moar 7925d6: OUTPUT«(signal SEGV)» | ||
timotimo | damn, i ran a full coverage log, but forgot to build moar with coverage log support | ||
moritz | m: 7 ~ "\x[308]" x 100_000 | ||
camelia | rakudo-moar 7925d6: OUTPUT«WARNINGS for <tmp>:Useless use of "~" in expression "7 ~ \"\\x[308]\" x" in sink context (line 1)» | ||
moritz | m: 7 ~ "\x[308]" x 150_000 | ||
camelia | rakudo-moar 7925d6: OUTPUT«(signal SEGV)» | ||
timotimo | urgh, and MVM_SPESH_INLINE_DISABLE doesn't prevent the crashes with the coverage log :( | 10:33 | |
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 mathCannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏7̈' (indicated by ⏏) in block <unit> at <tmp> line 1Actually thrown at: in block <unit> at …» | ||
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:35 | |
Especially since doesn't work like this in Perl 5 and I'm assuming many other "traditional" regex engines. | 10:36 | ||
I mean, we have a bug in core due to this, even. | 10:37 | ||
m: say Date.new: "2\x[308]016-09-08" | |||
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 1Final error: Type check failed in assignment to $!year; expected Int…» | ||
Zoffix | I wonder how Swift does it | 10:39 | |
Ticket for SEGV above: 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 | ||
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:23Z <Zoffix> jnthn: so is there a way to match all digits without combinators without listing each digit in a character class? RE: rt.perl.org/Ticket/Display.html?id...et-history | |||
jnthn | (As in, in useful real world scenarios) | ||
(Which is why we even do NFG) | |||
Zoffix | How to match digits without combinators though? | 10:46 | |
m: 0x1FFFF .grep(*.uniprop eq 'Nd').elems.say | |||
camelia | rakudo-moar 7925d6: OUTPUT«0» | ||
Zoffix | m: 0x1FFFF .grep(*.uniprop eq 'Nd').say | 10:47 | |
camelia | rakudo-moar 7925d6: OUTPUT«()» | ||
Zoffix | bah | ||
jnthn | Well, easy way to reject strings that have synthetics is checking .chars != .codes | ||
I think S05 may speculate matching in NFD mode | 10:48 | ||
(If so, that's not implemented yet) | |||
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 | ||
*base char | |||
Well, *an* other directino :) | |||
*direction | |||
Though that creates its own surprises and lists to remember | |||
timotimo | MasterDuke: hack.p6c.org/~timo/coverage/ | 10:51 | |
Zoffix | The .chars != .codes sounds good. | 10:53 | |
timotimo | masterduke, i deleted the original report, which may have been a bad idea. i hope it's useful anyway | 12:12 | |
dalek | kudo/nom: a2b6f74 | (Zoffix Znet)++ | src/core/Date (2 files): Reject synthetics in constructor strings To make formats like "2016-07\x[308]-05" throw a correct exception, instead of barfing when attempting to convert to individual numbers. Fix suggested by jnthn++ irclog.perlgeek.de/perl6-dev/2016-0...i_13170748 Fixes RT#128545 "Broke up with my girl. She kept the cap off the toothpaste. Know who does that? A SYNTH!"—Diamond City Security Officer |
12:17 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128545 | ||
ast: 3ed2af4 | (Zoffix Znet)++ | S32-temporal/Date (2 files): Synthetics rejected in constructor strings RT#128545 |
12:25 | ||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128545 | ||
timotimo | that afallout 4 reference? :) | 12:26 | |
dalek | kudo/nom: 83b8b1a | (Zoffix Znet)++ | docs/ChangeLog: Log all changes to date Include changes made by commits: 74f1edc a87fc7d e5d7a16 f648d3b 490cf72 b3e442c 73c9dd5 72d3be6 f55e113 26fabdf ffb5789 |
12:50 | |
p: fc62a59 | coke++ | docs/ops.markdown: remove docs for non-existent opcodes |
13:48 | ||
p: c97be19 | coke++ | docs/ops.markdown: tag moar only opcodes |
|||
p: b67c7da | coke++ | docs/ops.markdown: fix typo |
|||
p: ba08592 | coke++ | docs/ops.markdown: split out jvm only internal op |
|||
p: 7e18157 | coke++ | docs/ops.markdown: fixup shell documentation |
13:56 | ||
pyrimidine | just did a quick benchmark w/ bioperl6 and parsing a sequence file | 14:21 | |
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 | ||
using just a grammar is 6x slower. So, pretty awesome work! | |||
timotimo | wow, nice | 14:23 | |
can you put that stuff up in a very-easy-to-reproduce fashion? | |||
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 :) | ||
jnthn | 6x isn't bad given we've got a good bit of grammars optimization work still to do :) | 14:27 | |
timotimo | a gigantic amount | 14:32 | |
pyrimidine | yes, and the grammar hasn't really been optimized (though it's a simple format, FASTA) | 14:35 | |
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:36 | ||
timotimo: gist.github.com/cjfields/50c7611d8...7397a08bd5 | 14:40 | ||
code forthcoming | |||
timotimo | will you put the code into the same gist? | 14:41 | |
pyrimidine | yup | 14:42 | |
timotimo | great :) | ||
pyrimidine | Code is there | 14:45 | |
the github for bioperl6 is github.com/cjfields/bioperl6 | |||
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 | ||
I'm sure that can be improved quite a bit | 14:47 | ||
just... so little time :P | |||
timotimo | i think you should be able to set .nl-in to '\n>' on your IO handle and use .get to get "chunks" | 14:48 | |
pyrimidine | yep, that might be from a point where having multiple chars defined for line endings wasn't working | 14:49 | |
I'm sure it's been addressed now, will check | |||
timotimo | great, that'll make your code a whole bunch simpler, i expect | 14:50 | |
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 | 14:58 | ||
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 | 15:26 | ||
i opened an issue, so hopefully i'll remember to do this over carefully and thoroughly | 17:20 | ||
dalek | p: b923c59 | coke++ | t/docs/opcodes.t: track more js ops |
17:25 | |
p: fb3f70a | coke++ | t/docs/opcodes.t: catch more JS ops. remove superstitious parens |
17:32 | ||
[Coke] | down to 387 failures in nqp's t/docs/opcodes.t | ||
of that, 258 are actual undocumented opcodes. 126 are opcodes that *probably* don't exist yet in js. | 17:35 | ||
dalek | kudo/async-socket-str-fixes: 21c8671 | jnthn++ | src/core/IO/Socket/Async.pm: Don't emit empty strings. |
17:47 | |
kudo/async-socket-str-fixes: 657b804 | jnthn++ | src/core/IO/Socket/Async.pm: Unbust UDP after async socket improvements. There, we should treat packets as a whole, and simply decode them without any kind of streamy stuff. |
18:10 | ||
jnthn | yay clean spectest | 18:19 | |
dalek | rakudo/nom: 1beae10 | jnthn++ | src/core/IO/Socket/Async.pm: | ||
rakudo/nom: First steps on fixing string async socket reads. | |||
rakudo/nom: | |||
rakudo/nom: This uses the new VM-backed streaming decode API, which will allow for | |||
rakudo/nom: much better error handling, choosing the encoding, and in the future | |||
jnthn | And that was a merge :) | 18:20 | |
dalek | ast: 726d6fc | jnthn++ | S32-io/IO-Socket-Async.t: String handling stress tests for async sockets. To check how it copes with encoding errors, graphemes split over packets, and multi-byte sequences split over packets. (The answers, prior to latest fixes, were "badly".) |
18:21 | |
jnthn | And another RT down :) | 18:26 | |
mst | niiice | 18:28 | |
split-over-packet problems are always fun | |||
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_ | jnthn: ahoy. got a free cycle or two for infix<x>? | 18:32 | |
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? github.com/rakudo/rakudo/tags Just run gpg --armor --export <email> to generate public key and then add it on github.com/settings/keys | ||
jnthn | MasterDuke_: Sorta...though not too many | 18:39 | |
MasterDuke_: Remind me what the issue was, again? | |||
o/ FROGGS | 18:40 | ||
MasterDuke_ | essentially, in my PR i changed the behavior to truncate the passed in value to int.Range.max | ||
because otherwise unbox_i'ing or decont'ing could pass a value to x that it would see as negative | 18:41 | ||
a slightly longer reply here: github.com/rakudo/rakudo/pull/867 | |||
jnthn | Yeah, I think the PR is working around deeper bugs we should fix | ||
yeah, just found/read it :) | |||
"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:42 | ||
In fact, fixing exactly that would deal with it | 18:43 | ||
(And probably other things) | |||
MasterDuke_ | ah ha, think that's a fix in nqp or moarvm? | ||
jnthn | MoarVM | 18:44 | |
github.com/MoarVM/MoarVM/blob/94ed...gint.c#L19 | |||
Around here somewhere | |||
Though that actually is asking for an unsigned, so there's a tad more to clean up there | 18:45 | ||
Anyway, I think that'd be the right place to fix things. | 18:46 | ||
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 | ||
b2gills | I would add a todo test to roast if there isn't one already | 18:48 | |
jnthn off for a bit | 18:51 | ||
timotimo | MasterDuke_: did you see the messages i left you (unfortinately not with yoleaux)? | 18:53 | |
MasterDuke_ | yeah. it looks like a couple of the tests i added got picked up in the new report | 18:54 | |
not sure why the others didn't | |||
timotimo | i don't think the coverage report is all reliable | ||
MasterDuke_ | but haven't been able to actually try and figure out why | ||
timotimo | it F's up a little | ||
MasterDuke_ | it does seem spotty for individual lines, but seems to usually pick up when a method is/isn't called | 18:55 | |
i was thinking about trying to extend the parsing script to specially pull out uncovered subs/methods | 18:56 | ||
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) | ||
timotimo | and then check where all lines were red or grey? | ||
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 | ||
i'm going to push a new branch that has the changes rebased onto the latest moarvm | |||
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 | ||
MasterDuke_ | cool. i hope to take a look this evening | 19:03 | |
timotimo | if you want to run it yourself, you have to set MVM_SPESH_INLINE_DISABLE to some truthy value | 19:06 | |
TheLemonMan | o/ | ||
timotimo | otherwise i can also just give you my input data | ||
greetings lemonman | |||
i wonder how much faster it'd be to turn code like "$a + $b * i" into Complex.new($a, $b) immediately | 19:12 | ||
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 | |
and i'm outa here... | |||
timotimo | oh | ||
dalek | kudo/nom: bc35922 | timotimo++ | src/core/Promise.pm: don't autothread a junction every time we .Bool a Promise |
20:20 | |
lizmat | yeah, that should help performance quite a bit :-) | 20:21 | |
lizmat waves from Prague | |||
timotimo | heyo lizmat | 20:23 | |
that commit also prevented a crash in a script i had | |||
lizmat | cool | 20:24 | |
timotimo | but don't worry, i already found a new way to crash it! | ||
Zoffix | yeah, fallout 4 | 20:50 | |
b2gills | Are there ever going to be more Promise statuses than Broken Kept and Planned? | 21:51 | |
timotimo | don't think so | 21:52 | |
b2gills | because currently it could be shortened to just 「so $!status」 | ||
timotimo | psst :) | ||
jnthn | The only strong candidate would be a cancelled state. | ||
timotimo | we'll just assign -0 to that one :D | 21:53 | |
actually, isn't Promise.Bool about resultness, rather than Keptness? | 21:54 | ||
b2gills | It is now | 21:55 | |
jnthn | Yeah, bool is about "did it come to some kind of conclusion" | ||
It's most useful if you're just using a Promise as a synchronization mechanism rather than to convey a result | 21:56 | ||
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? | ||
jnthn | When I say strong candidate, that kinda over-states it fwiw. | ||
I'm not especially keen on that approach. | |||
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"? | ||
jnthn | We could also just have it Broken and the .cause would be X::Cancalled or so. | 21:59 | |
timotimo | X::Canned | ||
jnthn | hah :) | ||
timotimo | sorry about your Promise. it was X::Canned. | ||
b2gills | X::Bucket as in kicked the ___ | 22:00 | |
or thrown in the ___ | |||
timotimo | did you know that a horse can actually buck a Bucket? | ||
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 | |||
lizmat | good night, #perl6! | 22:51 | |
*#perl6-dev :-) | 22:52 | ||
Zoffix | might | 22:53 | |
*night | |||
What's $/.CURSOR? github.com/rakudo/rakudo/blob/bc35...r.nqp#L130 | 23:17 | ||
I see .peek_delimiters only in ./nqp/src/HLL/Grammar.nqp, so is that a way to access HLL::Grammar object? | |||
"No command 'p6doc' found, did you mean: | 23:28 | ||
Command 'pydoc' from package 'python' (main) | |||
" | |||
No... apt-suggester... no, I didn't :) | |||
ShimmerFairy | ooc, has anyone ever seen "Error encoding ASCII string: could not encode codepoint 955" ? | 23:36 | |
Zoffix | yes, several times. | 23:44 | |
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» | ||
Zoffix | That's one. And the other one was using non-ASCII numerals in :42pair, but that was fixed | 23:46 | |
Any idea what this $c.target is from? github.com/rakudo/rakudo/blob/bc35...r.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:48 | ||
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:52 |