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] |
|
||||||||||||||||||||||||||||||||||||||
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 |