Perl 6 language and compiler development | Logs at colabti.org/irclogger/irclogger_log/perl6-dev | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm
Set by Zoffix on 27 July 2018.
MasterDuke m: sub a(Pair @a) { dd @a; dd @a[0] }; a Array[Pair].new([b => 2]) 00:11
camelia Array[Pair].new("b" => 2)
:b(2)
MasterDuke m: sub a(@a where all(@a) ~~ Pair) { say "hi" }; a (:1st, :2nd) 00:11
camelia hi
MasterDuke lizmat: ^^^, not sure what you were trying for 00:12
[Tux] Rakudo version 2018.06-312-ge0a27ce37 - MoarVM version 2018.06-331-g2c74b672c
csv-ip5xs1.101 - 1.227
csv-ip5xs-208.113 - 8.335
csv-parser24.520 - 25.250
csv-test-xs-200.446 - 0.461
test10.059 - 10.530
test-t2.291 - 2.297
test-t --race0.961 - 1.015
test-t-2040.859 - 41.946
test-t-20 --race13.746 - 14.801
08:48
lizmat Files=1246, Tests=75931, 379 wallclock secs (16.42 usr 5.46 sys + 2695.24 cusr 237.75 csys = 2954.87 CPU) 09:34
Geth rakudo: d09756ae66 | (Elizabeth Mattijsen)++ | src/core/Mu.pm6
Fix for R#2174

This was caused by the erroneous assumption that opcode 10 (vivify role attribute) of the `BUILDPLAN` would always be the last in the `BUILDPLAN`. If a `TWEAK` method is available, then the calling of `TWEAK` would follow. So the execution of `10` opcodes, would run into the run `TWEAK` task, causing the error.
11:30
synopsebot R#2174 [open]: github.com/rakudo/rakudo/issues/2174 [regression] attr + submethod TWEAK in role causes crash "This type (Submethod) does not support positional operations"
nqp/truffle: 4 commits pushed by (Paweł Murias)++ 11:34
roast: efb42a9462 | (Elizabeth Mattijsen)++ | S12-construction/TWEAK.t
Test for R#2174
11:36
synopsebot R#2174 [open]: github.com/rakudo/rakudo/issues/2174 [regression] attr + submethod TWEAK in role causes crash "This type (Submethod) does not support positional operations"
Geth nqp/truffle: 425230eea0 | (Paweł Murias)++ | src/vm/jvm/runtime/org/perl6/nqp/truffle/nodes/expression/NQPPowNumNode.java
[truffle] Fix nqp::pow_n with base 1
11:45
timotimo ever wanted to see every path that leads to a given routine from the routine overview? well, now you can: imgur.com/zNEY5jY 12:31
timotimo imgur.com/U8n5jsA - now with a tiny bit more eye candy 12:53
lizmat timotimo++ 13:03
timotimo maybe when i publish the project someone will contribute CSS magic to make the lines start and end in the middle of the first and last row respectively
it looks like a giant piece of hackery to do; either add a pseudo-element that is half the height of the cell and give it the same color as the background and place it correctly (which won't work because there's already a pseudo-element there and i don't think you can stack 'em), or use a background-image with gradient, which apparently requires six different implementations of gradient because browsers? 13:04
lizmat yeah, that's way above my current paygrade :-) 13:09
MasterDuke timotimo: nice 13:10
timotimo you mean paingrade? :D
lizmat hehe... timotimo: yeah, and it is supposed to fun, right? so what does that make us ? :-) 13:11
timotimo i'm a bit of a masakist 13:12
MasterDuke timotimo: btw, "see every path that leads to a given routine" is in fact a feature i've wanted before 13:20
timotimo yes!
me, too. a whole bunch of times
like, *so* often
MasterDuke part of what inspired me to write coverable 13:21
samcv . 13:41
yoleaux 04:08Z <Zoffix> samcv: would you double-check this prop-spec? Is it correct that Upper/Title case mapping of 'ß' is 'ß' and not 'SS'? github.com/perl6/roast/blob/c08ceb....t#L89-L91
samcv ZofBot: my perl6 is giving me SS 13:42
oh
.tell Zoffix that is just for "Simple_Uppercase_Mapping" which does not uppercase to SS
yoleaux samcv: I'll pass your message to Zoffix.
lizmat moritz timotimo: any idea if this used to be valid Perl 6 code: rule expression_list { [\w+] ** ',' } 13:54
and what it should be now to get the same semantics ? 13:55
bisectable6: rule expression_list { [\w+] ** ',' } 13:56
bisectable6 lizmat, Bisecting by output (old=2015.12 new=d09756a) because on both starting points the exit code is 1
lizmat, No! It wasn't me! It was the one-armed man! Backtrace: gist.github.com/107a1b1799082a8882...f5a71bcc18
lizmat bisectable6: rule expression_list { [\w+] ** ',' }
bisectable6 lizmat, Bisecting by output (old=2015.12 new=d09756a) because on both starting points the exit code is 1
MasterDuke committable6: all rule expression_list { [\w+] ** ',' } 13:59
committable6 MasterDuke, gist.github.com/192ec99f35f07c7033...790d2f3239
MasterDuke lizmat: ^^^, looks like it hasn't been valid since 2014.01 14:00
lizmat interesting.. 14:02
I can't do a bisect before 2015.12 can I ?
MasterDuke you can do 2014.01 if you set the old rev manually 14:05
lizmat hmmm... looks like I killed bisectable6 :-( 14:06
Changelog of 2014.10 doesn't show anything :-(
ok, I think I'll just leave an Issue rather than a PR then
lizmat thinks the current syntax is probably: rule expression_list { [w+]* %% ',' } 14:20
b2gills lizmat: I've come across code that I'd written years ago on SO where I used something like ` . ** ',' ` So yes it used to work, but I don't think it should anymore 14:23
Geth rakudo: 546d08c164 | (Elizabeth Mattijsen)++ | src/core/Routine.pm6
Remove sig from Routine.perl if it is empty
14:59
Geth rakudo: 6ad50d7948 | (Elizabeth Mattijsen)++ | src/core/Routine.pm6
Give Routine its own .gist

So that "say sub foo { }" will be much closer to what Data::Pretty does and thus make it obsolete and save masak some work.
15:20
lizmat .tell masak github.com/rakudo/rakudo/commit/6ad50d7948 15:21
yoleaux lizmat: I'll pass your message to masak.
MasterDuke i think someone suggested this recently, but what about changing up how the --profile options work? to --profile=filename and --profile-type=heap ? i find i frequently want to set a name, which requires adding --profile-filename=name, but rarely change to a heap profile 15:49
also, does anyone have any suggestions for speeding up subbuf? github.com/rakudo/rakudo/blob/mast...#L173-L215 15:55
it's the top by exclusive time (40%) in opening .gz files with Compress::Zlib 15:56
timotimo lizmat: don't know :S 16:07
lizmat lost context 16:08
timotimo that regex syntax
[\w+]**','
lizmat ah, that,
Kaiepi should i host a netbsd equivalent to pufferbot/beastiebot?
timotimo not sure how that is supposed to have worked without a number
timotimo but it looks like it was meant to use % rather than a second * there? 16:08
Kaiepi only issue is that builds will be reeeeaaaalllly long
lizmat yeah, pretty sure that's now [\w+]* %% ','
lizmat MasterDuke: hmmm... I wonder why that isn't a multi ? 16:17
Zoffix: re 5f48c0695c48f152f0541503fb05151a84bc4bad , did you have any reason for keeping it as an only method ? 16:19
MasterDuke lizmat: i did just try making it a multi, but it didn't seem to help 16:26
lizmat MasterDuke: do you have a simple piece of code I could use to benchmark ? 16:27
MasterDuke lizmat: this is what i tried: gist.github.com/MasterDuke17/1cf73...b197fe4c5c
lizmat and in which one of the multi's is the bottleneck now ? 16:28
MasterDuke `use Compress::Zlib; my $a = gzslurp("3k.txt.gz"); say $a.lines.elems; say now - INIT now` # where 3k.txt.gz is a 50k file (compressed from a 3k lines text file)
MasterDuke line 174 and line 240 16:30
almost an even split 16:31
timotimo i don't think nqp::islt_i($length, 0) is safe when the signature doesn't make $length an "int" 16:32
lizmat yeah, you want to keep that HLL 16:34
MasterDuke right 16:34
lizmat MasterDuke: I just realized that that implementation predates the invention of nqp::slice 16:35
m: use nqp; dd nqp::slice(Buf.new(1,2,3,4),0,2) 16:36
camelia Buf.new(1,2,3)
lizmat github.com/perl6/nqp/blob/master/d...down#slice
I think Buf.subbuf can be reduced to parameter sanity checking + nqp::slice 16:37
timotimo \o/
lizmat MasterDuke: want to take that on?
MasterDuke lizmat: interesting. i'll take a look 16:39
lizmat ++MasterDuke 16:41
Zoffix lizmat: re 5f48c0695c48f152f0541503fb05151a84bc4bad No, I don't think there was any reason for keeping it an only method 16:45
yoleaux 13:42Z <samcv> Zoffix: that is just for "Simple_Uppercase_Mapping" which does not uppercase to SS
Zoffix cool 16:46
lizmat Zoffix: ok, cool, MasterDuke is now looking at speeding that up 16:47
I'm expecting a factor or 4 at least :-)
Zoffix \o/
lizmat thanks to the new nqp::slice op
(which didn't exist yet when you wrote that )
MasterDuke huh, Range.int-bounds($from is rw, $to is rw) isn't documented 17:07
Zoffix isn't in spec either 17:08
MasterDuke looks like lizmat added it a year and a half ago because `my ($a,$b) = foo()` is slow 17:10
jnthn Hm, I'm not sure that it should be documented; we should make list assignment faster :P 17:13
MasterDuke jnthn: i've tried to do that several times 17:13
but i think it needs work above my pay grade 17:14
though that reminds me about github.com/rakudo/rakudo/pull/1844 if there are any opinions 17:15
Geth roast: 524fdd649d | (Zoffix Znet)++ | S03-junctions/autothreading.t
[v6.d REVIEW] Fix typo in test description
17:21
lizmat goes our for some fresh air (fsvo fresh) 17:28
jnthn Our "fresh" here is still > 30C :/ 17:29
timotimo goes to grab a fresh can of perri-air out of the fridge 17:30
Geth nqp/truffle: a67fcd74d2 | (Paweł Murias)++ | src/vm/jvm/Truffle.nqp
[truffle] Implement nqp::isfalse
18:21
nqp/truffle: 12489cfdd9 | (Paweł Murias)++ | src/vm/jvm/runtime/org/perl6/nqp/truffle/runtime/NQPList.java
[truffle] Implement nqp::atpos with negative indexes
nqp/truffle: bc87a3d857 | (Paweł Murias)++ | 6 files
[truffle] Implement nqp::pop, nqp::push, nqp::shift nqp::unshift on arrays
Geth rakudo: MasterDuke17++ created pull request #2175:
Speed up subbuf by using the new nqp::slice op...
19:28
MasterDuke lizmat: ^^^, turned out to be a pretty simple change 19:30
lizmat hmmm... did we lose Geth here? 19:44
lizmat just merged github.com/rakudo/rakudo/pull/2175
MasterDuke timotimo: btw, trying to profile opening a 50k .gz with Compress::Zlib creates a 16mb .json profile that crashes the QT viewer. trying to profile a 190k .gz file creates a .json it won't even open, complaining about "too deeply nested elements" 19:46
Geth rakudo: 4e56ce954e | (Daniel Green)++ | src/core/Buf.pm6
Speed up subbuf by using the new nqp::slice op...

instead of manually looping with nqp::bindpos+nqp::atpos.
19:52
rakudo: c4bb1b19d2 | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | src/core/Buf.pm6
Merge pull request #2175 from MasterDuke17/speed_up_subbuf

Speed up subbuf by using the new nqp::slice op...
timotimo MasterDuke: perhaps needs an inline disable 19:59
that thing with the call graphs is still not fixed, alas
MasterDuke github.com/rakudo/rakudo/blob/mast...#L119-L121 is now the most expensive in the Compress::Zlib test 20:01
the next is Compress::Zlib.get 20:02
timotimo how often does it get entered?
MasterDuke decode?
or get?
timotimo decode 20:03
MasterDuke 3401 for decode, 161383 for get
timotimo so it really does spend a lot time doing the decoding, huh
a "perf record" perhaps tells us something about that, but it's likely just "it's a lot of work it's doing" 20:04
lizmat Q: can we have Bufs with > 2**64 bytes ? 20:16
timotimo currently, we can not. 20:17
lizmat m: dd Buf.new.reallocate(2**65).elems 20:18
camelia Cannot unbox 66 bit wide bigint into native integer
in block <unit> at <tmp> line 1
lizmat I guess not
timotimo if your machine only has 64bit pointers, you don't have space for both your program and the 2**64 byte big buffer
lizmat fair enough :-)
timotimo even then, that's how many terabytes?
lizmat yehah, true 20:19
jnthn m: say 2 ** 64
camelia 18446744073709551616
timotimo m: say 2 ** 64 / 1024 / 1024 / 1024 / 1024 20:19
camelia 16777216
jnthn m: say (2 ** 64).flip.comb(3).reverse.join('_').say
camelia 81_644_447_370_907_155_616
True
timotimo that should be terabytes?
the next thing is petabytes, right?
m: say 16777216 / 1024
camelia 16384
jnthn Yeah but that's 2 after tera
timotimo oh, ok
sjn m: say 64 - 12; # Terabytes
camelia 52
timotimo so it's 16 petabytes?
sjn m: say "2^" ~ 64 - 12; # Terabytes 20:20
camelia 2^52
lizmat so, we could technically have all Buf.methods that take an Int also give a native int candidate
jnthn 81 exabytes?
I think
lizmat so we wouldn't have to box / unbox
timotimo if someone with that much ram calls us to say that we please lift that limitation, we're probably in a very good place anyway
MasterDuke (slight delay because of a power outage) MVM_string_utf8_decode is 2nd in a perf report 20:21
hm, for a larger file, zero_slots is 2nd and MVM_string_utf8_decode drops to 4th 20:23
lizmat MasterDuke: would you mind if I took optimizing subbuf and associated methods a bit further? Or do you have your sights set on that?
MasterDuke lizmat: please, go ahead 20:24
lizmat ok, will do!
timotimo google "how to zero out memory the fastest" 20:28
not sure if we can get much better at that
not sure what exactly we're doing at the moment? but hopefully we use memset
MasterDuke hm, an even larger (22mb) file is different again. VMArray_gc_mark tied with MVM_interp_run for the top at 7%, then zero_slots, then sim_stack_find 20:30
timotimo VMArray_gc_mark shouldn't take any time for a native int array like a Buf or Blob would be 20:32
if it's an Int array, then yeah, that'll take a while
MasterDuke the code is just 'use Compress::Zlib; my $a = gzslurp("1m.txt.gz"); say $a.lines.elems;' 20:33
timotimo sim_stack_find, eh? that's not supposed to take long ... 20:34
MasterDuke github.com/retupmoca/P6-Compress-Z...b.pm6#L219
`while (elems < ssize) body->slots.i64[elems++] = 0;`, couldn't that be a memset? 20:39
jnthn MasterDuke: Yes, with a bit of calculation
Geth 6.d-prep: 8707604fea | (Zoffix Znet)++ (committed using GitHub Web editor) | TODO/FEATURES.md
Add TODO: Sort out normalization of ZDRs
20:40
MasterDuke jnthn: same with all the other cases, right? 20:45
jnthn MasterDuke: Yes
MasterDuke ah, maybe i'll give that a go 20:47
btw, think github.com/MoarVM/MoarVM/pull/896 and github.com/MoarVM/MoarVM/pull/897 are fine?
jnthn MasterDuke: All OSX fails in the first of those 20:48
Ah, maybe timing 20:49
MasterDuke it's been happening on all recent travis builds
jnthn Restated the test jobs to find out :)
lizmat
.oO( that's quite a statement :-)
20:50
jnthn :P 20:51
Other than that it's good, though I still find that warning frustrating :P
timotimo [Coke]: could someone try to limit the size of the screenshot on the front page of news.perlfoundation.org? on my end it blocks three quarters of the sidebar :| 21:47
[Coke] timotimo: I can only edit my blog entries. 22:08
if you comment on it, Alan can probably fix it. 22:09
Geth roast: f677510e00 | (Zoffix Znet)++ | S05-modifier/sigspace.t
[v6.d REVIEW] Add another test for trailing ws in :s

To cover the case where it'd fail
Orig: github.com/perl6/roast/commit/bb4510143
22:18
timotimo maybe i'll send him a mail directly? 22:20
[Coke] sure 22:36
JStoker17 I thought you guys might be interested in this blog by freenode staff member Bryan 'kloeri' Ostergaard bryanostergaard.com/ 23:00
Read what IRC investigative journalists have uncovered on the freenode pedophilia scandal encyclopediadramatica.rs/Freenodegate
A fascinating blog by freenode staff member Matthew 'mst' Trout MattSTrout.com/
AlexDaniel Zoffix: what if we give voice, take it away, and then give it again after a delay? :) 23:03
.oO( where's the source code for these spam bots? )
:)
[Coke] I thought we had everything blocked? 23:06
timotimo what we have is we force new people who join to be silenced for 40 seconds 23:09
then they get voice
hoping that they'll have spammed some other channel already and gotten killed off the network
instead, they use sufficiently many connections or something? 23:10
AlexDaniel oh, that's how it works
I thought it was the bot just giving up after some time :)
[Coke] (silenced) is that what people were arguing for instead of what zoffix setup? 23:59
let's go back to what zoffix had.