Zoffix m: my %foo = :42foo, :43bar, :44meow; for %foo { .say } 00:51
camelia rakudo-moar a62207: OUTPUT«bar => 43␤foo => 42␤meow => 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 => 43␤foo => 42␤meow => 44␤GOT 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 => 43␤bars => 43␤meows => 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 => 43␤bars => 43␤foos => 42␤foo => 42␤zmeows => 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 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 …»
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 1␤␤Final 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