llfourn MoarVM panic: Heap corruption detected: pointer 0x7f0fe9a16410 to past fromspace # on latest travis build 03:43
travis-ci.org/spitsh/spitsh/builds...7557#L1355
[Tux] This is Rakudo version 2017.06-75-g823011281 built on MoarVM version 2017.06-30-g389e9732 06:41
csv-ip5xs 2.667
test 12.656
test-t 4.138 - 4.245
csv-parser 12.801
lizmat Files=1207, Tests=62917, 219 wallclock secs (13.12 usr 5.03 sys + 1327.15 cusr 135.32 csys = 1480.62 CPU) 07:48
Geth roast: 0f97380f9a | (Elizabeth Mattijsen)++ | S03-operators/difference.t
Add tests for mix() (-) <a b c>.Mix
08:37
rakudo/nom: c727462cde | (Elizabeth Mattijsen)++ | src/core/Rakudo/QuantHash.pm
Fix mix() (-) <a b c>.Mix

This was improperly returning the empty mix(), instead of negating the weights of the right hand side.
08:38
lizmat afk& 08:46
FROGGS o/ 09:06
yoleaux 30 Mar 2017 19:48Z <Zoffix> FROGGS: if.pm6 is busted and that breaks install of some crypto modules. Any ideas for how to fix? The role's method never gets run; dunno where to take it from here: github.com/FROGGS/p6-if/issues/2
FROGGS uff
jnthn o/ FROGGS 09:07
FROGGS hi jnthn 09:08
jnthn At least it seems if.pm6 got fixed in the meantime :)
FROGGS phew, zoffix++ already fixed that issue
aye :o)
btw, I'm planning to pop in here in the evenings again... 09:09
nine FROGGS! \o/ 09:10
FROGGS hi nine :o)
nine FROGGS: haven't read you in ages. How're you doing? 09:13
brrt yes, that 09:15
tadzik o/
FROGGS ohh, I'm fine 09:17
was absent due to a biggish project at $work... 09:18
but now want to experiment with my Mojolicious app and try to port stuff over
the current module installer is zef, ehh? 09:20
moritz it is
dogbert2 lizmat: 'not ok 97 - Mix symmetric difference reduce works on three mixes' # is this work in progress? 10:09
dogbert2 notes that running spectest with HARNESS_TYPE=6 no longer outputs the names of the test files being run !? 10:11
lizmat dogbert2: yeah, still determining whether the test or the code is afaulty 10:46
lizmat confirms what dogbert2 said 10:47
Geth roast: 641916fbbe | (Elizabeth Mattijsen)++ | S03-operators/addition.t
Add thorough testing for (+)

The commented out lines currently fail :-( That's quite a number of cases :-( :-(
11:29
rakudo/nom: 9bd75f14df | (Elizabeth Mattijsen)++ | 2 files
Normalize R:Q.ADD-MIX-TO-MIX interface
12:44
DeadDelta We don't guarantee any support for nqp, right? Like, were someone to use an op, it's their own dumb fault if we change that op and their code breaks? 13:05
jnthn Always after 942 iterations, even with spesh disabled. 13:15
DeadDelta m: class { has int $!n = 0; method x { $!n += 2 while $!n < 20000000 } }.new.x; say now - INIT now 13:16
camelia 6.992108
DeadDelta m: class { has int $!n = 0; method x { my int $n = 0; $n += 2 while $n < 20000000 } }.new.x; say now - INIT now
camelia 5.2410657
DeadDelta So accessing an attribute is just more expensive or is something else happening? 13:17
jnthn Just more expensive 13:18
DeadDelta Thanks. 13:19
jnthn (Which is probably consistently true across languages.)
lizmat
.oO( DeadDelta is finding out the intricacies of push-all :-)
13:22
DeadDelta :) I think I won't talk about any other .push* (like .push-at-least) in my article. They probably outside what a regular user would want to write, even if they're writing custom Iterators 13:24
(I don't even know what user-land example would trigger calls to them :/)
lizmat my @a = ^1000 # that would be a push-all 13:25
DeadDelta Yeah, that's the only one I figured out. But others, like .push-at-least or .push-exactly or .push-until-lazy 13:27
lizmat -> $a, $b { }
if I recall correctly
perhaps that is optimized
more like -> $a, $b, $c # three or more
DeadDelta What's that? In .map signature? 13:28
lizmat for @a -> $a, $b, $c { } ?
DeadDelta oh yeah. Thanks :) 13:29
lizmat it creates a buffer internally for the 3 params on which it does a push-at-least
DeadDelta And .push-until-lazy. What's the idea behind that one?
I'll just mention there are other .push-* things if you care about every last drop of performance and won't describe them :) 13:31
dogbert2 wrt RT #131592, on my system it eats up all available fd's (1024) quite qickly and then hangs 13:35
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=131592
DeadDelta There are docs even docs.perl6.org/type/Iterator#metho...until-lazy
jnthn Hm, but maybe we should try to solve it at Perl 6 level, not VM level 13:45
Let's see...
dogbert2 AlexDaniel: that definitely helped, now only ~80 fd's are open on exit 13:49
AlexDaniel
.oO( what? Is he saying that there is a possibility that I won't have to fix this issue in my scripts till the end of my days? Instead, I can even remove redundant $p.out.close lines? )
pmurias jnthn: is it sane for me to try to get Proc::Async to work on the js backend (I have coroutines on node.js, but most js implementations don't have threads)
AlexDaniel
.oO( in fact, we won't even need to document it as a trap? :O )
timotimo pmurias: probably fine to do it via the event loop 13:51
jnthn pmurias: I suspect it may somehow be possible to do it, though probably not entirely easy 13:52
AlexDaniel: Initial results seem promising at least
jnthn spectests the change 13:53
Geth roast: 6f911a9998 | (Elizabeth Mattijsen)++ | S03-operators/addition.t
Do tests for (a=>-1).Mix (+) <a>.Mix -> mix()

Also disable debugging helpers.
13:59
jnthn Hm, on reflection initial solution maybe a bit aggressive
jnthn spectests a probably better one
Geth rakudo/nom: 66aef5893d | (Elizabeth Mattijsen)++ | src/core/set_operators.pm
Make Mix (+) Mix a bit smarter

  - test for empty mixes better
  - start with a deep clone of left instead of re-building on the fly
14:02
rakudo/nom: d183846116 | (Elizabeth Mattijsen)++ | src/core/Rakudo/QuantHash.pm
Make Mix (+) Mix about 1.5x faster

  - also fix problem with negative weights cancelling out
rakudo/nom: abfd7d9518 | (Jonathan Worthington)++ | src/core/Proc/Async.pm
Don't leak handles plumbed into another process.

By closing them automatically. This fixes RT #131592 running out of handles.
14:06
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=131592
jnthn There we go
jnthn has one more tweak at merge, though 14:24
Just in case I missed something last time around when doing it
No, seems that I did try before the way to get a single descriptor 14:27
It just ends up losing stderr
(If you make a pipe and then point stderr at the same pipe as was bound to stdout) 14:28
So, can't really do it unless one of us figures out how to make that happen. 14:30
And I've not been able to
And found a libuv mailing list post whether somebody else seemed to struggle with the same issue and there wasn't a solution
jnthn makes the last push on Proc::Async so he can do something that isn't process-related tomorrow :) 14:32
ugexe I thought in NIO ( >:) ) at least it was just like redirectBlahBlah(foo) redirectBarBar(foo) 14:33
ugexe isnt a java programmer... just went through the java bits of the proc stuff years ago
Geth rakudo/nom: 5fb6d67921 | (Elizabeth Mattijsen)++ | src/core/Rakudo/QuantHash.pm
Abstract Setty::BAGGIFY logic into R:Q.SET-BAGGIFY
rakudo/nom: 36bf08fca3 | (Elizabeth Mattijsen)++ | src/core/Setty.pm
Make Setty.(Bag|Mix)(|Hash) use R:Q.SET-BAGGIFY

Also fix bug in that empty Sets would not coerce to bag() and mix(), but to a newly created Bag/Mix
rakudo/nom: 11b02d2ca6 | (Jonathan Worthington)++ | src/core/Proc/Async.pm
Add plumbing std[out|err] to stdin in Proc::Async.

So you can now write `$proc2.bind-stdin($proc1.stdout)` and have it work.
15:00
roast: c1f176656a | (Jonathan Worthington)++ | S17-procasync/bind-handles.t
Tests for Proc::Async descriptor plumbing.
15:01
jnthn There we go 15:02
Now there really is nothing that Proc can do that Proc::Async can't :)
DeadDelta ZofBot: but will it blend? 15:07
ZofBot DeadDelta, but this is super-powerful and exciting! I do look at systems that receive http calls and then make calls into other systems with retries and standoffs, collate the results and feed them back
brrt jnthn++ 15:09
Geth rakudo/nom: bacaa05150 | (Elizabeth Mattijsen)++ | src/core/set_operators.pm
Make Setty (-) Setty about 20% faster

  - by first baggifying the left Setty instead of building a Bag from scratch
15:10
lizmat .tell [Tux] in line 1037 of CSV.pm, can the size of @ch change while in the loop? 17:44
yoleaux lizmat: I'll pass your message to [Tux].
[Tux] yes, see line 1253 17:56
yoleaux 17:44Z <lizmat> [Tux]: in line 1037 of CSV.pm, can the size of @ch change while in the loop?
[Tux] and line 1308
that specifically happens with embedded EOL's 17:57
lizmat oki :-)
lizmat stops optimising CSV.pm again 17:58
dogbert2 make spectest suddenly has a tendency to hang, one random test file never completes 18:13
[Coke] mentions his weird new doc issue over here, JIC: irclog.perlgeek.de/perl6/2017-06-27#i_14793874 (it's generating "invalid UTF8", but only with run, perl6 --doc, and .lines) 18:18
mst trout.me.uk/foom.jpg ? 18:53
DeadDelta :) 18:54
ugexe [Coke]: I have a similar issue where I use proc to read lines (url per line) and launch a new proc for each line. it always crashes at 254 on my system (and only osx). i thought it was from the launched processes but now I wonder if its the .lines 18:56
[Coke] lines by itself is fine 19:00
I also am on OS X.
DeadDelta Hehe, yeah, tell me more about how I should learn Perl 5 before criticising when shit like this has double the upvotes than any other post in /r/perl www.reddit.com/r/perl/comments/6jp...rver_that/ 19:10
ZofBot: they want war! They got it!
ZofBot DeadDelta, } # define your own :x modifier Pragmas Various pragmas may be used to control various aspects of regex compilation and usage not otherwise provided for
DeadDelta Oh, that reminds me. 19:11
AlexDaniel jnthn: sooo, should we close github.com/perl6/doc/issues/1304 then? 19:12
Geth rakudo/nom: 7ec136f821 | (Zoffix Znet)++ (committed using GitHub Web editor) | src/Perl6/Grammar.nqp
Remove comment about implementing :p quoter

We don't have any plans to implement it as the .IO coercer does the fine job and is short-enough
19:13
DeadDelta moritz: on mobile, the log pages just say Forbidden" now :/ 20:00
moritz DeadDelta: yes; I had to disable them due to runaway memory usage :( 20:02
DeadDelta :( 20:04
ZofBot: what will I read on the potty now????
ZofBot DeadDelta, Likewise certain implicit lexicals ($_, $/, and $!) are so marked
moritz if you have good ideas for debugging runaway memory usage in a p5 app, I'm all eager to hear it 20:05
DeadDelta What's the app? 20:06
dunno, nytproff or whatever can find it, no?
moritz the IRC log web app 20:07
and nytprof is good for debugging time spent
but not for memory leaks :( 20:08
DeadDelta the ilbot one? github.com/moritz/ilbot?files=1 20:14
and I'm guessing it doesn't leak on older perl 5 20:16
moritz right
perl 5.20 -> 5.24
timotimo DeadDelta: for me, METAOP_ASSIGN disappears completely, at least when the LHS is a variable. potentially only in that case 20:17
in general, i think code that's guaranteed to throw a run-time error is a bad test case for the optimizer
DeadDelta Ah 20:18
moritz I guess I'll try to upgrade to a perl 5.26 via perlbrew
DeadDelta timotimo: yeah, my bad
Geth rakudo/nom: 2ce5b67815 | (Elizabeth Mattijsen)++ | src/core/Stash.pm
Make Stash.AT-KEY a few percent faster

  - purely in nqp ops
  - separate candidate if no global fallback needed
  - don't allocate an nqp::hash until it's really needed
  - makes calling our subs from another package somewhat faster
20:19
timotimo :) 20:20
lizmat it is now faster to call A::a instead of A.a *IF* you do not pass any arguments 20:27
(and not use self in the method case)
that's because the lookup with Stash.AT-KEY is faster than setting up "self" in the method 20:28
even if you don't use self or $!foo or $.foo inside the method
jnthn is a tad surprised by that, in that the method could be inlined... 20:29
AlexDaniel: Seems like we can
lizmat jnthn: even inlined, setting up "self" through List.from-slurpy-flat is more expensive 20:30
DeadDelta TIL you can call A::a instead of A
TIL you can call A::a instead of A.a
AlexDaniel jnthn: thank you very much 20:31
jnthn Only if it's a sub
DeadDelta TIL you can call a sub as A.a :s
AlexDaniel we will see how it goes, I'll probably update rakudo for whateverables soon
jnthn lizmat: huh, where is List.from-slurpy-flat used?
lizmat m: class A { method a() { } }; for ^100000 { A.a }; say now - INIT now
camelia 0.14180921
lizmat jnthn: ^^^
DeadDelta m class Foo { our sub x { say "hi" } }; Foo.x 20:32
jnthn m: class A { my method a() { } }; for ^100000 { A::a(A) }; say now - INIT now
camelia Could not find symbol '&a'
in block <unit> at <tmp> line 1
lizmat m: class A { our sub a() { } }; for ^100000 { A::a }; say now - INIT now
DeadDelta m: class Foo { our sub x { say "hi" } }; Foo.x
camelia 0.12977999
No such method 'x' for invocant of type 'Foo'
in block <unit> at <tmp> line 1
lizmat m: say 0.14180921 / 0.12977999 20:33
camelia 1.092689328
DeadDelta Ah, now I get it
jnthn I still don't get the comment on List.from-slurpy-flat... 20:34
lizmat jnthn: class A { method a() { } }; for ^100000 { A.a } # profile this and see that List.from-slurpy-flat takes 40% of CPU
jnthn Doesn't even show up in a profile of that that I just made 20:36
[Coke] jnthn: do you have local mods?
jnthn No, though build is a few days old
But it'd still be a totally bizzare thing for that code to call
It shows method a inlined into the sub body 20:37
uh, the loop block body I mean
jnthn is just a tad surprised that the passing/handling of self would be so costly, is all 20:38
[Coke] camelia, help?
camelia [Coke]: Usage: <(rakudo-moar|p5-to-p6|prof-m|star-m|debug-cat|nqp-js|rakudo-jvm|nqp-moarvm|nqp-jvm|nqp-q|r-j|sm|star|nom|nqp-m|p6|m|p56|rakudo|nqp-mvm|r-m|r-jvm|j|rj|perl6|rm|r|nqp)(?^::\s(?!OUTPUT)) $perl6_program>
[Coke] prof-m: class A { method a() { } }; for ^100000 { A.a }
camelia No such file or directory
.. Prof: p.p6c.org/4ae425a
[Coke] guess that's borked. :)
jnthn aww
camelia (timeout)Can't exec "./rakudo-inst/bin/perl6-m": No such file or directory at lib/EvalbotExecuter.pm line 206.
cat: /home/camelia/rakudo-inst/revision: No such file or directory

now running scp...
/tmp/mprof.html: No such file or directory
.. Prof: p.p6c.org/4ae4270
lizmat jnthn: ah, I get it now, so you're saying the from-slurpy-flat is called for the loop body ? 20:39
*not* for the method call ?
jnthn lizmat: I'm saying that on a profile using a bit-back-from-HEAD Rakudo I don't see a call to from-slurpy-flat at all 20:40
It just doesn't show up in the routines list
lizmat well, it does for me :-(
jnthn Will try it in the morning on my work box where I've got a bleeding edge build 20:41
If it is there it's a recent regression
lizmat it claims it is being called at gen/moar/BOOTSTRAP.nqp:3185
which is the foreign_transform_array entry 20:42
jnthn And this is just for /perl6-m --profile -e 'class A { method a() { } }; for ^100000 { A.a }' ?
lizmat yup 20:43
lizmat doubly verifies
yup
jnthn Wonder what coulda caused that 20:45
It's just a bizzare thing to end up calling 20:46
Ah well, tomorrow. 20:48
DeadDelta I see slurpy from flat on 2017.06-63-g2a88c20 20:49
m: List.^lookup('from-slurpy-flat').wrap: -> | { say "hi"; nextsame }; class A { method a() { } }; for ^1 { A.a } 20:51
camelia No such method 'enter' for invocant of type 'Any'. Did you mean 'eager'?
in block <unit> at <tmp> line 1
lizmat m: List.^lookup('from-slurpy-flat').head.wrap: -> | { say "hi"; nextsame }; class A { method a() { } }; for ^1 { A.a } 20:54
camelia No such method 'enter' for invocant of type 'Any'. Did you mean 'eager'?
in block <unit> at <tmp> line 1
lizmat hmmm
m: BEGIN List.^lookup('from-slurpy-flat').head.wrap: -> | { say "hi"; nextsame }; class A { method a() { } }; for ^1 { A.a }
camelia 5===SORRY!5=== Error while compiling <tmp>
An exception occurred while evaluating a BEGIN
at <tmp>:1
Exception details:
No such method 'enter' for invocant of type 'Any'. Did you mean 'eager'?
in code at <tmp> line 1
lizmat m: dd List.^lookup('from-slurpy-flat') 20:55
camelia Method from-slurpy-flat = method from-slurpy-flat (List $: | is raw) { #`(Method|54316856) ... }
lizmat m: dd List.^lookup('from-slurpy-flat').head
camelia Method from-slurpy-flat = method from-slurpy-flat (List $: | is raw) { #`(Method|32997224) ... }
DeadDelta Same error in 2015.12 fwiw
lizmat m: dd List.^lookup('from-slurpy-flat').head.wrap: -> { }
camelia No such method 'enter' for invocant of type 'Any'. Did you mean 'eager'?
in block <unit> at <tmp> line 1
DeadDelta Still have from-slurpy-flat on 2017.06 21:16
The profile on 2017.05 has a lot more crap in it, but it still got from-slurpy-flat in it at 32% 21:29
.tell jnthn RE from-slurpy-flat I tried with 2017.06 and 2017.05 builds, it's there in both at around 32%-38%
yoleaux DeadDelta: I'll pass your message to jnthn.
DeadDelta Thank you, robot! You are most kind. 21:30
timotimo DeadDelta: do you think it'd be useful for Proc::Q to also give a channel that tells you when procs have been started? 21:37
DeadDelta What for? 21:38
I kinda thought of it you put in a bunch of data you need to process with procs and you pull it out when ready. You never deal with the procs directly
DeadDelta leaves to finish off Part II of Seqs article 21:41
timotimo okay so 21:47
the crashing when profiler runs, right?
MasterDuke you've fixed it?!
timotimo run_alt is being invoked with a last argument that comes from the register loc_3_obj
but nothing in the whole frame writes to that
aha, indeed, it's also nowhere to be found in the spesh output 21:49
i wish i was able to fix it already 21:59
i might want to have more debugging helpers in place to see what spesh is thinking
Geth rakudo/nom: 9a2127f2b5 | (Timo Paulssen)++ | src/core/Nil.pm
give nil methods a much more efficient "take any args" signature
22:43
timotimo ^- here's the fix for from-slurpy-flat
DeadDelta ROFL 22:45
timotimo++ nice one :D 22:46
damn. Note to self: when writing an article don't run code samples on your 32-bit box that don't got jit :/ 23:01
A ~1000-word section just went from "it's a 30% gain but with these easy codes we make it 2.5x fastar!" just became "we made stuff 10% faster and with this bunch of code we make it 50% faster" :( 23:02
timotimo ;( 23:12
DeadDelta ? 23:16
That face looks angry :D
ZofBot: what kind of face you like to make? 23:20
ZofBot DeadDelta, emit" each of the return values of the closure, and then call "
DeadDelta You're not funny any more. I need to reset your brain.
timotimo that's more like "damn, that's annoying" 23:21
the face
ugexe closure is not doing, only alah is doing 23:22
DeadDelta :)
timotimo jit is not doing, alah is doing 23:28
[Coke] oh please don't. :| 23:31
heyyyy, segfault.
perl6 htmlify.p6 --parallel=10 --sparse=4 segvs. 23:32
(doc repo)
golfing...
timotimo start with the usual, disabling spesh for example 23:35
[Coke] MVM_JIT_DISABLE=1 MVM_SPESH_DISABLE=1 perl6 htmlify.p6 --parallel=10 --sparse=4 # still segvs. 23:37
oh, just straight up segfaults with perl6 htmlify.p6, no opts needed. 23:38
timotimo oh, huh 23:41
how soon does it crash? 23:43
i'm getting rather far in the one without arguments 23:45
[Coke] crashed immediately. 23:47
immediately.
[6~
timotimo not on my machine
This is Rakudo version 2017.06-87-g36823ab built on MoarVM version 2017.06-30-g389e973
maybe that's old?
[Coke] This segfaults for me: use URI::Escape; 23:49
use lib 'lib';
use Pod::Htmlify;
I'm on 2017.06-87-g36823ab18 23:50
... same version. huh
I cut down htmlify.p6 to those 3 lines, segv.
MasterDuke i think there's already a ticket about `use lib 'lib'` 23:51
buggable: lib 23:52
rt.perl.org/Ticket/Display.html?id...et-history 23:53
[Coke] ugh. 23:54
ugexe [Coke]: a longshot, but try running with `perl6 -I. ...`
[Coke] DeadDelta: see, this happens whenever I try to hack on docs. :)
DeadDelta :) 23:59