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 |