21 Jan 2023
brrt and.. how are you? 19:06
nine Just great :) 19:25
brrt ooc, what's RakuAST? 20:33
nine The new AST for Raku. It's much higher level than QAST and will replace the old grammar and actions. 21:08
22 Jan 2023
timo who wants to check out if in theory starting to validate a frame mentioned in a frame we're currently validating in a separate thread can make stuff faster or is mostly wasted effotr 20:00
i feel like digging out and refreshing the tracery stuff can give a good look at the timeline there
maybe checking how often a frame mentioned in another frame is validated very soon thereafter is a good starting point, then looking if there's a cheap way during validation to see if something is likely to be hit based on previous (or maybe following) instructions, like in order to identify stuff happening in rarely taken error branches 20:03
alternatively, how much would it be worth to have a hand-crafted or at-build-time-measured-and-injected list of frames that we always run through when rakudo starts 20:20
i'm still working off the fact that during 3.37% of the main thread's time for an empty program the MVM_validate_static_frame, though what i remembered was 5%, which is actually in prepare_and_validate_static_frame, haven't looked what the difference is 20:23
prepare_and_verify_static_frame* 20:25
prepare_and_verify_static_frame assumes we hold the CU deserialize frame mutex, which sounds like it needs resolved if we want to validate two things at the same time 20:30
oh, and i'm glad to see brrt again :) 23:03
23 Jan 2023
brrt \o 08:27
timo brrt o/ 09:13
you probably have a better idea than me / already know details about this topic: using lea instructions instead of add; when is it worth it, can the exprjit be easily taught how to apply it just by making a proper tile? can we fuse an a + n * b in the assembly into a lea when we see it without a more complicated optimization pass? 09:16
i even saw something like "5 * n turns into n + 4 * n" 09:25
nine Before adding new features I'd rather like the expr jit to be fixed... It is known to generate racy code and I simply gave up on trying to fix that. 10:18
timo oh oops 12:04
what does it race with? like, when you try to write code that works with atomics it re-orders things against your wishes?
(but also, maybe there is a tuit shaped like lea from someone who can't do the racyness fix, and maybe brrt has a tuit shaped like explaining the lea thing, etc) 12:05
... where are my tuits?
both in a literal, and a metaphorical sense
nine (template: gethow 13:12
(let: (($how (^getf (^stable $1) MVMSTable HOW)))
(if (nz $how)
$how
(call (^func MVM_6model_get_how)
...
You would think that we're fetching $how once into a register, check it and then return it. But in reality this generates 2 mov instructions reading from that memory location, resulting in a TOCTTOU race condition
jack9 how to inspect moar bytecode 13:45
nine jack9: moar --dump foo.mbc 14:05
tellable6 nine, I'll pass your message to jack9
lizmat And yet another Rakudo Weekly News hits the Net: rakudoweekly.blog/2023/01/23/2023-...nk-you-jj/ 15:06
24 Jan 2023
jack9 can't do it in code? 01:20
timo we used to have code to pick apart a moar file into its pieces written in raku, i think it was a gist 10:07
but it didn't read the moar bytecode
maybe the phaser that doesn't run code should be called RUN'T 10:19
nine timo: you mean this? gist.github.com/niner/63a718023aba...c1ccd84e32 10:32
:(*@args, *%kwargs) specifically i want the equivalent of python dis a module that takes things containing raku code and gives their bytecode representation 11:42
nine what for? 11:48
:(*@args, *%kwargs) educational purposes 🙂 12:28
nine What use case would this support where moar --dump isn't sufficient? 12:32
26 Jan 2023
MasterDuke well, that took a little while to fix 02:58
nine MasterDuke: computer trouble? 07:18
28 Jan 2023
timo1 gist.github.com/timo/7789b2322225d...c2b00f3331 here's the look at what frames get validated in what order, what other coderefs are mentioned in their bodies, and what is the caller of a frame when it first gets välidated 17:20
5.5 megabytes text file
actually, let me shorten the filenames 17:21
gist.github.com/timo/d596aab6cc5d8...12e0ff6da3 17:24
looks like the cur_frame is already the to-be-validated frame, so i need to get the caller or it's always the same 17:28
ah, i got the cause of the symptom wrong 17:30
MasterDuke nine: yeah, i haven't yet gotten around to setting up ethernet in this new place, so bought a cheap usb wifi adapter for the desktop. turns out it needs a 3rd party kernel module, which failed to rebuild after the most recent kernel update. took a bit of manually editing the source to get it working 22:09
timo1: have your recent experiments been inspired by the python optimizations going on? iirc there was something about hard-coding the deserialization of classes, etc that are always part of the runtime? 22:22
timo1 haven't heard of that yet 22:26