github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
00:14 Ven`` joined 00:15 lizmat left, p6bannerbot sets mode: +v Ven`` 00:20 lizmat joined, p6bannerbot sets mode: +v lizmat 01:05 Ven`` left 04:49 MasterDuke left 06:38 domidumont joined, p6bannerbot sets mode: +v domidumont 07:05 domidumont left 07:32 domidumont joined, p6bannerbot sets mode: +v domidumont 07:45 brrt joined 07:46 p6bannerbot sets mode: +v brrt
brrt good moarning 08:19
nwc10 good *, brrt
jnthn o/ 10:26
nwc10 \o
The P in pea stands for "Partial"?
jnthn Yes 10:38
lizmat
.oO( I thought it stood for Pea, in the great GNU tradition :-)
10:48
jnthn nwc10: I'll submit a talk about it for GPW, which I guess you'll be at? :) 10:57
nwc10 I plan to be 10:59
nine jnthn: the nqp::neverrepossess you added in github.com/rakudo/rakudo/blob/mast...ar.nqp#L65 is not enough. The cache gets serialized anyway and the MVM_CF_NEVER_REPOSSESS on the object doesn't survive serialization/deserialization. 11:06
11:06 domidumont left
nine jnthn: this causes references to CompUnit::Repository::Staging to end up in the installed Inline::Perl5::Parent when they shouldn't. That's why we end up with missing dependencies when loading Inline::Perl5 from an RPM package 11:06
References to CompUnit::Repository::Staging's SC to be precise 11:07
jnthn nine: Well, it's enough in the sense that it avoids the repossessions it was aimed to eliminate, but yes, I can see that it'd not be enough for avoiding the cache being serialized in the first place. 11:16
Which is indeed desirable.
Though I kind of wonder how that's happening anyway
Also, if a lexical is the wrong way to hold that cache 11:17
Especially given it's not threadsafe in the light of multiple concurrent evaluations
jnthn wonders if we should hang it off $*W or something 11:18
Or make it a dynamic in TOP or comp_unit, perhaps
That probably means nothing closes over it, so we don't have the issue 11:19
11:22 robertle_ joined 11:23 p6bannerbot sets mode: +v robertle_
nine I'm gonna give that a try and see how it affects performance. Putting it into an attribute on STD costs ~ 10s in settings compilation 11:23
jnthn Attributes in a curosr are per cursor 11:27
So that won't help at all
11:31 domidumont joined 11:32 p6bannerbot sets mode: +v domidumont 12:35 Ven`` joined 12:36 p6bannerbot sets mode: +v Ven`` 12:42 domidumont left 12:53 MasterDuke joined, p6bannerbot sets mode: +v MasterDuke 12:54 MasterDuke left, MasterDuke joined, herbert.freenode.net sets mode: +v MasterDuke, p6bannerbot sets mode: +v MasterDuke 12:57 domidumont joined, p6bannerbot sets mode: +v domidumont
MasterDuke brrt: is there any reason (eq|le|lt|ge|gt)_n templates shouldn't just be the same as the *_i variants? 13:10
13:13 brrt left
MasterDuke or do they and coerce_(in|ni) need that floating point support you've been working on? 13:14
13:15 zakharyas joined 13:16 p6bannerbot sets mode: +v zakharyas 14:01 Ven`` left 14:09 brrt joined 14:10 p6bannerbot sets mode: +v brrt 14:18 Ven`` joined 14:19 p6bannerbot sets mode: +v Ven`` 15:00 domidumont left
lizmat And another Perl 6 Weekly hits the Net: p6weekly.wordpress.com/2019/01/14/...it-spring/ 15:08
15:09 domidumont joined 15:10 p6bannerbot sets mode: +v domidumont
brrt lizmat++ 15:11
MasterDuke brrt: btw, did you catch my question earlier? 15:19
brrt probably not 15:29
nine MasterDuke: I'm quite sure at least coerce_(in|ni) will need float support 15:31
Really the same for (eq|le|lt|ge|gt)_n 15:32
15:35 Ven`` left
MasterDuke nine: i added (eq|le|lt|ge|gt)_n as copies of *_i and nothing crashed (unlike my attempts at coerce_(in|ni)), but i haven't run a spectest yet 15:40
brrt MasterDuke: what was your question? 15:50
MasterDuke is there any reason (eq|le|lt|ge|gt)_n templates shouldn't just be the same as the *_i variants? 15:51
or do they and coerce_(in|ni) need that floating point support you've been working on?
brrt ehm.....
that is a good question....
nine MasterDuke: have you tested the semantics? 16:00
brrt so I don't know if you did so wittingly, but I've been looking at generic/polymorphic opcodes in the expr JIT
the tl;dr - if you do that *today*, it totally will not work 16:01
16:05 brrt left
MasterDuke brrt: fwiw, only two spectest fails, t/spec/S32-io/io-path-extension.t and t/spec/S05-metasyntax/regex.t 16:10
16:22 brrt joined 16:23 p6bannerbot sets mode: +v brrt
brrt MasterDuke: so semantically, a (lt num num) is very different from (lt int int) 16:24
in the current implementation, you'd only compile the latter, not the former
in the jit-expr-float branch, you'd compile the first, but it doesn't work because the tiler doesn't think a 'num' is a value that warrants a register
(and that's true because I'm still figuring out how to get a correct, simple implementation of the idea of 'register class' 16:25
arguably, the register class is the full set of registers that may be allocated for a value 16:28
hmm, that gives me an idea
16:30 domidumont left
brrt okay, so, if the rule of genericity is this: 16:31
- an operand that is generic on its input can be generic on its output
- if an operator has two generic operands, they must be equal
- no operator can be monomorphic on input and polymorphic on output 16:32
then. the whole group of comparison and arithmetic operators can legally be generic
MasterDuke that sounds nice
brrt it is pretty nice :-) 16:42
17:02 brrt left
nine jnthn: hanging the cache off $*W fixes my issue and does well WRT performance :) 17:06
17:07 domidumont joined, zakharyas left 17:08 p6bannerbot sets mode: +v domidumont 17:16 patrickb joined 17:17 p6bannerbot sets mode: +v patrickb 18:01 robertle_ left, AlexDaniel left 18:45 AlexDaniel joined, p6bannerbot sets mode: +v AlexDaniel 18:46 ChanServ sets mode: +o AlexDaniel, AlexDaniel sets mode: -m , ChanServ sets mode: -o AlexDaniel 19:22 brrt joined, p6bannerbot sets mode: +v brrt 19:46 domidumont left
jnthn nine: Cool :) 19:58
20:01 patrickb left
jnthn D'oh, water pipe just down the road burst... 20:01
brrt oops
lizmat jnthn: do you agree that something like "my %h is Set[Int]" should just work ? 20:02
nwc10 jnthn: impending tea crisis? 20:04
jnthn nwc10: Yeah but I can drink beer instead :) 20:07
lizmat: Um...maybe but there's a syntactic curiosity there.
lizmat ah? 20:08
jnthn We parse a circumfix after the name
lizmat right
jnthn I can't quite remember how we pass those off to the trait_mod
lizmat well, I'm looking at that code now
well, trying to make sense of it :-)
jnthn But I think if Set is a type then you'll get it as an extra argument and then call call .^parameterize(|@stuff) 20:09
And then it can work
nwc10 jnthn: beer fridge for the win!
lizmat jnthn: *that* part is already working
it's the syntax "is Set[Int]" that is crashing
jnthn lizmat: Right, so then it is in theory just wiring the [Int] into the call to .^parameterize
lizmat m: my %s is Set[Int]
camelia ===SORRY!=== Error while compiling <tmp>
Can't use unknown trait 'is ' in a variable declaration.
at <tmp>:1
------> my %s is Set[Int]⏏<EOL>
expecting any of:
TypeObject
default
dynamic
lizmat huh? 20:10
jnthn Right, I bet you need an extra multi candidate receiving a third rgument
lizmat ah... hmmm...
jnthn multi trait_mod:<is>(Variable:D $v, Mu:U $type, @params) { } or so
lizmat ack... will check
20:30 brrt left 20:59 brrt joined 21:00 p6bannerbot sets mode: +v brrt 21:04 d4l3k_ joined
brrt anyone here has plans to go to FOSDEM this year? 21:05
21:05 p6bannerbot sets mode: +v d4l3k_
lizmat woolfy and /me will be there at the Perl booth 21:07
brrt cool :-)
21:11 wictory[m] left, d4l3k_ is now known as dalek 21:13 wictory[m] joined, p6bannerbot sets mode: +v wictory[m]
brrt brrt-to-the-future.blogspot.com/20...s-and.html 21:34
for whom it may concern, or interest 21:35
21:42 brrt left
lizmat .tell jnthn I created the candidate to handle "my %s is Set[Int]", but I have **no** clue as to how to get the parameterized set into position 22:45
yoleaux lizmat: I'll pass your message to jnthn.
lizmat gives up for now 22:50
23:27 Geth joined 23:28 p6bannerbot sets mode: +v Geth