Geth rakudo: MasterDuke17++ created pull request #1317:
Add two special cases for infix:<,>
02:55
synopsebot RAKUDO#1317 [open]: github.com/rakudo/rakudo/pull/1317 Add two special cases for infix:<,>
AlexDaniel huggable: blockers 06:03
huggable AlexDaniel, github.com/rakudo/rakudo/labels/%E...0%E2%9A%A0
yoleaux 16 Dec 2017 20:59Z <Zoffix> AlexDaniel: last release blocker is now resolved: github.com/rakudo/rakudo/issues/1308
AlexDaniel Awesome.
everyone++
so, I will be away for a few hours, then will get back to the release 06:12
by the way there's a changelog draft here, which everyone can edit: github.com/rakudo/rakudo/wiki/ChangeLog-Draft 06:17
.tell samcv no release blockers right now, so let me know when you're ready (I'll be back ≈14:00 UTC) 06:20
yoleaux AlexDaniel: I'll pass your message to samcv.
AlexDaniel`: RT/GH weekly 07:18
AlexDaniel` yoleaux: no! Do it yourself! 07:37
Hotkeys I was looking through the changelog and noticed the .toggle thing 08:00
It seems pretty neat but I'm curious what kind of uses it would have?
AlexDaniel goddamn spam on freenode :S 09:49
ahhhh 10:16
so I've seen this issue yesterday…
but I shrugged it off thinking it's a glitch or whatever 10:17
but now releasable failed trying to do the dry run: gist.githubusercontent.com/AlexDan...tfile1.txt
that's when installing Inline::Perl5 10:18
nine AlexDaniel: I see it here, too 10:31
AlexDaniel nine: … thanks god :D
nine Also it looks very reproducible, so it should be bisectable 10:32
AlexDaniel c: HEAD gist.githubusercontent.com/AlexDan...tfile1.txt
committable6 AlexDaniel, Successfully fetched the code from the provided URL.
AlexDaniel, ¦HEAD(53a94fe): «ok 1 - ␤1..1␤»
AlexDaniel not with bisectable though…
c: HEAD gist.githubusercontent.com/AlexDan...tfile1.txt
committable6 AlexDaniel, Successfully fetched the code from the provided URL.
AlexDaniel, ¦HEAD(53a94fe): «ok 1 - ␤1..1␤» 10:33
AlexDaniel c: HEAD gist.githubusercontent.com/AlexDan...tfile1.txt
committable6 AlexDaniel, Successfully fetched the code from the provided URL.
AlexDaniel, ¦HEAD(53a94fe): «ok 1 - ␤1..1␤»
nine odd
[Tux] Rakudo version 2017.11-130-g53a94fe51 - MoarVM version 2017.11-48-g0b9f8090a
csv-ip5xs1.136 - 1.289
csv-ip5xs-2013.818 - 14.226
csv-parser12.363 - 13.682
csv-test-xs-200.476 - 0.482
test12.315 - 12.394
test-t2.975 - 3.110
test-t --race1.267 - 1.363
test-t-2056.098 - 56.212
test-t-20 --race19.204 - 21.405
lizmat Files=1233, Tests=75960, 329 wallclock secs (14.94 usr 5.30 sys + 2272.39 cusr 229.84 csys = 2522.47 CPU) 10:39
seems we lost quite a bit of performance with the revert of jit MVM_OP_throwpayloadlexcaller :-(
but I guess it's for the better: more performance improvements in the future :-) 10:40
and at least I haven't seen any strange flappers anymore
AlexDaniel there's a ticket for putting it back: github.com/MoarVM/MoarVM/issues/765 10:41
anyway:
huggable: blockers
huggable AlexDaniel, github.com/rakudo/rakudo/labels/%E...0%E2%9A%A0
AlexDaniel I'm still not back home so o/ 10:42
nine The Inline::Perl5 eval issue is caused by MoarVM commit ba1fb954222810a87f0f5501290877fdcba6aa05 "jit a few exception related ops" 11:14
AlexDaniel timotimo: ↑ ping ? :) 11:39
Hotkeys ... 11:48
timotimo AlexDaniel, nine, zoffix had already bisected that very commit in the original bug report. that's why we reverted that partially, right? 12:57
AlexDaniel` ..... Right 12:58
Damn I think that was with the older moarvm
False alarm probably 12:59
timotimo "that"? 13:03
lizmat: we could mark throwpayloadlexcaller :noinline in the ops file; that would prevent frames that now inline it and can't get jitted to at least have the rest of themselves jitted at the expense of calling whatever had throwpayloadlexcaller in them? 13:04
lizmat timotimo: at his point before the release I would go for rather safe than sorry, so no more changes there until after the release 13:10
AlexDaniel` +1 13:15
timotimo wish we had found this before jnthn went AFK for travels 13:16
lizmat timotimo: hopefully he'll find it quickly when he gets back :-) 13:55
AlexDaniel c: HEAD^,HEAD gist.githubusercontent.com/AlexDan...tfile1.txt 13:59
committable6 AlexDaniel, Successfully fetched the code from the provided URL.
AlexDaniel, ¦HEAD^: «not ok 1 - ␤# Failed test at /tmp/x_xmzmT9fk line 9␤# expected: '2'␤# got: (Any)␤1..1␤# Looks like you failed 1 test of 1␤ «exit code = 1»» ¦HEAD(53a94fe): «ok 1 - ␤1..1␤»
AlexDaniel yeah, false alarm
samcv . 14:36
yoleaux 06:20Z <AlexDaniel> samcv: no release blockers right now, so let me know when you're ready (I'll be back ≈14:00 UTC)
AlexDaniel o/
samcv o/
so we're ready for a release?
AlexDaniel I think so 14:37
stuff seems to be ok on jvm, it'd also be great if someone made sure there's no extraordinary breakage on windows 15:03
( compared to this for example: github.com/perl6/roast/issues/320 ) 15:04
MasterDuke timotimo: any thoughts or suggestions on github.com/rakudo/rakudo/pull/1317 ? 16:38
timotimo interesting, so that's what that was for 16:39
does it have an impact on run time for my ($a, $b) as well? 16:40
oh, it's only about the RHS of the assignment maybe?
MasterDuke eh, i think both
i think i did some runs with my ($a, $b) inside the loop as well 16:41
and the infix:<,> calls got split, half to the original candidate (i assume for the my ($a, $b)), half to my new candidate 16:42
but my more rigorous tests didn't have it in the loop (just to simplify things) 16:44
timotimo i think the infix:<,>($, $) candidate may spesh well, but i'm not sure how nextsame works there, tbh
MasterDuke i'm trying that now
timotimo oh, actually
no, it wouldn't, because the istype is on the result of atpos, we don't get that yet
MasterDuke oh, it would *not* spesh well?
timotimo no, it'd be completely oblivious for the two type checks 16:46
p6vmargarray is a little gnarly in the code it produces 16:47
MasterDuke well, i just tried it and a profile shows it jitted
timotimo right, it wouldn't prevent jitting, it's just opaque to spesh with regards to "facts" about things 16:48
MasterDuke though i wonder if it'd be better to change it to (\a, \b) and then `istype(a, Slip) || istype(b, Slip)`?
timotimo i'd assume so
p6argvmarray compiles into a param_sp op, i.e. create an array from parameters that got slurped, and then it loops over the array and calls hllize on every entry 16:49
not only do we currently not understand what param_sp contains, even though we can get info from the callsite, but the loop makes it completely unknowable
MasterDuke so `nqp::p6bindattrinvres(nqp::create(List),List,'$!reified',nqp::list(a, b))` would be faster than `nqp::p6bindattrinvres(nqp::create(List),List,'$!reified',nqp::p6argvmarray())` ? 16:50
timotimo that'd be my intuition 16:51
of course the real interesting part comes from hopefully being able to eliminate the typechecks against Slip
MasterDuke trying that now 16:52
`multi sub infix:<,>(\a, \b) { (nqp::istype(a,Slip) || nqp::istype(b,Slip)) ?? nextsame() !! nqp::p6bindattrinvres(nqp::create(List),List,'$!reified',nqp::list(a,b))`
timotimo i don't get a timing difference at all though? 16:54
MasterDuke hm, seems about the same speed 16:55
timotimo i was comparing against "no infix sub declared at all"
it does choose the , candidate in my code 16:56
MasterDuke oh, you're testing also?
timotimo once per loop
a profile shows that infix:<,> is only responsible for 7% of total run time 16:58
MasterDuke i think i show it as a little more than than before any changes and a little less than that after 16:59
but the top for me is `STORE SETTING::src/core/List.pm:736` 17:00
timotimo yeah, by far
STORE calls iterator calls ReifiedList
MasterDuke yep
timotimo the semantics of list STORE are complex 17:02
if we were able to do a cheap check and go into a fast path, that'd be helpful
though perhaps the right answer here is for the optimizer to compile custom code for such list assignment
MasterDuke i looked at those, but yeah, didn't see any quick and obvious wins
timotimo i.e. bypass STORE entirely 17:03
MasterDuke :1446
timotimo unless of course our users are hoping to be able to .wrap the STORE method and have their version be run for ($a, $b) = 1, 2
MasterDuke well, wasn't TimToady saying something about how some operators we can assume wouldn't/shouldn't be messed with by users? would infix:<,> fall into that category? 17:05
timotimo this is the = operator that would be messed with though :D 17:06
MasterDuke oh, ha, right
AlexDaniel pfffffffffffft :D 17:12
I was kinda struggling here for an hour trying to make sense of releasable failing half way through
sooo… 「make test」 for some reason mkdirs t/spec/packages 17:13
and once that thing is there, make spectest fails because it refuses to clone into t/spec
because the path exists
timotimo whoops 17:14
AlexDaniel it is this file I think github.com/rakudo/rakudo/blob/mast...itespace.t 17:15
changing it to use lib <t/packages>; resolves the problem 17:17
but why does it even need to use that
nine camelia: say "alive" 17:18
m: say "alive" 17:19
camelia alive
nine Note to self: re-install grub after every OS upgrade before rebooting
Geth rakudo: 3f90f663ba | (Aleks-Daniel Jakimenko-Aleksejev)++ | t/07-pod-to-text/01-whitespace.t
Remove unused and evil “use lib” line

If you run 「make test」, this file will effectively do
  「mkdir -p t/spec/packages」. If you then attempt to run 「make spectest」,
it will fail because it has to clone roast first, but the directory exists already so it will not manage to do that succesfully.
17:22
roast/6.c-errata: 44f355ae59 | (Aleks-Daniel Jakimenko-Aleksejev)++ | S02-types/range.t
Fix overly specific test

As noted in this comment:
  rt.perl.org/Ticket/Display.html?id...xn-1512874
On master the test was changed in 172b50b5b8b8846cb8fbd00395ab4bee376c5a9c
19:16
roast/6.c-errata: ac8f7e9ac3 | (Tim Smith)++ (committed by Aleks-Daniel Jakimenko-Aleksejev) | S26-documentation/08-formattingcodes.t
Formatting Codes don't produce spurious ""

This adjusts for rakudo/rakudo#1300.
  - rejigs the array indexes so that the tests work without "" being
   everywhere
synopsebot RAKUDO#1300 [closed]: github.com/rakudo/rakudo/pull/1300 Untwine Pod
AlexDaniel samcv: so everything looks clean from my side and I'm ready 20:14
MasterDuke huh, nextsame is not at all cheap 22:19
any cheaper way to get the same behavior? 22:20
lizmat MasterDuke: looking at the code, I don't think it can get much cheaper except at the VM level 22:22
didn't timotimo just undo the throwpayloadlexcaller optimization in MoarVM because it caused spurious crashes ? 22:23
MasterDuke i'm looking at a profile of the more generic version of my PR on this code: 'my @a; my @b; @b = "a",|@a for ^1000000' 22:26
it calls find_best_dispatchee on every iteration
dr_jon326 04,11▄04,06▄03,08▄07,06▄04,08▄03,03▄10,07▄07,06▄04,04▄09,08▄12,09▄10 DID YOU GUYS KNOW TODAY WAS NIGGERS DAY?? SAY HI TO YOUR FAVORITY NIGGER IN #FREENODE!! quicktalkeh676te.onionnebdwuopcr: squashable6 Geth quotable6 ilbot3 mst reportable6 bisectable6 literal [Tux] unicodable6 scovit dalek SmokeMachine nine committable6 evalable6 tbrowder Hotkeys camelia perlpilot synopsebot coverable
13,04▄09,06▄10,08▄06,12▄07,04▄10,05▄07,04▄11,13▄04,07▄10,10▄10,04▄10,05▄05 DID YOU GUYS KNOW TODAY WAS NIGGERS DAY?? SAY HI TO YOUR FAVORITY NIGGER IN #FREENODE!! quicktalkeh676te.onionanxop: go|dfish krunen dalek zostay [Tux] Geth masak committable6 perlpilot jnthn btyler nine dogbert17 unicodable6 ZzZombo MasterDuke scovit evalable6 SmokeMachine timotimo statisfiable6 BooK cameli
lizmat *sigh*
Hotkeys Why am I always pinged in these
lizmat .tell moritz we need some irclog cleaning again (just now) 22:27
yoleaux lizmat: I'll pass your message to moritz.
lizmat Hotkeys: it just mentions everybody on the channel 22:28
Hotkeys oh it didn't look like it mentioned that many
lizmat well, maybe the script is broken
MasterDuke: I was thinking of abstracting the List with Slip creation logic into Rakudo::Internals 22:29
and call that from a 1,2 and 3 parameter version
should a Slip be found
this would make the fast path versions much smaller, and easier inlineable 22:30
MasterDuke i'm sure you can do something better than what i have
lizmat well, I'm not sure, I always find things I didn't expect :-)
I recently also found that not HLLizing yourself, makes code faster 22:31
m: use nqp; sub a(|) { nqp::hllize(nqp::p6argvmarray) }; a() for ^1000000; say now - INIT now 22:32
camelia 0.341148347
lizmat m: use nqp; sub a(|) { nqp::p6argvmarray }; a() for ^1000000; say now - INIT now
camelia 0.1925476
lizmat not sure what that is about
MasterDuke hmm 22:33
lizmat m: use nqp; sub a(|) { nqp::p6bindattrinvres(nqp::create(List),List,q/$!reified/,nqp::p6argvmarray) }; a() for ^1000000; say now - INIT now
camelia 0.221951
lizmat vague recalls the HLLization is needed because the JVM dies in many cases if it is not HLLized 22:35