MasterDuke anybody have an idea how/why i get "Cannot find method 'orig' on object of type NQPMu" right after this line ( github.com/perl6/nqp/blob/master/s....nqp#L1404 ) if i add 'my str $target := ~$node.orig()' right after it? 01:11
timotimo easy, $node is NQPMu, i.e. our NQP's way of saying "mu" 01:15
i.e. $node wasn't set
oh wait
after that line?
MasterDuke yeah! 01:16
timotimo what is this madness?
MasterDuke "if nqp::isconcrete($node) && nqp::can($node,'orig') { my str $target := ~Snode.orig(); ... "
boom! error
blows my mind, i don't even know how to debug 01:18
timotimo did you try ~($node.orig()) just to make sure it's not doing the precedence the other way around?
MasterDuke yep, also just "my $target := $node.orig()", same thing 01:19
timotimo *weird*. try turning off spesh maybe? 01:20
MVM_SPESH_DISABLE=yesplease
MasterDuke same 01:21
timotimo that's a relief 01:25
can i have a closer look at the whole thing?
is it really just that single line changing?
MasterDuke there are other lines changing, and they are the problem, even though it's pointing there 01:27
i backed out to just that line added and it was fine
timotimo ah, hm.
MasterDuke let me gist the diff
gist.github.com/MasterDuke17/8bf6e...1d5042ce79 01:28
no idea why those other lines would cause that error 01:29
timotimo + my str $target := ~Snode.orig(); 01:30
dude
i thought you just made a typo in irc
nqp has this quirk where if you write something that doesn't exist like MichaelMcDoestExist, you get NQPMu as the value
so: problem solved
MasterDuke !!!! that's what i get for being on my laptop i guess 01:31
timotimo i'm sorry it took 20 minutes to find this :|
MasterDuke man, thanks, i never would have seen that
(and about 30min before posting of messing around thinking i had just gone insane) 01:32
timotimo at one point i suggested making things that don't exist blow up instead of just silently giving NQPMu
i just didn't program it :(
i'll go to bed soon. have a good one! :) 01:33
MasterDuke likewise
oh, hopefully quick question, does nqp have any regex capability? 01:34
japhb MasterDuke: The grammar engine is written in NQP, so yes. :-) 01:44
MasterDuke japhb: you know, that makes perfect sense, but for some reason i don't think i've seen a line of nqp with a regex in it 01:46
timotimo the thing is, regex has a very high overhead for startup 01:48
so we tend to use specialized ops for stuff if we can get around regex 01:49
viki TWEAKED
timotimo: what about it? 01:50
I don't get what you mean about it... where would it be used and what would it do?
timotimo no clue 01:51
it was just a random thinked
viki :)
MasterDuke Attempt to divide 1 by zero using div in method floor at src/core/Rational.pm line 53 02:36
that's not using the @?SOURCE_LINES method i implemented before 02:37
but instead just making changes to compile_all_the_stmts() in src/vm/moar/QAST/QASTCompilerMAST.nqp 02:38
lizmat Files=1152, Tests=53724, 218 wallclock secs (12.81 usr 3.67 sys + 1317.90 cusr 123.74 csys = 1458.12 CPU) 08:43
dalek kudo/nom: 97fb6c2 | lizmat++ | src/core/Rakudo/Internals.pm:
Make starting a MappyIterator faster

This affects all Hash/Map/Bag iterator methods, such as .keys, .values,
  .pairs, etc. Iterating over a 2 element hash was made 1.6x faster
  because of this. YMMV for larger hashes.
09:21
kudo/nom: 87595f4 | lizmat++ | src/core/Rakudo/Internals.pm:
Simplify because we can
lizmat and good *, #perl6-dev! :-)
masak good antenoon, lizmat! 09:22
DrForr o/
lizmat afk& 09:35
dalek kudo/nom: 077c8f0 | lizmat++ | src/core/Any-iterable-methods.pm:
Make starting a Grepper faster

This affects all .grep without adverbs. Gives about a 20% improvement on grepping a 2 element list.
12:24
timotimo *nice*
lizmat yeah, especially since it's a patch consisting of removing 1 char, and replacing 1 char 12:30
timotimo it'd be ideal if we could make the optimization for private method calls work again and undo these commits and gain an even bigger improvement on top of what you just got by turning it into non-private :) 12:31
"\list,Mu \test"; my pun-filled brain wants to read "litmus test" here 12:33
lizmat well, jnthn yesterday said something of just poking a role into the class instead of cloning it 12:34
but, that doesn't give me enough guidance to approach it from that end 12:35
timotimo i think it was more about explicitly setting the SC on the method when it is encountered
rather than waiting for it to be put into the SC when it figures out it needs to be in there at the far end of compilation
so basically immediately setobjsc on the thing, i guess?
lizmat well, that's equally above my payrate :-)
lizmat has images of herself with a lot of dancing brooms 12:36
jnthn Going for lunch, but: $W.add_object($priv-meth) or so
Replacing $W with however you get the world in Optimizer.nqp
timotimo i need to take a bit of rest, and my current top priority ought to be getting a multi-threaded allocator for our fixed size stuff, so that we don't bottleneck on allocating frames when multiple threads try to do invocations at the same time
jnthn bbiab 12:37
brrt timotimo: silly question maybe, but I thought FSA was threadcontext-bound 12:56
isn't it?
probably not otherwise you wouldn't mention it...
dalek ast: 0521cc2 | cpin++ | S32-list/deepmap.t:
Add initial tests for deepmap (#161) (#181)
13:20
kudo/nom: 9c5b7ba | cpin++ | t/spectest.data:
Add S32-list/deepmap.t to spectest.data
13:30
kudo/nom: 03a2897 | (Zoffix Znet)++ | t/spectest.data:
Merge pull request #916 from cpin/161-deepmap

Add S32-list/deepmap.t to spectest.data
viki This time there was definitely no bunches. A single commit ignored by dalek: github.com/perl6/roast/commit/8dbf...3680c2bb5a 14:01
viki tries the good ol' "have you tried turning it off and on" solution 14:02
dalek ast: dc78f3a | (Zoffix Znet)++ | S07-iterators/range-iterator.t:
Test Iterator.skip-at-least
14:22
ast: b03dd14 | (Zoffix Znet)++ | S07-iterators/range-iterator.t:
Test Iterator.skip-at-least-pull-one
14:28
kudo/nom: 0e7f480 | lizmat++ | src/core/Date (3 files):
Make Date/DateTime creation 20% faster
14:45
lizmat afk& 14:52
viki
.oO( we need a bot that reports what NQP/MoarVM version bumps bring )
15:02
To help logging stuff like this in ChangeLog easier :) github.com/rakudo/rakudo/commit/62...832102b9a9 15:03
timotimo brrt: it actually always goes through tc->instance->fsa 15:09
jnthn viki: MoarVM also has a ChangeLog for its stuff, fwiw :) 15:17
viki Well, it's currently empty for 2016.11 :) 15:18
GitHub's compare features show the commits tho: github.com/MoarVM/MoarVM/compare/1......a4c0a84
(that the version bump brought in)
jnthn Yeah, it's populated at each release, by git log --oneline --reverse output that I massage a bit :) 15:19
brrt timotimo: aha 15:22
and you want to make it multithreaded how?
timotimo by implementing the things Hoard has
dalek kudo/nom: 01856db | (Zoffix Znet)++ | docs/ChangeLog:
Log all changes to date

Documents commits: 006f008 0134132 050cf72 05b65d0 077c8f0 07eeea8 0b97362 0cf7b36 0e7f480 0f2566a 1293188 1794328 1b95636 1bb5aad 1c425f9 1fce095 200364a 208a4c2 2827edb 2dd0ddb 33eeb32 34e515d 364e67b 3b9c4c9 3fdae43 41e2572 43cb55f 43dbc96 44a4c75 48c2af6 49fd825 4f3681b 4fc17df 55b9e90 576f3a1 5ac593e 5b2bdeb 5fe8cf7 608de26 627a77e 66726e8 697a0ae 6ccecb1 6dc5074 70a367d 71a01e9 729d7e3 736ab11 74d0e36 764cfcd 79bb867 7a2baf4 7a456ff 7ba7eb4 8064ff1 82432a4 87880ca 87bba04 8d357af 8e9fd0a 906719c 9409d68 97fb6c2 9f94525 a1d8e93 a7e801f a822bcf aaec517 aedb8e7 b1c41b7 b4dfed2 b4fe680 b7201a8 b7d9537 b7e632e b90c741 ba152bd bc7fcc6 bf51eca c9a24d9 ce85ba3 d27ecfa d3a0907 d92e1ad e10f767 e3e3fef e42b68e e472420 9c4b516 | lizmat++ | src/core/ (2 files): Rename ShapeIterator -> ShapeLeafIterator
This describes more what it does, and makes it easier to understand what the ShapeBranchIterator is.
15:59
viki github.com/rakudo/rakudo/commit/01...53255b5f3f
viki is trying somethign new
ChangeLog entries include short commit sha. Wanna see code changes? Wanna know more about the change? Look up the sha and read diff/commit message 16:00
timotimo do those hashes contain hashes from non-rakudo?
viki No, these are all Rakudo
Some of them point to a nqp version bump that brought in nqp/MoarVM fixes 16:01
timotimo OK
viki Also, lizmat++ we have a huge number of things in "Efficiency" section for this release. 16:02
timotimo \o/ 16:03
indeed
jnthn: were you actually saying instead of bailing out when there's no SC, we just stick it into the current world? 16:04
timotimo compiles a rakudo with that 16:07
jnthn timotimo: yeah
timotimo Object of type Method in QAST::WVal, but not in SC - $*W.add_object doesn't seem to be enough, strangely 16:08
oh!
got the if the wrong way around :)
i'm measuring speeds now 16:13
well, compiling with a previous speed-up reverted
huh. so i'm iterating over a two-element hash now ... and reverting the private-into-public method change makes it noticably slower 16:16
the addition or removal of $*W.add_object there makes no difference to performance when there's a private method call there 16:19
japhb star: use LWP::Simple; my @recent = LWP::Simple.get('tux.nl/Talks/CSV6/speed.log').lines...rds[*-1]); my ($min, $max) = @recent.min, @recent.max; my $range = max($max - $min, .1 * $min, .25); my @bar = (^8 + 0x2581)>>.chr; my $spark = @recent.map({ @bar[(($_ - $min) / $range * (@bar - 1)).round] }).join; say $spark; 18:40
camelia star-m 2016.04: OUTPUT«▄▆▃▃▇▃█▄▄▅▃▃▃▃▄▄▅▅▄▅▃▃▃▄▂▄▄▁▁▂␤»
japhb star: use LWP::Simple; my @recent = LWP::Simple.get('tux.nl/Talks/CSV6/speed.log').lines...rds[*-1]); my ($min, $max) = @recent.min, @recent.max; my $range = max($max - $min, .1 * $min, .25); my @bar = (^8 + 0x2581)>>.chr; my $spark = @recent.map({ @bar[(($_ - $min) / $range * (@bar - 1)).round] }).join; say $spark ~ " $min\.\.{$min + $range}"; 18:41
camelia star-m 2016.04: OUTPUT«▄▆▃▃▇▃█▄▄▅▃▃▃▃▄▄▅▅▄▅▃▃▃▄▂▄▄▁▁▂ 6.510..7.686␤»
japhb star: use LWP::Simple; my @recent = LWP::Simple.get('tux.nl/Talks/CSV6/speed.log').lines...rds[*-1]); my ($min, $max) = @recent.min, @recent.max; my $range = max($max - $min, .1 * $min, .25); my @bar = (^8 + 0x2581)>>.chr; my $spark = @recent.map({ @bar[(($_ - $min) / $range * (@bar - 1)).round] }).join; print $spark ~ " $min .. {$min + $range}";
camelia star-m 2016.04: OUTPUT«▄▆▃▃▇▃█▄▄▅▃▃▃▃▄▄▅▅▄▅▃▃▃▄▂▄▄▁▁▂ 6.510 .. 7.686»
tadzik :D:D 19:15
this is marvelous
moritz japhb++ 19:17
viki m: say "Bench will run at {-0.018989*24 + 14.18445}s in January 2018" 19:52
camelia rakudo-moar 01856d: OUTPUT«Bench will run at 13.728714s in January 2018␤»
viki hm
m: say "Bench will run at {14.8767**(-.00195329*24)}s in January 2018" 19:55
camelia rakudo-moar 01856d: OUTPUT«Bench will run at 0.881118073842747s in January 2018␤»
timotimo i hope we reach that earlier :P
viki oh, nevermind, my data is flawed :P 19:56
"There are lies, damned lies, and statistics"
cognominal wiki, you forgot polls :) 20:10
viki *sigh* I don't understand this Microsoft Math... "y = 3E+48e^(-0.003x)" where ^() part means the inside stuff is superscript
wtf is E and e... is that E as an exponent and e is natural e?
Microsoft--
oh, apparently that *is* what it is... because their software counts `x` with dates to be months from... Jesus times I guess. 20:14
m: say Date.today.day-of-year 20:17
camelia rakudo-moar 01856d: OUTPUT«315␤»
viki I guess it's my fault for expecting it to DWIM with dates :) 20:18
Well, according to chart estimates using whatever values it uses for dates, in 1 year, we'll reduce the bench time to about 2.8s 20:20
lizmat viki: that would be nice :-) 20:21
viki purty chart: twitter.com/zoffix/status/796810512986238978 20:23
kudo/nom: c7c5444 | lizmat++ | src/core/Rakudo/Internals.pm:
We don't actually need to init a list_i to 0
21:37
kudo/nom: d989d96 | lizmat++ | src/core/Rakudo/Internals.pm:
Size is really the same as $!indices' size
21:50
lizmat good night, #perl6-dev! 22:34