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 |
|