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.
Nicholas good *, * 09:33
jnthnwrthngtn o/ 10:18
Nicholas \o
nine I get the impression that my unsigned fixing is going to be the most invasive change I've ever done to rakudo. I've now tought the dispatcher and binder that uint and int are different things. Next up: assign_u 11:16
lizmat nine++ 11:17
lizmat looks forward to putting UInts in the core in places where they should have been, but weren't 11:20
like AT-POS() :-) 11:21
and thereby getting rid of a lot of code checking for <0
jnthnwrthngtn Is UInt becoming a nominal type rather than a subset type? 11:24
lizmat that was my impression ?
nine No, I hope not
lizmat ah :-(
why would that be a bad idea ?
jnthnwrthngtn I'd kinda thought it might
nine I don't think you'd want that, as it'd make mixing UInt and Int in calculations painful
lizmat Uint could be a subclass of Int ? 11:25
*UInt
nine But mostly because I'd hoped that there'd be some of rakudo left unchanged :D
jnthnwrthngtn I don't think subclass makes sense; subclasses are meant to add capabilities, not take them away.
lizmat we don't have to do that right away... but it would make all array accesses much closer to the metal
jnthnwrthngtn Plus likely a bunch of other issues 11:26
lizmat m: dd Hash.^mro # jnthnwrthngtn
camelia (Hash, Map, Cool, Any, Mu)
jnthnwrthngtn Yes? Hash an do more than Map (adds mutability)?
lizmat that's one way to think about it... 11:27
nine I wonder if I'll have to add a new prim spec for uint at some point 11:28
lizmat nine: I don't think you will be able not to :-)
jnthnwrthngtn This stuff raises so many questions, though. 11:30
nine Ok, my simple my uint @a = 1, 2; $_++ for @a golf now works. Of course, probably everything else is broken though
jnthnwrthngtn Like how do you write a UInt literal.
Nicholas do you need to be able to? 11:31
lizmat 0u42
0i42
Nicholas in that, can you write a bigint literal, that's distinct from a regular int literal?
nine Cannot resolve caller infix:<+>(Int:D, Int:D); none of these signatures match: 11:33
... (Int:D $a, Int:D $b --> Int:D)
jnthnwrthngtn oops
nine I bet the error is misleading and the problem is really that the int candidate no longer matches and there's no uint candidate 11:42
But adding those gives me an ambiguous call. So there's still work to do in dispatch/binder
nine I could live quite well with just half as many ways to specify primitive types... 12:24
Looks like I really am gonna need a new prim spec kind 12:31
And the escalation continues... 12:34
nine There is a MVM_STORAGE_SPEC_BP_UINT64 already (as well as smaller sized ones and sized signed integer variants). But it appears to be pretty much unused. 13:04
nine They are only actually returned by nqp::lexprimspec which has a single user in HLL::Actions 13:08
lizmat m: my uint $a = -42; say $a # possibly allowing for this? 13:12
camelia -42
timo every Int literal is UInt, and prefix:<-> returns an Int from that :P 14:04
nine Ah, maybe I can get by without the new primspec kind after all. A captureposprimunsigned op could do the trick (at least for the current problem) 15:05
Though I have to admit that the new primspec kind would alleviate the need for quite a bit of special casing throughout the code base. I still have this irrational hope of ever getting done however. 15:07
Oh....no, that would not work. You can't ask a primitive type in a register about it's REPR_data... 15:32
We'd need a new MVM_CALLSITE_ARG_TYPE for that (yet another one of those ways to specify types) 15:33
MasterDuke arxiv.org/abs/2109.01950 "Type Stability in Julia: Avoiding Performance Pathologies in JIT Compilation", i didn't read the whole things, but looks like something jnthnwrthngtn might be interested in 21:13
i was experimenting with a fix for the problem of interpolated variables not getting flipped in `<?after $foo>`. if i'm reading things correctly, github.com/Raku/nqp/blob/master/sr...1011-L1045 is the implementation of how the overall regex gets flipped 21:25
i tried adding an `elsif $qast.rxtype eq 'subrule' && $qast.subtype eq 'method' {`, but i haven't figured out a correct implementation yet 21:26
jnthnwrthngtn I suspect only declarative things can really be flipped 21:27
MasterDuke in the --target=ast the "body" of the QAST::Regex in question is a QAST::NodeList
that calls INTERPOLATE
but i haven't been able to add a call to nqp::flip 21:28
another option would be to create an INTERPOLATE_FLIPPED in rakudo (or add a new flag to INTERPOLATE) 21:29
jnthnwrthngtn: so you think putting a non-literal in an <?after> should be disallowed? or just warned?
or should this entire problem just be punted until rakuast and/or an eventual regex implementation re-write? 21:32
jnthnwrthngtn Potentially an INTERPOLATE_FLIPPED would be possible is it's a string interpolation. 21:36
*if it's
MasterDuke *really* doesn't want to have to mess around with INTERPOLATE* (there be dragons), but if that's the best option... 21:39
jnthnwrthngtn We could just decide it's not supported and, in RakuAST, stick a "can-be-in-after" method on all RakuAST::Regex nodes, defaulting to False and overriding it to True for the cases we can handle 21:40
At least that way it's a clear "we don't support this" error
MasterDuke that does seem like a bit of a cop out though, since this is only a problem given the way we've implemented <?after> 21:42
that whole torture-implementor-thing coming to bite us
but you don't think we should try to support something like `<?after <{ "foo" x 3 }> >`? or would that be a string interpolation? (fyi, the ast for that shows a call to INTERPOLATE_ASSERTION 21:46
jnthnwrthngtn Sigh, of all the supid things that could happen, my monitor just failed, with a nice electrical smell :/ 21:58
jnthnwrthngtn ponders going to the office to fetch a spare from there
At least I've the laptop 21:59
MasterDuke has been trying to years to find a new monitor, but hasn't been able to find one with the right set of specs for the right price
jnthnwrthngtn MasterDuke: If somebody wants to implement it, I don't mind. It's a very long way down my own priority list for regex things.
nine With which you still can ssh into that machine with its awesome power 22:00
jnthnwrthngtn I mean, it's nice if it works, but I've so rarely reached for `after`...
nine MasterDuke: ha! Same here
jnthnwrthngtn nine: I can, but laptop is still not so ergonomic for me :/
MasterDuke heh. "wants" may be an overstatement, but it might be something i can do... 22:01
nine jnthnwrthngtn: in truth it's not ergonomic for anyone. At least a monitor is relatively pain free to replace. Once you have a new one that is
jnthnwrthngtn Yeah, I really wanted to work form home tomorrow, and there's trams for another hour, so I'll go collect the spare. bbl 22:02
MasterDuke nine: what are you looking for? i want high ppi, so something like a 5k 27" monitor. however the prices for the good quality ones are still crazy high, and the cheaper ones seem of questionable quality, and both aren't always very linux-compatible (or at least with my mb)
i can't seem to find something in the middle price point at all, regardless of compatibility 22:03
nine Something like a 34" 16:10 or maybe 16:9 high ppi display
MasterDuke it is kind of annoying that almost all the new monitors are 16:9. i much prefer my 16:10, but i want a lot more pixels in roughly the same physical space 22:05
nine I want at least as much vertical space as the 13 (or so) year old 30" monitor I currently use 22:07
ugexe i was recently looking at displays and ended up with P3222QE since i didn't want to pay the price for 5k
nine does look nice 22:08
ugexe it carries power and video over a single usb-c so its also like a laptop dock 22:09
MasterDuke i'm still using my 15.5 year old 24" Dell UltraSharp 2405FPW 22:11
the other problem is i still haven't been able to buy a new video card (because i won't buy one at crazy inflated prices) 22:12
ugexe i joined a discord channel when i wanted to get a ps5 and it only took about a week of watching before i was able to get one through retail 22:23
i remember there was a room for video cards too 22:24
japhb I've got an LG 27" 4K 16:9 that was relatively inexpensive and I've been pretty happy with, and it works fine as a second monitor for my Linux Mint laptop. 22:42
MasterDuke i've gotten into the queue on amd.com a couple times, but the rx 6800 has always been sold out when i get out of the queue 22:43
japhb It sounds like people are looking for 5K and 16:10, but I'll tell ya, the upgrade from my 2K panel was HUGE. TOTALLY worth the mid-range step.
MasterDuke if my monitor died that's probably what i would replace it with (while still looking for a 5k), but i'm still happy enough with this i'll just wait until a really big step 22:49
i'm also tempted by an e-ink monitor as a second screen just for coding 22:50
jnthnwrthngtn yay for trams until midnight :) 23:03
Goodness, it's only now I hae it on my desk at home that I realize this monitor is rather bigger than the one it's replacing
*have
lizmat :-)
jnthnwrthngtn So, the Tika failure I can't repro but it may be a port conflict in testing or something 23:08
The November one is...weird
Among this module's problems are that it has a leftover - from a merge conflict! github.com/viklund/november/blob/m...gs.pm#L116 23:11
jnthnwrthngtn OK, too tired for this already. Will have to wait for another day. 23:21
The failure mode is so odd I wonder if I've really broken this or if it's a mis-bissect