Welcome to the main channel on the development of MoarVM, a virtual machine for NQP and Rakudo (moarvm.org). This channel is being logged for historical purposes.
Set by lizmat on 24 May 2021.
00:07 reportable6 left, reportable6 joined 00:08 kjp left 00:11 kjp joined 00:24 [Coke] left 00:25 [Coke] left 00:28 [Coke] joined 00:53 [Coke] left, [Coke] joined 01:04 MasterDuke left 02:09 reportable6 left, linkable6 left, bloatable6 left, committable6 left, notable6 left, bisectable6 left, releasable6 left, unicodable6 left, quotable6 left, sourceable6 left, tellable6 left, evalable6 left, shareable6 left, statisfiable6 left, nativecallable6 left, coverable6 left, greppable6 left, benchable6 left, greppable6 joined, bisectable6 joined, frost joined 02:10 unicodable6 joined, benchable6 joined, quotable6 joined, releasable6 joined, statisfiable6 joined, sourceable6 joined, reportable6 joined 02:11 shareable6 joined, committable6 joined, nativecallable6 joined, notable6 joined, evalable6 joined, bloatable6 joined 02:12 linkable6 joined, coverable6 joined, tellable6 joined 02:19 frost left 02:22 frost joined 02:40 Kaiepi left 05:07 bisectable6 left, statisfiable6 left, shareable6 left, unicodable6 left, greppable6 left, bloatable6 left, reportable6 left, benchable6 left, notable6 left, committable6 left, nativecallable6 left, tellable6 left, quotable6 left, releasable6 left, linkable6 left, coverable6 left, sourceable6 left, evalable6 left, committable6 joined 05:08 bloatable6 joined, tellable6 joined, releasable6 joined, evalable6 joined, coverable6 joined, statisfiable6 joined 05:09 shareable6 joined, reportable6 joined, bisectable6 joined, nativecallable6 joined, quotable6 joined, unicodable6 joined 05:10 sourceable6 joined, notable6 joined, greppable6 joined, benchable6 joined, linkable6 joined 05:57 Geth__ joined 05:58 lizmat_ joined 05:59 Geth left 06:00 tailgate left 06:01 lizmat left 06:02 tailgate joined 06:06 reportable6 left 06:09 reportable6 joined
nine japhb: that makes me wonder: how does the old compiler frontend handle nqp ops in the first place? 06:53
Nicholas good *
"lex, yacc, smoke and mirrors" ? :-) 06:54
nine That's not that far off actually :D token term:sym<nqp::op> 06:58
And japhb++ is correct as well. The old frontend emits QAST::Want nodes for those literals. Actually the new one does as well, with just one exception: constant folded (double) quoted strings. So it's an omission rather than a conceptual issue. 07:02
08:54 lizmat_ left, lizmat joined 08:59 Geth__ left 09:00 Geth joined 09:22 frost left 09:29 frost joined 09:42 samcv left, samcv joined 10:13 Altai-man joined 11:57 Kaiepi joined 12:07 reportable6 left 12:08 reportable6 joined
nine A longname is a name + optional colonpairs. My first instinct for the AST representation would be class RakuAST::LongName is RakuAST::Node { has RakuAST::Name $.name; has %.colonpairs; ... }. 12:18
However RakuAST::Type::Simple and other places expect a RakuAST::Name for the name, not such a LongName. This indicates that RakuAST::Name should be an abstract role rather than the class it is now. 12:19
Alternatively RakuAST::Name::Long could be a subclass of RakuAST::Name. Would take care of those type constraints, but makes it somewhat cumbersome to construct (since $<name>.ast already creates a RakuAST::Name) which may be a sign that this isn't the right way either. 12:20
jnthn RakuAST::Name is what goes with LongName 12:22
*longname
It's meant to have colonpairs included too eventually 12:23
I don't think there's any reason to distinguish name vs. longname in the AST level; almost everywhere accepts a longname anyway
So no subclass, just add colonpairs in RakuAST::Name 12:24
nine Ah, that's good to know :)
jnthn For things like TypeName:D and Type(OtherType) I was thinking of RakuAST::Type::Definedness and RakuAST::Type::Coercion, fwiw
(Which would reference other RakuAST::Type nodes) 12:25
nine So "# TODO add colonpairs" is quite accurate then despite its brevity. I.e. get an object from $<name>.ast and then .add-colonpair those colonpairs 12:26
class RakuAST::Type::Coercion is RakuAST::Type is RakuAST::Lookup is already implemented :)
github.com/rakudo/rakudo/commit/27...78d07ccfd6 12:27
jnthn Ah, nice :) 12:31
nine Interesting: the old compiler frontend emits QAST::Op(istype_nd) with Int followed by QAST::Op(isconcrete_nd) for an Int:D param. My current state emits QAST::Op(istype_nd) with Int:D instead, but that still seems to do the right thing 13:58
Any reason to do istype_nd+isconcrete_nd instead?
14:21 frost left
nine sub group-of ( Pair ( Int:D :key($plan), Pair :value(( Str:D :key($desc), :value(&tests))))) # sometimes I wonder if we've taken things too far 14:35
jnthn I think the istype + isconcrete pair are cheaper 14:36
Unless there's already dispatcher handling to do better on definedness types 14:37
But by default it'll call accepts_type method on the meta-object, iirc 14:38
nine # Do type checks. 15:09
# TODO really more involved than this 15:10
Indeed :D
16:13 Kaiepi left 16:15 Kaiepi joined 16:20 Kaiepi left 16:24 Kaiepi joined 16:45 Kaiepi left 17:26 Altai-man left 17:54 Kaiepi joined 18:07 reportable6 left 18:08 reportable6 joined 19:21 MasterDuke joined 20:21 statisfiable6 left, bloatable6 left, releasable6 left, linkable6 left, benchable6 left, shareable6 left, greppable6 left, committable6 left, tellable6 left, quotable6 left, evalable6 left, sourceable6 left, coverable6 left, bisectable6 left, reportable6 left, nativecallable6 left, unicodable6 left, notable6 left 20:22 tellable6 joined, unicodable6 joined, sourceable6 joined, committable6 joined, coverable6 joined, benchable6 joined, quotable6 joined 20:23 notable6 joined, bloatable6 joined, linkable6 joined, greppable6 joined, nativecallable6 joined, statisfiable6 joined, evalable6 joined, shareable6 joined 20:24 reportable6 joined, bisectable6 joined, releasable6 joined 20:50 [Coke] left 22:18 discord-raku-bot left, discord-raku-bot joined 23:13 [Coke] joined 23:16 [Coke] left