🦋 Welcome to the IRC channel of the core developers of the Raku Programming Language (raku.org #rakulang). This channel is logged for the purpose of history keeping about its development | evalbot usage: 'm: say 3;' or /msg camelia m: ... | Logs available at irclogs.raku.org/raku-dev/live.html | For MoarVM see #moarvm
Set by lizmat on 8 June 2022.
Geth rakudo/main: 612dd255a6 | (Daniel Green)++ | src/Perl6/bootstrap.c/BOOTSTRAP.nqp
Make progress on unbreaking the JVM build

I was a bit too hasty with my earlier commits. It's still broken after this, but gets farther.
01:49
05:06 MasterDuke joined
MasterDuke lizmat: any idea about the current jmv error? gist.github.com/MasterDuke17/95bf7...abda6ac228 05:53
*jvm 06:05
i wondered if the line count was off and tried the diff included in that gist, but it didn't change anything 06:06
06:32 MasterDuke left 09:08 sena_kun joined
lizmat .tell MasterDuke no idea :-( 09:33
tellable6 lizmat, I'll pass your message to MasterDuke
09:53 sena_kun left
Geth rakudo/liz-Possible: b91cea9adb | (Elizabeth Mattijsen)++ | src/Perl6/bootstrap.c/BOOTSTRAP.nqp
Make Routine $!dispatcher a scalarless attribute

As it's only used internally
10:02
12:53 MasterDuke joined
MasterDuke lizmat: fwiw, it looks like github.com/rakudo/rakudo/commit/99...a7715f9a06 is the commit that broke the jvm build 12:56
tellable6 2024-03-08T09:33:23Z #raku-dev <lizmat> MasterDuke no idea :-(
MasterDuke lizmat: in the new version there's no equivalent of `$param := nqp::hllizefor($param, 'Raku')` (and then later in the code there are comparisons against $param's type). obviously the new code builds and passes a spectest on moarvm, so i wonder if it's a bug in the jvm implementation? 13:11
lizmat MasterDuke: that is probably it... 13:12
perhaps add it conditionally on the non-MoarVM backend ?
MasterDuke but the new code does seem quite a bit different, i.e., are you sure the different checks are the same?
lizmat pretty sure they do... at least passes all test and spectest 13:13
fwiw, I thought I'd maybe mixed up the DEFINED/UNDEFINED check, but no: if I switch that, the spectest breakage is impressive :-) 13:14
MasterDuke it's this line github.com/rakudo/rakudo/commit/99...d3c53L3865 that i'm wondering about 13:15
because that seems it would matter when it gets down to github.com/rakudo/rakudo/commit/99...3874-L3876 13:16
lizmat github.com/rakudo/rakudo/commit/99...d3c53R3863
later on, only the type is checked, so I thought it make it clearer to make it the type object there already 13:18
it also allowed the if structure to become a ternary
MasterDuke hm. i guess .WHAT is doing the equivalent...
lizmat well, perhaps not: I'd suggest doing the HLLize there to see if it fixes that
MasterDuke hm. i could put all the old code back in an `#?if !moar` block, but maybe i can figure out a smaller change... 13:24
lizmat did you try putting the hllize on github.com/rakudo/rakudo/commit/99...d3c53R3863 ?? 13:27
MasterDuke trying `my $type := nqp::hllizefor($arg, 'Raku').WHAT;` now. however, it takes about 800s to fail, so have to wait a bit to see 13:29
lizmat yeah... it just takes too long on the JVM :-( 13:35
MasterDuke this branch i'm working on is a bit faster, but it's still pretty slow. it seems to be the rakuast stuff. '+++ Generating     gen/jvm/ast.nqp' is where half the total time is going (~450s on my branch). stage parse for core.c is only ~90s (compared to 45s for moarvm) 13:39
on main '+++ Generating     gen/jvm/ast.nqp' takes ~1400s
(i just found out about gnomon and am loving it, makes figuring out these timings so easy) 13:40
heh. now the build dies in a different way, but i think later and maybe because of my branch. now i get to test the *long* build on main... 13:49
lizmat meh... ok, if I push another micro opt in the mean time?
MasterDuke sure
Geth rakudo/main: fda0d13209 | (Elizabeth Mattijsen)++ | src/Perl6/bootstrap.c/BOOTSTRAP.nqp
Don't bother checking natives if no typecheck requested
13:51
MasterDuke heh. '+++ Generating     gen/moar/ast.nqp' is only 12s...i wonder why the jvm is *so* much worse, it's not usually 100x slower 14:25
14:28 [Tux] left
MasterDuke hm. don't think that change was right. now it's dying with `Ambiguous call to Bool` 14:29
ab5tract I’ve said it before but maybe it’s time to put the JVM implementation out to pasture 14:30
14:31 [Tux] joined
ab5tract I don’t really like that we advertise a backend that is mostly unused, often broken, and without parity. 14:31
It doesn’t help that when people read that Raku runs on the JVM, they imagine that it interoperates with other JVM languages, which it doesn’t 14:33
I don’t mean that to discount your valiant efforts MasterDuke!
lizmat or bartolin's 14:34
Geth rakudo/main: 3e476241be | (Elizabeth Mattijsen)++ | 2 files
Cache dispatch info on Routine object

The dispatch order logic basically stores a list of hashes with condensed information about each dispatchee. And this is kept with the proto, to allow for faster "find_best_dispatchee" logic.
However, the condensed information about a candidate was re-created ... (10 more lines)
19:29
japhb Nice win, lizmat++ 21:41
22:08 sena_kun joined 22:12 MasterDuke left 22:45 MasterDuke joined 23:36 sena_kun left
MasterDuke i agree that the jvm backend is not all that it could be. but generally it doesn't take too much effort to keep it working 23:52
i really wish someone else knew truffle well enough to help out on that branch. even in it's very incomplete state it showed lots of promise 23:53
unfortunately i don't really understand it and pmurias hasn't been able to work on it for a while now