🦋 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.
00:00 reportable6 left 00:01 reportable6 joined 00:16 discord-raku-bot left 00:17 discord-raku-bot joined 01:16 discord-raku-bot left 01:17 discord-raku-bot joined 02:17 discord-raku-bot left, discord-raku-bot joined 02:23 epony joined 03:17 discord-raku-bot left, discord-raku-bot joined 04:18 Xliff left 05:18 linkable6 left, evalable6 left 05:19 evalable6 joined 05:20 linkable6 joined 06:00 reportable6 left 06:01 reportable6 joined 06:21 heartburn left 06:22 heartburn joined 07:07 samcv_ joined, Voldenet_ joined 07:14 JRaspass left, samcv left, |Tux| left, Voldenet left, elcaro left, Voldenet_ is now known as Voldenet 07:17 elcaro joined 07:21 |Tux| joined 07:22 JRaspass joined 07:39 epony left 08:17 discord-raku-bot left, discord-raku-bot joined 08:44 sena_kun joined
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.
09:55 evalable6 left 09:57 evalable6 joined 10:15 Xliff joined
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!
10:17 Xliff left 10:35 epony joined 11:49 discord-raku-bot left, discord-raku-bot joined 11:52 Xliff joined
Xliff Hi! Is there a writeup of the available RakuAST nodes, yet? 11:53
11:57 discord-raku-bot left 11:58 discord-raku-bot joined 12:00 reportable6 left 12:03 reportable6 joined
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.
13:53 dogbert11 left 13:57 dogbert11 joined 14:17 discord-raku-bot left 14:18 discord-raku-bot joined 14:30 dogbert11 left 14:50 dogbert11 joined 15:06 discord-raku-bot left, discord-raku-bot joined 15:16 NemokoschKiwi joined 15:44 guifa_ joined 15:46 guifa left
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 @_.
16:02 dogbert17 joined 16:04 dogbert11 left
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
16:40 discord-raku-bot left, discord-raku-bot joined
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
17:17 discord-raku-bot left, discord-raku-bot joined
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
17:35 linkable6 left
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 ?
17:38 linkable6 joined
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
18:00 reportable6 left 18:02 raku-discord joined, reportable6 joined, raku-discord left
lizmat m: say Q| sub foo (42) { } |.AST.DEPARSE # looks like there is some additional constraint somewhere 18:10
camelia sub foo (Int) {
}
18:11 squashable6 left 18:12 squashable6 joined 18:16 codesections joined
Xliff lizmat: Maybe a type object with a default value? 18:26
18:33 NemokoschKiwi left
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
19:47 discord-raku-bot left
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
19:53 raku-discord joined
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
20:13 raku-discord left, discord-raku-bot joined 20:21 squashable6 left 20:22 squashable6 joined
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
20:58 sena_kun left 21:07 Geth left, Geth joined, Geth left 21:08 Geth joined
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
22:07 Geth left 22:08 Geth joined 22:12 Geth left, Geth joined
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
22:20 Xliff left
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
23:30 epony left
Geth rakudo/main: ac282b4fb1 | (Elizabeth Mattijsen)++ | t/12-rakuast/statement-phaser.rakutest
Untodo now passing tests, nine++
23:51