🦋 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 01:23 Xliff left 02:02 squashable6 left, squashable6 joined 02:09 ab5tract left 03:09 sourceable6 left, reportable6 left, quotable6 left, committable6 left, nativecallable6 left, bloatable6 left, coverable6 left, benchable6 left, shareable6 left, releasable6 left, squashable6 left, unicodable6 left, linkable6 left, greppable6 left, tellable6 left, statisfiable6 left, evalable6 left, bisectable6 left, notable6 left, unicodable6 joined, shareable6 joined, evalable6 joined 03:10 sourceable6 joined, releasable6 joined, linkable6 joined, committable6 joined, coverable6 joined, greppable6 joined, tellable6 joined 03:11 bisectable6 joined, bloatable6 joined, nativecallable6 joined, statisfiable6 joined, squashable6 joined, reportable6 joined, quotable6 joined 03:12 notable6 joined, benchable6 joined 04:42 Kaipei left 05:42 squashable6 left, notable6 left, shareable6 left, evalable6 left, tellable6 left, committable6 left, coverable6 left, linkable6 left, quotable6 left, unicodable6 left, sourceable6 left, statisfiable6 left, bisectable6 left, greppable6 left, releasable6 left, nativecallable6 left, reportable6 left, quotable6 joined 05:43 coverable6 joined, shareable6 joined, statisfiable6 joined, releasable6 joined, nativecallable6 joined, committable6 joined, notable6 joined 05:44 sourceable6 joined, squashable6 joined, bisectable6 joined, evalable6 joined, reportable6 joined 05:45 greppable6 joined, tellable6 joined, linkable6 joined, unicodable6 joined 06:00 reportable6 left 06:03 reportable6 joined 07:26 bloatable6 left, benchable6 left, greppable6 left, sourceable6 left, releasable6 left, reportable6 left, shareable6 left, squashable6 left, coverable6 left, unicodable6 left, bisectable6 left, statisfiable6 left, quotable6 left, nativecallable6 left, evalable6 left 07:27 coverable6 joined, evalable6 joined 07:28 nativecallable6 joined, squashable6 joined, bisectable6 joined, benchable6 joined, greppable6 joined, bloatable6 joined, sourceable6 joined, statisfiable6 joined 07:29 releasable6 joined, reportable6 joined, quotable6 joined, unicodable6 joined 07:30 shareable6 joined 08:30 linkable6 left, evalable6 left 08:31 linkable6 joined 08:33 evalable6 joined
Geth rakudo/main: 5758c35172 | (Stefan Seifert)++ | src/Raku/ast/signature.rakumod
RakuAST: fix variable $_ not resolved on parameters with where blocks

When PERFORM-BEGIN is called implicitly via IMPL-CHECK, it's not sufficient to ensure the newly generated nodes begin is performed as at that point resolution of names has already been performed. Intead we need to run the full IMPL-CHECK routine.
rakudo/main: c5c93a9281 | (Stefan Seifert)++ | src/Raku/ast/variable-declaration.rakumod
RakuAST: Support binding to anonymous state variables
nine And 90 make test files passing
10:29 Kaipei joined 10:35 sena_kun left 10:46 sena_kun joined
Geth rakudo/main: e9030098e9 | (Elizabeth Mattijsen)++ | 2 files
Fix several issues with deparsing quoted strings

  - added RakuAST::QuotedString.has-variable method, which returns
   True if any of the segments is a variable
  - a single 'exec' processor without variables now deparses as
   qx//, with variables as qqx//
rakudo/main: 14958337e7 | (Elizabeth Mattijsen)++ | t/12-rakuast/strings.rakutest
Add extensive deparsing tests for quoted strings
rakudo/main: d8854eb690 | (Elizabeth Mattijsen)++ | t/12-rakuast/heredocs.rakutest
Make heredocs test TAP output more descriptive
nine lizmat: I'm curious. How do you make sure your commits don't cause any regressions? 11:08
lizmat by running "make test" ?
nine and spectest presumably 11:09
lizmat and an occasional "make spectest", but not all of the time
I mean, I'm only working on deparsing stuff 11:10
nine But then you cannot be sure?
lizmat spectest doesn't have any deparsing stuff
nine Sure it does. Since there are now 2 places where RakuAST code itself uses deparse, all code has the potential to run deparse
lizmat running a spectest takes 3.5 minutes for me
nine I run `TEST_JOBS=20 RAKUDO_RAKUAST=1 make spectest | grep '\. ok' | sort | tee $(git describe).pure.tests` and then vimdiff with the previous results file to avoid getting a new test working but losing some other test 11:11
lizmat well, if my work breaks anything, then there's a missing test in the deparsing part 11:13
and the test should be added and the problem fixed 11:14
nine: FWIW, t/spec/S02-names/is_cached.t hangs for me with RAKUAST=1 11:37
nine I know, I'm currently investigating
lizmat it parses ok 11:38
I guess recursive calls are NYI ?
nine: is this something I did? 11:40
nine No, it golfs to sub fib() { }; BEGIN &fib.wrap(-> |c { callsame }); dd fib()
The hang is not a regression. It's just that before one of my recent fixes it didn't compile at all 11:41
lizmat *phew*
aahhh ok
the joys of successful compilation :-)
nine It's yet another BEGIN time execution issue. Probably a new code path that leads to a missing call to add-clone-for-cuid 11:43
11:46 linkable6 left, evalable6 left, linkable6 joined, evalable6 joined 12:00 reportable6 left 12:02 reportable6 joined
nine This may topple the whole house of cards that is BEGIN time execution... 12:15
lizmat oh dear 12:20
nine The root of the problem is that we create QAST nodes much later than the old compiler frontend. The old compiler could create a stub for code objects and in the same process the QAST::Block object that generates the cuid. This cuid is important when tracking clones of the code object. When a code object gets compiled dynamically (i.e. at BEGIN time) we need to replace its $!do and the $!do of all clones. 12:21
If a clone is not registered yet in the clone list, we miss it and then end up in an infinite loop as we dynamically compile, but replace only the $!do of the original and then try to call the stub again, which compiles... 12:22
lizmat so we would need to create a to$!do list ?
and then we don't even think of BEGIN blocks in BEGIN blocks, right ?
nine We already have such a list. But that only gets filled if IMPL-LINK-META-OBJECT was called already and that's part of creating QAST, which in the above example happens after running that BEGIN block 12:23
But I do see hope: the whole conundrum is because we rely on the cuid to find clones. Maybe we just have to manage them differently. 12:24
lizmat sometimes I feel we're on the bleeding edge of compiler design / implementation :-) 12:35
nine It's not just a feeling. We certainly are. 12:50
Weak references would be nice for this 13:34
Geth rakudo/main: 034ed9ac09 | (Elizabeth Mattijsen)++ | src/core.c/RakuAST/Deparse.pm6
Hopefully fix deparsing of ApplyPostfix

Looks like only Methodish things need the '.' Also make sure there's a space between the Term::Reduce infix op and the args: [+](1,2,3) would work, but [+]@foo not.
rakudo/main: d9c9837e91 | (Elizabeth Mattijsen)++ | src/core.c/RakuAST/Deparse.pm6
Tweak deparsing of Term::Reduce

And simplify deparsing of ArgList
rakudo/main: ac5a00906c | (Elizabeth Mattijsen)++ | src/core.c/RakuAST/Deparse.pm6
Give dotty infix call assign some whitespace

For better readability of deparsed ASTs
rakudo/main: 2fb1427ab1 | (Elizabeth Mattijsen)++ | src/core.c/RakuAST/Deparse.pm6
Deparse ColonPair::Value with strings as :foo<bar>

as opposed to :foo('bar'), to make it more match common usage
rakudo/main: 8a5e0f8c0a | (Elizabeth Mattijsen)++ | src/core.c/RakuAST/Deparse.pm6
Correct deparsing for :foo<bar> vs :foo('bar')

The <bar> syntax is subject to word / val processing, and the
  'bar' syntax is not. Reflect that properly in deparsing
rakudo/main: 93ea024a02 | (Elizabeth Mattijsen)++ | 4 files
Add deparse tests and make TAP more informative
nqp/main: 97b87b4fd5 | (Stefan Seifert)++ | src/QAST/Block.nqp
Provide access to QAST::Block's cuid counter for RakuAST

In RakuAST we need to determine a cuid in advance, i.e. before we create the QAST::Block object that the cuid will be used for. So provide an API for getting the next cuid as well as for setting a specific cuid on a block.
rakudo/main: 58fbc27c02 | (Stefan Seifert)++ | 2 files
RakuAST: Hopefully finally fix BEGIN time execution hangs for good

The root of the problem is that we create QAST nodes much later than the old compiler frontend. The old compiler could create a stub for code objects and in the same process the QAST::Block object that generates the cuid. This cuid is important when tracking clones of the code object. When a code object gets compiled dynamically (i.e. at BEGIN time) we need to replace its $!do and the ... (11 more lines)
¦ JSON-JWT: 2colours self-assigned JSON::JWT Fails to install on 2022-12 Raku via Zef github.com/raku-community-modules/...T/issues/6 15:49
18:00 reportable6 left 18:02 reportable6 joined 19:23 Kaipei left 19:35 Kaipei joined 20:27 ab5tract joined 20:33 epony left 20:50 ab5tract left 21:03 ab5tract joined 21:07 ab5tract left 21:45 sena_kun left 21:47 sena_kun joined 22:32 epony joined