🦋 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.
[Tux] Rakudo v2022.07-73-gd9059e3fe (v6.d) on MoarVM 2022.07-16-g3ae8a31c1
csv-ip5xs0.856 - 0.947
csv-ip5xs-205.423 - 5.634
csv-parser3.756 - 3.997
csv-test-xs-200.405 - 0.616
test6.807 - 7.838
test-t1.504 - 1.614
test-t --race0.964 - 1.136
test-t-2022.136 - 24.003
test-t-20 --race6.883 - 8.519
08:10
Xliff P6-GLib suite timing statistics for Raku 2022.07.73.gd.9059.e.3.fe 10:12
Total number of projects: 33 (484029 loc)
Total non-parallel compile times: 8719.240 (264.219 avg)
Total parallel compile times: 1609.475 (48.772 avg) 5.417x speedup
Better performance on non parallel, but worse performance on parallel from 2 weeks ago. 10:13
Timings weren't performed last week due to segfaults in Rakudo.
nine OMG I finally have it. Even the precompilation thing was a red herring. In the end it's just that RakuAST::LexicalScope::IMPL-QAST-DECLS got the order wrong ending in child blocks getting added to the AST before lexical declarations. That led to the QAST compiler to find the outer lexical scope's variable first leading to wrong results. It should have been worse, but I think, if the QAST compiler can't 12:54
find a lexical in the outer scope either, it will generate a runtime lookup which would then find the lexical that's declared too late
lizmat nine++ 12:55
Geth rakudo/rakuast: 874becf258 | (Stefan Seifert)++ | src/Raku/ast/code.rakumod
Add a fallback resolver for BEGIN time run code objects.

Ye olde implementation created a wrapper frame containing the lexical symbols of all outer scopes. This is rather costly and blows up bytecode size. Instead, we now use the VMs new capability to run a custom resolver when it cannot find a lexical by itself.
This first implementation only gets us compile-time-known values, but it's a start.
13:45
rakudo/rakuast: 522f1b029a | (Stefan Seifert)++ | 2 files
Fix name conflicts of auto-generated proto declarations

These "declarations" don't need a name. They are only there so the auto-generated proto gets added to the QAST somewhere.
13:46
rakudo/rakuast: b89009998d | (Stefan Seifert)++ | src/Raku/ast/scoping.rakumod
Fix lexicals getting declared too late

RakuAST::LexicalScope::IMPL-QAST-DECLS got the order wrong ending in child blocks getting added to the AST before lexical declarations. That led to the QAST compiler to find the outer lexical scope's variable first leading to wrong results.
It should have been worse, but when the QAST compiler can't find a lexical in the outer scope either, it will generate a runtime lookup which would then find the lexical that's declared too late.