🦋 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.
02:29 nine_ left 02:30 nine joined 04:01 MasterDuke joined
MasterDuke ab5tract: moarvm does do some optimizations to/for splice, github.com/MoarVM/MoarVM/blob/main...ray.c#L944 04:02
09:28 vrurg left
Geth HexDump-Tiny/main: ae2388b304 | (Márton Polgár)++ (committed using GitHub Web editor) | .github/workflows/test.yml
Better functioning workflow
11:11
rakudo/main: 7f97bdd48c | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | tools/templates/L10N/README.md
Fix typo
13:12
14:08 vrurg joined
vrurg Anybody with good understanding of nqp::p6capturelex semantics around? 14:11
lizmat sadly, no docs at github.com/Raku/nqp/blob/main/docs/ops.markdown :-( 14:17
vrurg Nah, I know. And I never really had to deal with closures before. And without it can't finish the last PR. :( 14:19
ab5tract It's not completely undocumented... 15:30
Given the specified code object, sets its outer to the current scope.
Must be called in the immediate outer scope of the block in question.
Looking at the Java implementation, it looks like that's exactly what it does. 15:31
vrurg: what issues are you facing? 15:32
vrurg There is a thunk (Attribute $!container_initializer). It used to create a container using a statically resolved type. But in order to work with generics it must use QAST::Var to resolve lexicals. And whatever I do, I can't make it blend into the closure of role body. 15:34
It starts appearing to me though that the problem is that attribute's container_initializer code object has to be replaced with a closure. And that's going to be some headache... 15:38
ab5tract ouch :/ 16:25
[Tux] Rakudo v2023.11-71-g7f97bdd48 (v6.d) on MoarVM 2023.11-1-gbe03e26fc
csv-ip5xs0.272 - 0.282
csv-ip5xs-201.142 - 1.450
csv-parser1.545 - 1.577
csv-test-xs-200.140 - 0.141
test1.923 - 1.972
test-t0.420 - 0.425
test-t --race0.272 - 0.287
test-t-205.059 - 5.328
test-t-20 --race1.230 - 1.231
16:32
vrurg Things are even more weird than I though. When create_BUILDPLAN method checks the container initializer code – it gets correctly instantiated result meaning that it gets a closure. But the BUILDALL ends up calling the original and get uninstatiated result! 16:54
I'll be afk for a while, but it's something fishy out there... 16:55
lizmat The whole BUILDPLAN logic needs a makeover for RakuAST 17:05
ab5tract do we already have a list of changes or new requirements? 17:09
lizmat everything that BUILDPLAN currently supports? 17:11
ab5tract those are the old requirements, no? but why is it getting reworked? that's an essential question to answer before any how of a rework can begin 17:15
lizmat because BUILDPLAN is a hack: it should create the instantiation code using RakuAST classes from the attribute information at QAST time 17:16
actually, set up the rakuAST at class CHECK time, and then have that QASTed 17:17
ab5tract now it makes total sense to me. I can even picture it a little bit 17:19
thanks for breaking it down :)
lizmat basically create the "bless" method on the class
I'm not sure BUILDALL is needed anymore... but I may be wielding the chainsaw a bit too much there :-) 17:20
ab5tract :) 17:21
is it maybe worth creating a problem solving ticket for this?
lizmat feels more like a Rakudo issue to me
ab5tract ok 17:22
lizmat ah, you mean about BUILDALL ?
ab5tract yeah
lizmat that would be more of a problem solving one, indeed
[Coke] gist.github.com/coke/ca581925400ec...6ea153cbf5 - all failing nqp doc tests at the moment. 17:46
note that p6capturelex does not appear in the list (or in the docs) 17:47
which means the test isn't being clever enough to find ops in the source. 17:48
(I don't see p6capturelex in nqp/src either?)
lizmat github.com/rakudo/rakudo/blob/main...capturelex 17:50
[Coke] ... why did my ack not find that...
lizmat because you looked in nqp? 17:51
i just did: rak p6capturelex in the rakudo dir 17:52
[Coke] I'm on main in [email@hidden.address] git pull --rebase, grep p6capturelex docs/ops.markdown -- no results. wtf. 17:53
I'm on main in git@github.com:Raku/nqp.git, git pull --rebase, grep p6capturelex docs/ops.markdown -- no results. wtf.
(also we should rename those to .md for consistency)
this is so weird, wtf. 17:55
last commit is ad92dc5a5 ? 17:56
linkable6 (2023-11-21) github.com/Raku/nqp/commit/ad92dc5a52 [release] Bump VERSION to 2023.11
[Coke] ... DO 18:00
you said rakudo, not nqp
er, D'OH
I forgot we had a separate one for custom ops (that we are not testing) 18:01
vrurg I wish there be an explanation to the magic of p6capturelex. Looking at QAST, there is a block for a code object; then there is p6capturelex over the block with return value never bound; then the method object gets found on a ClassHOW (means – pulled in from the method table of class HOW), invoked – and it's the closure, which is invoked. But how? Something I'm missing here. 18:10
18:41 sena_kun joined 19:14 notna joined 19:23 notna left
Geth rakudo/main: d62f7780f2 | (Elizabeth Mattijsen)++ | 2 files
RakuAST: move module update logic to RakuAST::L10N
19:59
rakudo/main: 2d1ce780b8 | (Elizabeth Mattijsen)++ | src/core.c/RakuAST/Deparse.rakumod
RakuAST: allow slangs to have a full name

Allowing to say .DEPARSE("TLH:auth<zef:lizmat>") to use the Klingon localization as made identified by that string
vrurg One stupid typo in a test code – and hours of lost time. Oh, my... 20:45
J.K. Rakuling, "Stupid Typo And The Curse Of Confused Coder" 20:46
ab5tract does that mean that you are unstuck vrurg? 20:53
vrurg Yep. It was, presumably, working yesterday at some point. 20:54
ab5tract well, at least there is a positive outcome :)
vrurg But the closures implementation details are still confusing. To get a closure of CI it required: a) have 'outer' annotation on CI block QAST; b) install p6capturelex for the block in role's body; c) use p6capturelexwhere in BOOTSTRAP while instatinating an Attribute. 20:56
I can only guess that p6capturelexwhere causes the block to search in its caller stack the callsite which is specified with 'outer'. But what is the role of p6capturelex in this? 20:58
[Coke] what was CI again ? 21:01
ab5tract isn't p6capturelex responsible fhere or allowing the block to actually share the scope of the role's body? 21:23
but yeah, it really doesn't sound like it was a straightforward process to get it working
vrurg [Coke]: container initializer 21:26
ab5tract: it is clearly responsible. It just looks like it is quite different outcomes one gets when uses op return value and when just applies it to code object clone. 21:27
It gets us back to the lack of documentation in this field.
Geth roast: vrurg++ created pull request #850:
Add test for instantiation of a generic class
21:29
ab5tract yeah, indeed.
22:31 kjp left 22:34 kjp joined 23:03 sena_kun left