»ö« | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, alpha:, pugs:, std:, or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by moritz_ on 25 June 2010.
20:50 ilogger2 joined 20:53 Cyrus joined
sorear rakudo: my @x; say @x[*-1] 21:01
p6eval rakudo 037f68: ( no output )
sorear rakudo: my @x; sub foo($k) { say $k }; foo @x[*-1]
p6eval rakudo 037f68: ( no output )
sorear in Perl 5, the latter version dies, while the former DTRTs 21:02
:/
21:15 whiteknight joined
mj41 Parrot vs. JVM by allison video.google.de/videoplay?docid=290...749292774# 21:15
21:17 fod joined
sorear whiteknight: I see I wasn't *entirely* crazy when I went all Chicken Little on continuation/inferior runloop interactions those months ago... 21:18
21:19 tylercurtis joined
whiteknight sorear: it's always been a problem, and likely will be for a long time coming 21:20
this certainly isn't my first run-in with it
tadzik mj41: are the slides somewhere around? 21:23
mj41 tadzik: wiki.jvmlangsummit.com/pdf/38_Randal_parrot.pdf 21:24
tadzik: also try to search perl6.cz/wiki/Perl_6_and_Parrot_lin...ot.2C_Pugs 21:25
tadzik mj41: thanks 21:26
21:29 drbean joined
pmichaud good afternoon, #perl6 21:30
diakopter wth is his obsession with [multiple] trampolines?
I know that mono uses at least two 21:31
pmichaud sorry I missed #phasers -- was busy with $otherstuff
sorear Hello pmichaud
diakopter: who? 21:32
diakopter "chromatic's comments on PerlMonks" you asked for
sorear ah 21:33
diakopter "Any runtime for Perl 6 is going to end up looking a lot like Parrot." -- his entire posting reads a lot better if this statement is amended to "Any runtime for Perl 6 is going to end up looking a lot like an attempt at a Perl 6 implementation."
jnthn pmichaud: No worries. :-)
pmichaud I guess I should comment on the perlmonks thread. 21:36
diakopter by "support Perl 6" it sounds like he means "support all of Perl 6's control flow and memory management structures natively", which shows merely that he wants certain parts of the implementation at the same level as the GC/JIT. 21:37
21:39 chromatic joined, masak joined
masak ahoy! 21:39
phenny masak: 19:32Z <sorear> tell masak yes, protopad = static lexpad. static lexpad is probably more correct now since I've eliminated all prototype aspects of the static pad.
jnthn yayitsmasak! 21:40
masak I missed tonight's #phasers. ごめん。
chromatic Okay, anyone who wants to psychoanalyze me can do it while I'm here.
pmichaud masak: I missed it also. :-)
masak I will make up for it in a completely non-satisfactory way by reading its logs.
jnthn masak: Not loads happened. You did miss your chance to say "omg finished my gsoc proj!" :-)
masak pmichaud: yes, but your missing it was probably honourable, whereas mine was not.
jnthn: perhaps I get to say that in all other possible circumstances instead. :P 21:41
21:41 PZt joined
jnthn masak: Do we want to know what dishonorable thing you were up to? :-) 21:41
masak jnthn: I was indulging in an impromptu dinner. 21:42
I... got a bit carried away...
jnthn Inpromptu dinner causes inpromptness.
;-)
diakopter chromatic: it seems I could do it while you weren't here, too 21:44
chromatic My preference is while I'm here. 21:45
masak chromatic: you should be here more often.
[particle] how does that make you feel? 21:46
masak [particle]++ # the only one who gets it 21:47
TimToady I prefer to psychoanalyze parrots. 21:49
[particle] tell me more about parrots.
chromatic As long as those psychoanalyzed parrots get bugs filed on them, great!
masak chromatic: according to @chromatic_x on Twitter, you're a grump today. 21:50
chromatic Well sure, but I'm happy to explain what I mean by "writing trampolines for the rest of your life". 21:51
sorear What definition of trampoline are you using? 21:54
chromatic The rough "My platform's native calling conventions don't support all of the operations I need to do, so I need to do something clever in them so I don't recurse forever and still support the non-linear control flow I need." 21:55
diakopter chromatic: I agree with your point (that a Perl 6 runtime will look a lot like Parrot). But I claim it will be built on [not part of] something that has a very robust (thousands of productive hours put into it) GC and a very robust JIT. I believe that solely because of the resources [un]available to parrot. 21:56
but of course I'm not *complaining* about that lack of resources. ;) 21:57
chromatic You pick your poison though.
Build on an existing platform which provides a GC and a JIT, and you have to build the rest of your Parrot workalike.
You may or may not be able to tell that GC and that JIT how Perl 6 works. 21:58
You may or may not be able to ask for platform changes to smooth out any impedence mismatches between it and Parrot.
diakopter yeah. that's the poison.
pmichaud rakudo and nqp's perspective is that we're hedging our bets on both solutions, fwiw. 21:59
s/solutions/paths/
sorear I fail to see the distinction here
PaFo has ... exactly how much ... chance of getting a change approved to ISO C or the Pentium ISA?
chromatic As much as anyone. 22:00
masak sorear: why would it need that?
chromatic PaFo also has the same chance of getting a change approved to the Mars mission.
TimToady you're planning to host parrot using the Mars mission? Cool!!! 22:01
pmichaud lol 22:02
sorear masak: chromatic appears to be arguing against rakudo -> (parrotoid) -> CLR on the basis having less control than rakudo -> (parrotoid) -> C89
masak sorear: ah.
chromatic I'm not arguing *against* anything.
diakopter chromatic: I'm quite certain that a parrotoid -> CLR will be able "... tell that GC and that JIT how Perl 6 works." CLR has WeakReferences and quite a lot of control over the GC, actually, and JIT control is "solved" in my C# sprixel runtime, from which niecza spawned, sort of. 22:05
and that's ignoring the strong possibility of distributing a custom mono 22:06
chromatic Are you able to have precise GC?
sorear (I should point out that I'm only avoidng Parrot for short-term performance reasons, since niecza is really just intended as a better viv. Once lorito lands there will almost certianly be a port to Parrot) 22:07
pmichaud fwiw, I'm not sure what this discussion is about.
(not that I need to, but I have trouble seeing a coherent thread)
masak chromatic: while on the topic of GC, I've never heard anyone explain how the DESTROY submethod would work in Perl 6 on top of Parrot. maybe you know?
diakopter pmichaud: I think it was about www.perlmonks.org/?node_id=855567
pmichaud diakopter: sure, I saw that thread.
diakopter that's what I think it was about 22:08
chromatic masak, are you asking about timely destruction?
pmichaud diakopter: but perlmonks seems to be more along the lines of "Rakudo should focus on finishing what it has instead of looking at other backends."
and I disagree.
sorear People have an expectation that { my $x = open "foo" } should close foo immediately
I think this is a P5ism and should die
diakopter pmichaud: I meant that url exactly.
that post.
pmichaud sorear: it's already been declared dead, at least on #perl6 22:09
masak chromatic: no, I'm asking if there's some decision, anywhere, about how the plumbing between the GC and the DESTROY submethod will actually work.
chromatic I still don't understand that question then, masak.
sorear closing files should be done with an explicit framing construct, like C# and Java have now and Scheme has had since forever
jnthn chromatic: I guess it partly boils down to, "is the destroy v-table method in object overridable"?
Or more ot the point
What would be the consequences of doing so? 22:10
masak chromatic: maybe I'm phrasing it badly. all I'm seeing in the spec is a hand-wavey "DESTROY will get called on destruction". that's not enough for an implementation.
jnthn I don't think it's an especially big deal though.
chromatic I've overridden it before. As far as I know, it's still overridable.
jnthn OK
We may be able to hang it off that then.
masak actually, it's probably DESTROYALL that would be called by the GC.
s/probably // 22:11
tylercurtis jnthn: trac.parrot.org/parrot/browser/trun...t.pmc#L289
chromatic Given automatic allocation and deallocation of PMC attributes, you're not leaking anything then either.
22:11 pmichaud_ joined
diakopter chromatic: mono's is not precise, and neither is .Net's 22:11
pmichaud_ *sigh* feather connection fail
jnthn tylercurtis: hmm
pmichaud_ diakopter: I agree with chromatic's bottom point on that post (more)
"I suppose the question is whether another runtime can create enough trampolines to prop up the as-yet-unported pudding layer sooner than we can fix those bugs in Parrot." 22:12
Rakudo and NQP are taking the approach that we're willing to explore both paths.
chromatic I suppose my point on the PerlMonks thread, phrased badly and nearly implicit, is that "Supporting additional backends from PCT doesn't necessarily take away from the goal of a performant, spec-compliant implementation of Perl 6 with Rakudo but it's definitely not a quick way to get a performant, spec-compliant Rakudo."
I think the desire to support multiple backends was one of the two things that killed Pugs.
pmichaud_ chromatic: I agree, but I think Pugs had different motivations for multiple backends 22:13
chromatic Yes and no.
22:13 hugme left
diakopter heh 22:13
chromatic One of those desires was -Ofun for sure, but Pugs had unusable performance.
TimToady I don't think multiple backends killed pugs *at all*
masak oh noes, hugme quit?! :(
pmichaud_ I don't think unusable performance was what killed bugs
*pugs
I think it was an unmaintainable core codebase
chromatic I stopped using Pugs when the spec tests took 8 hours to run.
22:14 PerlJam left
chromatic I don't mind cleaning up unmaintainable code. 22:14
See also IMCC.
TimToady patches welcome
sorear I started using Rakudo when 'make' took 12 hours.
masak the decrease in bus number killed Pugs.
chromatic I seem to recall fixing that, too.
pmichaud_ chromatic: the point is, that nobody has stepped up to maintain pugs
sorear yes. chromatic++
pmichaud_ 'make' has never taken 12 hours on my system, fwiw. it's never taken more than 1.
chromatic It's too simplistic to say "No one could maintain Pugs." 22:15
diakopter chromatic: oops, I'm wrong; the just-released major release of Mono (2.8) does have a precise one.
chromatic No one could maintain Pugs for at least one reason.
pmichaud_ I didn't say "no one could maintain pugs". I'm saying "no one has"
masak chromatic: "No-one has wanted to maintain Pugs."
pmichaud_ and the reason it's not maintained has little to do with multiple-backend-ness
chromatic Fair point, but I'm not sure it changes my argument.
masak or what pmichaud_ said.
chromatic diakopter, are you able to give the GC hints about object layouts for precision?
No one has maintained Pugs for at least one reason.
diakopter chromatic: sigh; another correction; 2.8 isn't released yet 22:16
pmichaud_ one thing we do know that is different between pugs and rakudo is that rakudo's parser is accessible to more people
chromatic That's a huge advantage for Rakudo, yes.
pmichaud_ and I've maintained that parsing is at the core of making a successful perl 6 implementation.
chromatic Being able to write in NQP and Perl 6 is another advantage.
sorear chromatic: the CLR knows object layouts (it's a lot like the JVM in how it handles this)
pmichaud_ that's where pugs ran into difficulty -- it was hard to grok the parser and translation unless you were a strong lambdacamel 22:17
TimToady the chief problem with pugs is that the code got too smart for anyone who isn't brilliant to understand
much of the time in #perl6 back then was explaining what snippets of Haskell are really doing
masak or it was too smart from the beginning.
chromatic I recall that, as you recall.
Pugs never had a strong priority of improving its bus number. 22:18
TimToady it did, but Haskell didn't. :)
pmichaud_ returning to my earlier comment -- rakudo and nqp are basically entering a phase where we're going to see if parrot improves faster than our ability to target another vm 22:19
sorear (am I the only one who thinks Juerd ought not to IRC from feather?)
masak jnthn++ # "The hottest footwear!"
jnthn: that's your best pun in a long time!
chromatic Maybe I'm wrong, but I've always thought that the effort spent on supporting multiple backends for Pugs took away from making Pugs more maintainable.
pmichaud_ and it's not mutually exclusive -- we fully expect that what jnthn learns from implementing a new object metamodel in nqp will get ported back into Parrot 22:20
jnthn masak: Wow, one you like. :-)
masak jnthn: yeah, almost all the other ones were awful :P
jnthn chromatic: The way this is looking at the moment is that we'll end up with _more_ written in NQP.
chromatic: Which means more hackable.
(And more portable.)
chromatic Unless it's a pudding layer.
jnthn And also fewer primitives that need to be made fast. 22:21
TimToady Perl 6 is pudding. Yum!
diakopter mmm butterfly pudding
pmichaud_ chromatic: (I'm speaking for jnthn here a bit) I think that neither jnthn nor I have a lot of confidence in our ability to effect changes in Parrot except by first prototyping them outside of Parrot.
(jnthn please clarify if I'm mis-stating your feelings on this) 22:22
jnthn It's not a mis-statement, just not a full one. I also believe it's _easier_ to prototype at least the current set of stuff I'm doing outside of Parrot. 22:23
chromatic Use cases and design constraints definitely help me make and suggest changes to Parrot.
pmichaud_ chromatic: agreed, and so we're looking to provide them.
jnthn But yes, it's true. In the prototype I'm working on, I could just throw in a "static lexpad" concept and hack up an auto-close that uses it and move on. It took me 10 minutes. Now I get to see how it works and how useful it is. 22:24
chromatic I support that fully, but in my mind that's orthogonal to supporting multiple backends.
TimToady one way to view these parrot attempts at high-level features such as multimethods is that they are useful prototypes that should expect to be thrown away
chromatic That's how I view them.
jnthn TimToady: Right. They have been _enormously_ useful in getting us started. 22:25
pmichaud_ ...except that Parrot has had trouble with the "expect to be thrown away" part (e.g., deprecation policy)
TimToady that's getting better, I think
pmichaud_ sure, I agree
chromatic I like to think our current deprecation policy has improved a lot.
22:25 fod left 22:26 fod joined
pmichaud_ but we still have plenty of cases where core issues in Parrot haven't been addressed. NQP can (1) block, (2) try to improve parrot, and (3) explore other ways of solving the problem. 22:26
multiple backends falls into 3
chromatic My preference is 2, 1, 3. 22:27
pmichaud_ well, that makes sense. I've had little success with 2.
TimToady 3 also feeds back into knowing how better to express what we want from 2
chromatic We'll see.
TimToady We've already seen. :) 22:28
sorear Do you have a stand on non-Rakudo implementations not using Parrot? 22:29
chromatic Does it matter? I'm not in charge of how other people spend their time. 22:30
pmichaud_ beyond the points illustrated above, the other reason for targeting other backends is that, as was pointed out to me last year, there's one major scripting language that doesn't run on .Net
chromatic Ruby?
pmichaud_ ;-)
okay, maybe two. but the point is, I'd like for Rakudo to mean more than "Perl 6 on Parrot" 22:31
I'd like it to be robust enough to be shared on multiple platforms.
sorear FWIW Niecza is stealing bits and pieces of Rakudo all over the place
both design and actual code
diakopter Microsoft contracted ActiveState to build ActivePerl.Net, and they did for a while in 1999-2000, but it was abandoned.
pmichaud_ Allison also made a similar comment at yapc::eu -- that she felt that it was important that we target multiple backends so that we can show other languages a path by which they can ultimately target Parrot. 22:32
perigrin ActivePerl.NET wasn't Perl on the CLR
diakopter sorry, there was one that was Perl on the CLR
perigrin but perl embedded into the CLR with a bridge
TimToady yes, just a bridge
diakopter I found the one that was a Perl implementation, not the bridge
sorear Is "Perl on the CLR" allowed to use unsafe blocks 22:33
diakopter I say yes.
TimToady as long as they're declared unsafe :)
sorear rewriting the p5vm without pointer arithmetic sounds like "fun"
chromatic I suppose it's two things. 22:34
sorear and by fun I mean 20+ man-years
TimToady oh wait, you weren't asking my permission...
chromatic 1) I have a concern that supporting multiple backends will provide some distraction from making a spec-complete Rakudo on any backend. I know developers aren't completely fungible, but there is a pudding layer.
2) I want that pudding layer for Rakudo on Parrot to move as much into Parrot as possible.
masak Yapsi is also heavily inspired by Rakudo.
pmichaud_ We want #2 also. 22:35
TimToady I want the pudding layer for Rakudo to move as much as possible into Perl 6. The only way we can agree is to reimplement large chunks of Parrot in Perl 6.
which is a disavowed goal of Parrot. :) 22:36
jnthn The pudding layer should be lagom. :-)
masak :)
pmichaud_ and yes... Rakudo has experienced the pushback that TimToady++ mentions quite heavily.
It's much less so in recent months... but that may also be because we've stopped pushin. 22:37
*pushing.
chromatic I don't understand any of that. 22:38
TimToady you really shouldn't give us straight lines like that...
diakopter as in... so obtuse... 22:39
diakopter just startled all my cow-orkers with a guffaw 22:40
chromatic Look, I'm trying to communicate something here I find important.
pmichaud_ I recognize that. 22:41
I'm not sure what part isn't understood.
chromatic What is that pushback and what does it mean?
I think also "Why is there pushback?" but that question may depend on my previous one.
masak wants to go to bed but finds the discussion fascinating 22:42
pmichaud_ when we identify things that Perl 6 needs from Parrot, we have historically gotten "Perl shouldn't be dictating what Parrot provides"
or, even if we identify something really important, it takes months or years for progress to be made on it
chromatic I can think of several examples.
pmichaud_ I think you mentioned PCC earlier -- that's probably a very good example, and spot-on for this discussion. 22:43
chromatic I have spent a lot of effort to improve that in 2010.
pmichaud_ the PCC that parrot put together wasn't sufficient for Rakudo's needs, and that was explicitly identified at the time it was being done 22:44
chromatic If I have to spend more effort to do so, I will.
pmichaud_ i.e., it was recognized at the time it was being done that we'd ultimately end up writing our own dispatcher
jnthn (binder in this case, I think) 22:45
pmichaud_ right, binder
thanks.
jnthn (though we've needed our own dispatcher too)
22:46 awwaiid joined
pmichaud_ By no means do I wish to discount or downplay the improvements that Parrot has made over the past year. They've been terrific. 22:46
jnthn I agree. Parrot _has_ improved and it has helped.
chromatic That's deliberate. 22:47
22:47 masak left
pmichaud_ and we recognize that also. If we're not saying it enough, I'll say it more frequently and publicly. :) 22:47
but there are also some areas where the pace of change feels.... glacial.
chromatic Then we will prioritize them. 22:48
pmichaud_ we've prioritized them a bit also
thus, the #1 item I identified at yapc::na we're already working on -- object metamodel improvements
it is fully expected that we'll do a new metamodel in Parrot. 22:49
chromatic Sure, and I understand that sometimes Rakudo needs things before Parrot can provide them appropriately.
It has to go both ways, though.
pmichaud_ and we fully expect that someday Parrot will completely switch over to our new model.
jnthn Do we? :-)
pmichaud_ jnthn: I do.
chromatic I do.
jnthn I don't quite have that much hubris. ;-)
Oh, OK
:-)
\o/ 22:50
jnthn polishes it extra shinily
pmichaud_ but at the same time we may be able to make some progress on a multiple-backend strategy, so we're doing that too.
chromatic I expect to have my own input into it with regard to what else Parrot needs, but yes.
pmichaud_ the other items identified at yapc::na.... I'm not so certain how they'll get handled. 22:52
jnthn chromatic: That's fine, so long as we end up with a superset rather than disjoint sets. :-) Given I'm aiming very a very small "core" and then NQP gets everything built atop of that, a superset could still be pretty small, though.
s:1st/very/for/
pmichaud_ where did the yapc::na list end up, anyway? I thought it was on the parrot wiki but I don't see it now. 22:53
chromatic Someone took a picture of it.
pmichaud_ I thought it was also transcribed somewhere.
pmichaud_ looks.
chromatic I think that small core, fat NQP works against Parrot's interests in some ways. 22:54
pmichaud_ in some sense "small core" is really "Lorito"
chromatic If we implement most of the rest of Parrot in terms of NQP perhaps. 22:55
TimToady or QP
pmichaud_ assuming one of parrot's goals continues to be multiple languages running on top of it, what do we expect those languages to be written in? 22:57
(honest question, not rhetorical)
TimToady whatever the implementors choose to use 22:58
chromatic NQP seems the most likely candidate.
TimToady in the short term
chromatic Right, in the short term.
pmichaud_ I agree that may be only a short-term answer.... but I'm fairly sure they won't be doing it in PIR or the standard opcode set.
so Parrot has to provide something a bit higher-level than what it has now, if NQP is excluded. 22:59
either way, I think we end up with small core, fatness in an intermediate layer
chromatic I see no technical reason to exclude NQP.
pmichaud_ right. I'm just saying that "fat NQP works against Parrot's interests" would seem to apply to almost any other pudding layer 23:00
so then it's a question of "what are Parrot's interests...?"
chromatic I interpreted it as "Pudding written in NQP" not as "Pudding available as part of NQP".
tylercurtis Why not both?
chromatic The former doesn't necessarily imply the latter, but the latter could imply the former. 23:01
pmichaud_ even as "Pudding written in NQP", that sounds a bit like Lorito. Small core, higher-level stuff written in a higher-level abstraction.
perhaps the wrong abstraction, but...
chromatic And I'm fine with that.
I believe it's in Parrot's interests to take many of the Rakudo workarounds, polish them, generalize them, perhaps make them extensible for some Rakudo-specific customizations, but ultimately adopt and absorb them. 23:02
pmichaud_ I agree. 23:03
chromatic Parrot can provide most of the pudding. You can put chocolate chips and marshmallows in it.
TimToady that strikes me as premature optimization, usually
chromatic What does, TimToady?
pmichaud_ I'd really like for Parrot to provide more of the pudding. But so far things haven't moved in that direction very quickly. 23:04
TimToady you want most of what you do to be in high level language, and then take bits into core
not assume it's almost all going into core
fsdo core
tylercurtis TimToady: I think a large part of the purpose of Lorito is so that much of Parrot's "core" can be written in high level languages.
chromatic I'm talking of things like dispatch and binding, not necessarily the setting. 23:05
TimToady sure
pmichaud_ we're talking of dispatch and binding in NQP also
iiuc what jnthn++ is working on
23:05 awwaiid left
chromatic My *preference* for supporting multiple backends is to port Lorito's M0, not NQP. 23:06
pmichaud_ I don't see a problem with that (more)
TimToady my preference is that they be the same :)
pmichaud_ NQP would have no issue with targeting a Lorito M0 that can then go to multiple backends
chromatic Which would you like to be the same, TimToady? 23:07
pmichaud_ but I think that we'd need some exploration about how to get our higher-level concepts onto those other backends, so that we know what M0 would need to look like
TimToady Lorito's and NQP's MO
jnthn chromatic: Thus why NQP's class meta-object will be written in NQP.
pmichaud_ ...and that's exactly the avenue that jnthn++ is exploring.
jnthn chromatic: And thus I won't have to port it. :-)
Sounds like if we can agree on what comes beneath that, we have a chance of converging. :-) 23:08
pmichaud_ the url I have for the lorito bof notes is thenceforward.net/parrot/yapc_bof_20100621.txt but it seems to be gone/missing now.
tylercurtis webcache.googleusercontent.com/sear...&gl=us 23:10
chromatic Instead of emitting NQP code for another backend, you're okay with emitting Lorito-compatible code?
pmichaud_ i'm not sure about "emitting NQP code" -- we don't do that now. afaik.
right now we have an emitter for PIR
jnthn is working on a .net emitter
23:11 lestrrat is now known as lest_away
pmichaud_ I don't see any reason why we'd have difficulty with a Lorito emitter 23:11
jnthn chromatic: Oh, I was talking about the object-y stuff, not the code generation.
But the approach is the take PAST and then emit different things from that.
pmichaud_ ....and write the emitters in NQP, ultimately.
in that sense, it's similar to what PIRATE is doing.
23:12 drbean left
jnthn pmichaud_: Already am. 23:12
pmichaud_ (iiuc what PIRATE is doing)
chromatic Yes, that's the intent of PIRATE
jnthn pmichaud_: github.com/jnthn/6model/blob/master...ompiler.pm
pmichaud_ if Lorito's M0 ends up handling the multiple backend aspects for us, we'd happily target it. 23:13
23:13 jhuni joined
pmichaud_ but something is going to need to describe the metamodel, and it makes sense for us to write that description in p6 or nqp 23:13
chromatic Right.
pmichaud_ that's what we're doing.
well, jnthn++ thus far.
chromatic Yes, portability to other backends is a possibility of Lorito. I'd like to see it run on Dalvik, for example. 23:14
pmichaud_ I would view NQP and Rakudo's work on multiple backends as being the path by which Lorito learns what is needed for it to target other backends, then.
chromatic I don't see that as helpful to Lorito.
It's not harmful, but I don't think it's necessary. 23:15
pmichaud_ I do. I don't think the people involved in creating Lorito have enough understanding of Perl 6's needs.
chromatic In what sense?
pmichaud_ I mean as a team dynamic; certainly individuals (yourself) are there. 23:16
but when we say we need serialization, the discussion tends towards proving that parrot already has what we need instead of seeing that the current model is tragically flawed.
or when we need better exception handling and subroutine leave semantics... there's just not an understanding of the issues that we're trying to express. (more) 23:17
or, when I give Perl 6 code to try to illustrate it, the answer often comes back with "that's something Perl 6 will have to layer on top of parrot, not something parrot should natively provide"
sorear there is also an attitude that providing for Perl 6 is politically untenable because it undermines the notion of Parrot as a cross-language VM 23:18
chromatic Then stop perpetuating that myth, sorear. 23:19
sorear It perpetuates fine in #parrot without me
I only ever talk about it here
chromatic I disagree, and filing Parrot bugs in here is not effective. 23:20
pmichaud_ but more to my original point -- how often do discussions of Lorito also include "and we need it to go to other vm backends?"
chromatic Not often, mostly because that's not the primary goal of Lorito. It's a benefit and it's something I want to make possible, but it's not the primary goal. 23:21
pmichaud_ I don't recall seeing anything in the lorito discussion documents that mention .net or jvm or the like. Maybe I'm just missing them.
if that's a goal, then we'll need some experience to feed into the design.
chromatic Maybe I'm horribly naive, but I believe that most of porting Lorito to another backend is mapping the handful of M0 ops to another VM. 23:22
pmichaud_ Do we know what M0 ops are needed to efficiently implement a p6-like object metamodel?
chromatic I believe the same M0 ops needed to implement just about anything else we support right now. 23:23
pmichaud_ that's the disconnect (more) 23:24
what "parrot supports right now" is not really what Rakudo needs.
or, it's a good first approximation, but we need to refine it a lot more
in some sense that statement feels like it might repeat the error that Parrot originally made, when it sought to reimplement the Perl 5 vm 23:25
because that vm wasn't really what is needed for Perl 6
chromatic Let me rephrase then.
pmichaud_ okay, please do.
I know my statements probably read much harsher than I intend. 23:26
chromatic If we can port Parrot as it exists now to M0, M0 is sufficient to implement an efficient metamodel in NQP.
pmichaud_ I'm not so sure about that.
diakopter (what's M0)
chromatic M0 is a series of very low level ops, as if you were writing a virtual machine for a language like C without hewing to its memory model or calling conventions. 23:27
s/series/set/
pmichaud_ I still remain concerned that Parrot focuses far too much on opcodes when what we really need is methods
chromatic Me too. 23:28
pmichaud_ and since the discussions I've seen of Lorito are focused on making opcodes more efficient, I worry that it's gotten things backwards.
chromatic I want to make vtables go away in favor of multimethods in Lorito.
Better?
pmichaud_ Definitely. 23:29
TimToady is not so sure...
chromatic Why is that?
pmichaud_ TimToady: I still think we'll have the notion of vtable-like things that are hidden from the normal method call interface, but they still end up acting very method-like. 23:30
TimToady it just feels like interpreter-on-top-of-interpreter to me 23:31
23:31 Italian_Plumber joined
TimToady and FP is fundamentally built on lambdas, not multimethods 23:31
pmichaud_ that's a good notion/point to remember.
chromatic Some FP has to perform pattern matching for dispatch though. 23:32
pmichaud_ anyway, I'll be called to dinner soon (more)
TimToady Yes, "some", not "all"
pmichaud_ I'll note that while others have focused on the fact that NQP is looking at other backends, it is not at all the core team's primary focus at the moment, except maybe for jnthn++ 23:33
i.e., what gets the most publicity is not necessarily where the effort actually ends up
chromatic Like I said, it's none of my business how other people spend their time.
I just want to make sure that Parrot supports Rakudo as best it can.
pmichaud_ +1 to that :)
chromatic If that means pleading and cajoling to pull parts of proofs of concept and workarounds into Parrot, so be it. 23:34
pmichaud_ Perhaps kid51 can re-produce the notes he had posted from the yapc::na meeting
[particle] i think they're on the parrot wiki, but i can't recall
pmichaud_ [particle]: I couldn't find them there. 23:35
tylercurtis chromatic: Is the Parrot object model intended to be implemented on top of M0 in some manner? If so, I suppose that that means it will probably allow pointer arithmetic? In which case, how do we translate pointer arithmetic to JVM ops?
[particle] harumph
tylercurtis webcache.googleusercontent.com/sear...&gl=us google cache of broken link pmichaud_ mentioned earlier to those notes, I think.
chromatic I don't think we have to support pointer arithmetic; we just have to support numbered slots.
pmichaud_ tylercurtis++ # yes, that looks like it 23:36
my comments from lists.parrot.org/pipermail/parrot-d...03223.html also still apply
#4 has been addressed.
chromatic #1 is in progress, as always. 23:37
pmichaud_ #1a has been worked on
I haven't seen much new from #1b lately
#2 is still a bit of an issue
chromatic I can work on #6 if you want it now. It's fairly easy.
pmichaud_ jnthn++ is working on it 23:38
chromatic Lexicals?
pmichaud_ yes
as well as attributes
and we still have some p6 spec work to be done there
TimToady hides
chromatic Primitive lexicals seems like an easy fix in Parrot. 23:39
jnthn I'm only digging into attributes for the moment.
pmichaud_ sure, but we still need tools to be able to support them
jnthn It's too early for me to say whether Parrot doing #6 will for certain help but I suspect yes.
pmichaud_ and even if you gave us primitive lexicals tomorrow, I doubt we'd do much with them until after jnthn's work lands
chromatic NQP support you mean?
pmichaud_ NQP and PCT, yes.
jnthn (In the long run, not "tomorrow", as Pm said)
Well, medium run
:-) 23:40
chromatic Let me know. I know how to make them work in Parrot.
pmichaud_ right
that's one of the reasons that item was #6 on my list -- it's worth considering but not a huge impact
#2 from the yapc::na list is more important (the general handling of lexpads and contexts in parrot)
chromatic Sure, but a week of work for lexicals is going to land sooner than a month work of lexpand handling. 23:41
jnthn chromatic: What I will say is don't spend time on native type support in the Object PMC. 23:42
chromatic: Well, re-phrased.
Don't spend time on it in the epxectation it'll help Rakudo.
pmichaud_ my feeling is that this is an area where lexpad handling will ultimately be the arbiter of how it needs to work
chromatic Right, that's part of metamodel changes.
jnthn (Think you know that, but don't want to send you down a blind alley.)
pmichaud_ i.e., the week of work for core types in lexicals would ultimately be lost because lexpad handling implies a more radical change anyway 23:43
23:43 mjk joined
pmichaud_ not sure that's the case, but that's my feeling. 23:43
chromatic They have to be able to store and retrieve things that aren't PMCs anyway.
pmichaud_ it feels like one of those fundamental things like list/arrays/iterators in p6, where the smallest change in the fundamentals ends up having radical changes on the entire system
chromatic Adding typed storage is fairly easy.
jnthn I think we may need a model change though. 23:44
pmichaud_ anyway, typed storage might be of some use to NQP at some point, it's very unlikely to help Rakudo anytime soon.
i.e., Rakudo's typed storage is likely to be based on the object metamodel.
and not on Parrot register types.
jnthn For example, the static lexpad and dynamic lexpad probably want to look a lot more alike.
chromatic Including lexicals?
trac.parrot.org/parrot/wiki/PCCPerf...provements 23:45
I want to address how we handle contexts and signatures anyway.
That could include more specific types of Subs, like Closure.
pmichaud_ ...Closure?
chromatic Or at least a specific Sub subclass which knows it has an outer scope. 23:46
outer static scope
jnthn argh, didn't we kill that?
pmichaud_ ah.
well, that's a piece we're definitely missing.
23:46 mjk left
chromatic static scopes? 23:46
pmichaud_ afaik, we don't have a way in Parrot to say "create a Sub of type OtherPMC"
TimToady seems more like you'd want a specific class that *doesn't* know about that, since the default is to have an outer
pmichaud_ and yes, what TimToady said
we have far more subs with outer scopes than subs without. 23:47
subs without outer scopes are quite rare in Perl 6, or NQP.
chromatic I have no preference which is the default, merely that we can distinguish them.
pmichaud_ right now we can distinguish by the existence of an :outer flag :-)
jnthn Isn't that just a pointer-is-not-PMCNULL check today?
TimToady it should be orthogonal to type
jnthn (e.g. the otuer thingy)
pmichaud_ and yes, the inability to have good sub types is a blocker for many parts of NQP and Rakudo. 23:48
chromatic I don't want to perform runtime checks for things we know at compile time.
pmichaud_ we don't always know the outer at compile time.
TimToady huh?
jnthn pmichaud_: We _can_ conceptually though.
pmichaud_ TimToady: artifact of Parrot's compilation model.
yes, conceptually we can.
jnthn pmichaud_: Other things keep us from doing so.
Right. :-) 23:49
pmichaud_ but imcc's linkage is a problem.
jnthn That's the disconnect there.
[particle] shoots imcc 23:50
pmichaud_ anyway, NQP suffers from the Sub PMC type problem today -- it doesn't have a way to compile-time create a Sub of type RegexPMC
(or any subclass of Sub)
[particle] if only bullets stopped zombie compilers
pmichaud_ I'm being called to dinner
chromatic I think that's fixable.
TimToady
.oO("put a bullet through csh's head")
23:51
pmichaud_ chromatic: I think it needs to be fixed as part of a larger serialization fix
although perhaps there's an intermediate step
chromatic :subtype( 'MyCoolSub' )
pmichaud_ chromatic: would that work even if MyCoolSub is a type created during :load :init ? 23:52
i.e., not a core PMC or dynpmc?
chromatic Not sure, but it could be fixed.
pmichaud_ okay. That gets into some nasty parts of imcc, I fear.
and definitely affects freeze/thaw sorts of things, I suspect. 23:53
anyway
chromatic: your concern about multiple-backends diluting effort is noted; let us know if it looks like progress in other areas is stalling.
chromatic Will do. 23:54
pmichaud_ I don't agree that multi-backends was a primary cause for lack of effort on pugs
but I agree it is a danger
chromatic It wasn't the primary cause no.
pmichaud_ personally, I still measure success in terms of how usable rakudo is for the typical programmer
and for me, that's features and speed at this point 23:55
(and correctness)
okay, gone to dinner.
TimToady chow 23:56
sjohnson ciao 23:57
( `ー´)