🦋 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: a8edae2c21 | (Stefan Seifert)++ | src/Raku/ast/package.rakumod
RakuAST: make $?CLASS and ::?CLASS available to role bodies at compile time

While runtime lookup of these type captures already worked, the compiler itself wasn't aware of their existence.
09:43
rakudo/main: 79075ad208 | (Stefan Seifert)++ | 2 files
RakuAST: fix applying roles defined in the same comp unit

Role bodies are run when a role is applied, i.e. at the target's BEGIN time. Thus the mainpulations of the body's block QAST done in IMPL-EXPR-QAST were simply too late. They had not happened yet and the role body had the wrong return value.
Instead, mainpulate the role body's AST so when we compile it dynamically (as a BEGIN effect) we will generate the QAST we need.
rakudo/main: c1c6ef26e4 | (Stefan Seifert)++ | src/Raku/ast/signature.rakumod
RakuAST: fix inconsistent bind results with generics in signatures

While the routine's meta data was already set up correctly, the generated parameter type checks did not support generics and instead tried to match types directly. This would fail which caused an inconsistent bind result (binder thought the signature will match, but runtime checks failed).
Instead of checking against the generic's type object itself, we need to generate a runtime lookup of the generic's name, to get the type it was specialized to.
Xliff P6-GLib suite timing statistics for Raku 2022.12.1024.g.9998.d.1338 10:16
Total number of projects: 33 (502749 loc)
Total non-parallel compile times: 8758.230 (265.401 avg)
Total parallel compile times: 2098.439 (63.589 avg) 4.174x speedup
Notes: MAJOR regression on parallel timings by almost 500 seconds!
Xliff Hi! Is there a writeup of the available RakuAST nodes, yet? 11:53
lizmat Xliff: no, sadly, high on my list 12:39
closest thing: t/12-rakuast test files 12:40
Xliff lizmat: One sec. 12:47
lizmat Xliff: re regression, any idea since what commit / release ? 12:49
Xliff gist.github.com/Xliff/b4741a42ab83...f3e9b79528 12:50
lizmat going to be afk for a few hours&
Xliff lizmat: Let me check.
lizmat afk&
Xliff lizmat: Since Raku 2022.12.985.g.05.cfed.1.b.0 on MoarVM 2022.12.14.gebefe.2618 12:51
Geth rakudo/main: a99da6c162 | (Stefan Seifert)++ | src/Raku/ast/resolver.rakumod
RakuAST: fix multi-part-name package installation with existing prefix

In role A::B { }; role A::B::C { } we overwrote the A::B role with a package stub, because when looking for the longest existing prefix of A::B::C we were looking for another A in A.
Additionally even with that fixed, with role A::B {}; role A::B::C::D {} we actually only created A::B::D since we didn't put the C we failed to find back into the list of unresolved package name parts.
13:10
rakudo/main: 75b4f5b2cd | (Stefan Seifert)++ | 4 files
RakuAST: implement support for INIT phasers

Instead of an !INIT_VALUES hash in the comp unit like the old compiler frontend, the RakuAST frontend simply creates a Scalar container for each init value and uses this for storing and accessing the value.
rakudo/main: a564ff379b | (Stefan Seifert)++ | 2 files
RakuAST: fix replacing package stub with multi-part name

In class A::B { ... }; class A::B { }; we need to replace the last symbol in the package chain. This means that partially-resolve-name-constant will actually resolve the full name and the list of remaining unresolved parts is empty.
Geth rakudo/main: ee983161d1 | (Stefan Seifert)++ | src/Raku/ast/expressions.rakumod
RakuAST: Support hypering of array indexing
16:00
rakudo/main: 84fe050327 | (Stefan Seifert)++ | 3 files
RakuAST: fix placeholder param decls clashing with explicit *%_ and *@_

A %_ in a code block without signature automatically declares a placeholder parameter. However if the block has a signature and %_ is already declared, we should just reference that. Otherwise we end up declaring the same symbol twice. Same for @_.
nine > RAKUDO_RAKUAST=1 ./rakudo-m -Ilib -e 'INIT if True { }' 16:08
When invoking 1 '', provided outer frame 0x3846be0 (2 '<unit>') does not match expected static frame 0x3846ce0 (3 '')
Oh boy....
lizmat is the -Ilib needed ? 16:32
nine no 16:44
[Tux] Rakudo v2022.12-1-gd52342eb0 (v6.d) on MoarVM 2022.12-15-g6b456a6c0
csv-ip5xs0.890 - 0.891
csv-ip5xs-205.523 - 5.696
csv-parser3.806 - 3.838
csv-test-xs-200.406 - 0.421
test6.520 - 6.554
test-t1.567 - 1.568
test-t --race0.935 - 0.938
test-t-2020.585 - 21.347
test-t-20 --race6.373 - 6.553
16:51
Xliff What's the proper parameter target when the parameter is a literal value? 16:55
Rather, the proper RakuAST Node
So, I'm trying to create the RakuAST for: method a("me") { ... } 16:56
nine Ah, I see the problem. We add the QAST for that if statement twice. Once as declaration and once as immediate block. I should actually call the declared block instead.
joelle I screwed up - I was trying to clone the rakudo repo and I think I accidentally cloned it into the raku-community-modules org. 😦 I'm not a github expert, so I don't want to risk deleting the wrong thing, but I could probably use help to clean up my mess! 17:10
lizmat did you push? 17:11
joelle I cloned it in the github interface 17:12
I.E. github.com/raku-community-modules/rakudo 17:13
And by clone, I meant fork. :/ 17:15
lizmat then we just remove the fork ? 17:20
fork removed 17:21
joelle Thanks!
Geth rakudo/main: a67c859846 | (Stefan Seifert)++ | src/Raku/ast/statementprefixes.rakumod
RakuAST: fix INIT phasers as statement prefix

INIT phasers must not be thunky. Otherwise we end up creating a declaration block, but copying the statement QAST to the bind op instead of generating a call.
Fixes "When invoking 1 '', provided outer frame 0x3846be0 (2 '<unit>') does not match expected static frame 0x3846ce0 (3 '')" when trying: INIT if True { }
17:26
nine And with this the Telemetry module compiles!
lizmat Xliff: that commit only added RakuAST tests ? 17:29
Xliff lizmat: The version hash I listed earlier is the earliest hash for the regression. Not the commit itself. 17:30
lizmat so the regression is *before* that is what you're saying 17:32
Geth rakudo: jmaslak++ created pull request #5163:
Trivial filename correction in comment
17:33
lizmat perhaps 0baf2c0e4e453ca2c5e75cb5c7b22d4b6a72b298
Geth rakudo/main: 169eb58c61 | (Joelle Maslak)++ (committed using GitHub Web editor) | src/Perl6/Optimizer.nqp
Trivial filename correction in comment (#5163)
lizmat Xliff: or ffc9fc74094778a6e0b115d84c8d8078276cf57d 17:35
lizmat Xliff: could you try reverting that locally and see if it makes a difference? 17:35
assuming you're using race/hyper in your parallel compilation ?
lizmat nine++ 627 / 1355 passing ! 17:38
Xliff lizmat: No. Regression is *after* the listed version 17:39
RakuAST Node Directory = gist.github.com/Xliff/b4741a42ab83...f3e9b79528 17:41
lizmat Xliff: weird, I only see RakuAST work *after* that commit :-( 17:45
Xliff lizmat: OK. I'll chalk it up to environment. I'll try and run it again, tonight and see if I can replicate. 17:53
Thanks.
lizmat Xliff: those suggestions where *before* the commit you mentioned, so don't bother (I think) 17:54
lizmat m: say Q| sub foo (42) { } |.AST.DEPARSE # looks like there is some additional constraint somewhere 18:10
camelia sub foo (Int) {
}
Xliff lizmat: Maybe a type object with a default value? 18:26
Xliff m: use experimental :rakuast; RakuAST::Parameter.new( value => 42 ).DEPARSE.say 18:39
camelia
Xliff Hmmm... Shouldn't that just return 42?
Nemokosch not sure but still doesn't look right 18:40
Xliff That's the only way I can see to do a Parameter literal in RakuAST 18:42
Maybe missing a node?
m: use experimental :rakuast; my $m = RakuAST::Parameter.lolokup('^DEPARSE'); $m.file.say; $m.line.say 18:43
camelia No such method 'lolokup' for invocant of type 'RakuAST::Parameter'
in block <unit> at <tmp> line 1
Xliff m: use experimental :rakuast; my $m = RakuAST::Parameter.lookup('^DEPARSE'); $m.file.say; $m.line.say
camelia No such method 'lookup' for invocant of type 'RakuAST::Parameter'
in block <unit> at <tmp> line 1
Xliff m: use experimental :rakuast; my $m = RakuAST::Parameter.^lookup('^DEPARSE'); $m.file.say; $m.line.say
camelia No such method 'file' for invocant of type 'Mu'
in block <unit> at <tmp> line 1
Xliff m: use experimental :rakuast; my $m = RakuAST::Parameter.^lookup('DEPARSE'); $m.file.say; $m.line.say
camelia src/Raku/ast/base.rakumod
293
Xliff m: use experimental :rakuast; my $m = RakuAST::Parameter.^lookup('deparse'); $m.file.say; $m.line.say 18:44
camelia No such method 'file' for invocant of type 'Mu'
in block <unit> at <tmp> line 1
Nemokosch woah, I never knew the position in the source is exposed this simply
Xliff Yup
lizmat Xliff: won't have time to look at RakuAST::Parameter, but it looks like there's a *lot* missing in the deparsing 19:39
hope I will have time before tomorrow, otherwise it'll be after tomorrow's weekly
Xliff lizmat: Fair enough 19:52
I would try and make RakuAST::Parameter work with just the $!value, but I can't find our how it deparses.
Geth rakudo: usev6++ created pull request #5164:
[JVM] Add support for $?UNICODE-VERSION
19:53
Xliff How DO RakuAST Nodes know how to deparse? 19:55
raku-discord <5Nemokosch> by liz telling them to well moment 20:08
<5Nemokosch> github.com/rakudo/rakudo/blob/main...eparse.pm6 20:09
<5Nemokosch> there is this file, for one
Xliff Nemokosch: OK, so it looks like what I need is here... 20:28
tellable6 Xliff, I'll pass your message to Nemokosch
Xliff github.com/rakudo/rakudo/blob/main...e.pm6#L574
Nemokosch nice 👀 20:29
Xliff And unfortunately, I see no emission of a where clause, or a default spec, or RakuAST::Parameter!value
Nemokosch could be NYI 20:31
Geth rakudo/main: 2e20149ab6 | (Stefan Seifert)++ | 2 files
RakuAST: fix ::{$foo} indirect lookups

  ::<whatever> is also just a PseudoStash accessor, so we treat it as that
and not try to resolve an empty name.
20:33
rakudo/main: 49facdc03c | (Christian Bartolomäus)++ | src/vm/jvm/runtime/org/raku/rakudo/Binder.java
[JVM] Fix defaults for typed optional @/% params

This intends to port 7148da1c61 to the JVM backend.
Please note the workaround for handling @deprecation during compilation of settings. I'm not really sure why this is needed, but I think that the problem arises from "sub DYNAMIC" having @deprecation as an optional parameter in src/core.c/stubs.pm6. For some reasons the check for gcx.Positional fails in that situation. My wild and vague guess would be that the check happens too early and some important pieces are still missing.
20:36
Geth rakudo/main: 882d6a48b9 | (Stefan Seifert)++ | src/Raku/ast/code.rakumod
RakuAST: Actually run FIRST phasers
21:41
nine lizmat: ^^^
Was rather easy after implementing INIT phasers today :) 21:42
Geth infra/list-cloudflare-admins: 47cb6483a1 | (Coleman McFarland)++ | tools/list-cloudflare-users
Add script to list users and roles in Cloudflare
22:19
infra: dontlaugh++ created pull request #18:
Add script to list users and roles in Cloudflare
22:20
Nemokosch this is still traced apparently 22:20
Geth ¦ Color: 2colours self-assigned clamping on colors should be done when the values are asked github.com/raku-community-modules/...r/issues/9 22:37
Geth rakudo/main: ac282b4fb1 | (Elizabeth Mattijsen)++ | t/12-rakuast/statement-phaser.rakutest
Untodo now passing tests, nine++
23:51