๐Ÿฆ‹ 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:01 tellable6 left, quotable6 left, nativecallable6 left, shareable6 left, statisfiable6 left, linkable6 left, committable6 left, squashable6 left, sourceable6 left, coverable6 left, releasable6 left, benchable6 left, evalable6 left, unicodable6 left, bisectable6 left, greppable6 left, reportable6 left, notable6 left, bloatable6 left 01:02 unicodable6 joined, bloatable6 joined, squashable6 joined, quotable6 joined, coverable6 joined 01:03 releasable6 joined, shareable6 joined, committable6 joined, benchable6 joined, tellable6 joined, notable6 joined, sourceable6 joined, linkable6 joined 01:04 bisectable6 joined, greppable6 joined, nativecallable6 joined, reportable6 joined, statisfiable6 joined, evalable6 joined 02:09 Nemokosch joined
Nemokosch bisectable6: use Test; throws-like 'Exception.new.throw', 'Exception'; 02:10
bisectable6 Nemokosch, Will bisect the whole range automagically because no endpoints were provided, hang tight
tellable6 2023-01-19T02:52:45Z #raku <PipStuart> Nemokosch: Sorry I missed the "c" in your nick twice. My oversight.
2023-01-19T10:19:37Z #raku <jjatria> Nemokosch: what's up?
2023-01-21T18:37:44Z #raku <coleman> Nemokosch: one small org that has nice docs (in my opinion) is voidlinux.org/
2023-01-22T16:04:41Z #raku <Xliff> Nemokosch: Got it working. Had to do .say for $a[] where A does Iterable
2023-01-22T20:28:38Z #raku-dev <Xliff> Nemokosch: OK, so it looks like what I need is here...
bisectable6 Nemokosch, More than 4 changes to bisect, please try a narrower range like old=2022.12 new=HEAD 02:11
Nemokosch, Output on all releases: gist.github.com/7806ed6252ca5861e6...c35d720483
02:15 Nemokosch left, codesections left, codesections joined 05:05 dogbert11 joined 05:08 dogbert17 left 05:29 squashable6 left 05:31 squashable6 joined 05:45 dogbert11 left 05:46 dogbert11 joined 05:47 dogbert17 joined 05:51 dogbert11 left 05:54 dogbert17 left 06:00 reportable6 left, reportable6 joined 06:03 dogbert17 joined 06:25 Xliff joined 06:26 Xliff joined 06:30 dogbert11 joined 06:34 dogbert17 left 06:45 dogbert11 left 06:46 dogbert11 joined 06:59 dogbert11 left, dogbert11 joined 07:06 dogbert11 left 07:09 dogbert11 joined 07:14 epony joined 07:15 dogbert17 joined 07:19 dogbert11 left 07:21 dogbert17 left 07:22 dogbert17 joined 07:46 sena_kun joined 07:55 Xliff left
nine > rakudo -e 'dd << "" "" a b >>;' 08:22
(IntStr.new(0, ""), IntStr.new(0, ""), "a", "b")
> RAKUDO_RAKUAST=1 ./rakudo-m -e 'dd << "" "" a b >>;'
("a", "b")
^^^ this is at least one of Telemetry's problems
09:00 MitarashiDango[m left 09:40 sena_kun left 09:42 sena_kun joined 09:52 sena_kun left
lizmat m: say Q| << "" "" a b >> |.AST.DEPARSE 10:04
camelia << "" "" a b >>
lizmat at least it deparses ok 10:05
feels like the QASTing of QuoteWordsAtom is wrong then
nine Yes, I only implemented as much as that failing test required. Now we know a test that requires more 10:17
lizmat indeed... but first the weekly :-) 10:18
11:11 ab5tract joined
SmokeMachine m: say "bla".AST 11:16
camelia No exception handler located for catch
at SETTING::src/core.c/Exception.pm6:570 (/home/camelia/rakudo-m-inst-2/share/perl6/runtime/CORE.c.setting.moarvm:print_exception)
from SETTING::src/core.c/Exception.pm6:626 (/home/camelia/rakudo-m-instโ€ฆ
SmokeMachine m: say Q|"bla"|.AST
camelia RakuAST::CompUnit.new
nine m: say Q|"bla"|.AST.dump 11:17
camelia CompUnit ๐„ž /home/camelia/EVAL_0:1 โŽก\"bla\"โŽค
StatementList ๐„ž /home/camelia/EVAL_0:1 โŽก\"bla\"โŽค
Statement::Expression โ–ช๐„ž /home/camelia/EVAL_0:1 โŽก\"bla\"โŽค
QuotedString โŽกblaโŽค
12:00 reportable6 left 12:01 reportable6 joined
lizmat I wonder how bad 10d73ada49 is for performance 13:45
13:58 linkable6 left, evalable6 left, evalable6 joined 14:00 linkable6 joined, Xliff joined
nine My guess: not great, not terrible 14:06
Xliff m: say Q|"sub (99) { }"|.AST.dump 14:13
camelia CompUnit ๐„ž /home/camelia/EVAL_0:1 โŽก\"sub (99) { }\"โŽค
StatementList ๐„ž /home/camelia/EVAL_0:1 โŽก\"sub (99) { }\"โŽค
Statement::Expression โ–ช๐„ž /home/camelia/EVAL_0:1 โŽก\"sub (99) { }\"โŽค
QuotedString โŽกsub (99) { }โŽคโ€ฆ
Xliff m: say Q|sub (99) { }|.AST.dump
camelia CompUnit ๐„ž /home/camelia/EVAL_0:1 โŽกsub (99) { }โŽค
StatementList ๐„ž /home/camelia/EVAL_0:1 โŽกsub (99) { }โŽค
Statement::Expression โ–ช๐„ž /home/camelia/EVAL_0:1 โŽกsub (99) { }โŽค
Sub ๐„ž /home/camelia/EVAL_0:1 โŽก (99) { }โ€ฆ
Xliff Parameter โŽก99โŽค 14:14
Do we have that RakuAST node? 14:15
lizmat yes, the Type::Simple is an Int in that case 14:25
the 99 is encoded in a "where" statement that the deparsing of RakuAST::Parameter doesn't show yet
Xliff So what would the creation of that parameter look like? 14:26
RakuAST::Parameter.new( where => RakuAST::IntLiteral.new(99) ) # ??
lizmat: Also, if the deparsing doesn't work, does that mean the QAST isn't being emitted as well? 14:27
lizmat nope, deparsing is separate from taht
nine Look at what Raku::Actions does
Xliff nine: Thanks. Will investigate as $dayJob allows. 14:28
This is actually FOR $dayJob, but I am juggling multiple tasks ATM
Geth nqp/main: 54518e913a | (Vadim Belman)++ | src/HLL/Compiler.nqp
Provide current compiler via $*HLL-COMPILER

Beneficial for concurrent compilations.
The symbol is only available at compilation stage.
nqp/main: bbe28e24de | (Vadim Belman)++ (committed using GitHub Web editor) | src/HLL/Compiler.nqp
Merge pull request #793 from vrurg/rakuast-lang-version

Provide current compiler via $*HLL-COMPILER
lizmat scratches a PR from the weekly :-)
notable6: weekly
notable6 lizmat, No notes for โ€œweeklyโ€
lizmat Xliff: the where argument needs to be a RakuAST::Block 14:30
vrurg lizmat: I'm considering merging the main PR too. Just wanna it to pass CI again.
lizmat vrurg: go ahead, that was in last week's weekly 14:31
vrurg lizmat: you broke the plot! :) 14:32
lizmat vrurg: wouldn't you need to bump NQP first ? 14:33
vrurg It's a part of the PR already.
Xliff lizmat: Did you get my gist for the weekly? 14:34
nine lizmat: the 99 is not actually a where. It's a post constraint like where, but it's just a value on the Parameter. A where doesn't have to be a block. It needs to be an expression and will be thunked (unless it's already a code object)
lizmat well, it is codegenned currently as a block with 99.ACCEPTS.Bool as the body
ACCEPTS($_) 14:35
nine โ”‚ โ”‚ - QAST::ParamTypeCheck 14:36
โ”‚ โ”‚ - QAST::Op(if)
โ”‚ โ”‚ - QAST::Op(isconcrete)
โ”‚ โ”‚ - QAST::Var(local __lowered_param_1)
โ”‚ โ”‚ - QAST::Op(iseq_I)
โ”‚ โ”‚ - QAST::WVal(Int)
โ”‚ โ”‚ - QAST::Op(decont)
โ”‚ โ”‚ - QAST::Var(local __lowered_param_1)
lizmat ok, it produces a RakuAST::node with 99.ACCEPTS($_).Bool in it
how that gets QASTisized, I don't know :)
Xliff lizmat: And that goes as :$where? 14:37
nine lizmat: no, that would be the case for sub foo($i where 99)
lizmat hmmm... maybe I got it wrong, it was late last night when I looked into it 14:38
Xliff And not to confuse things, but is RakuAST::Parameter.new( value => 99 ) a valid thing, or is that how this is supposed to be done?
$!value also goes into @!post_constraints
lizmat Xliff: re your script, I won't use it in this week's Weekly, but I will use / refer to it in a RakuAST blog post that I'll be writing this week 14:49
And yet another Rakudo Weekly News hits the Net: rakudoweekly.blog/2023/01/23/2023-...nk-you-jj/ 15:06
nine lizmat++ 15:07
Geth roast/rakuast-lang-version: 9bb37aa94b | (Vadim Belman)++ | S14-roles/versioning.t
Stringify language revision from the CORE

This doesn't affect older compilers but makes the spectesting happy with rakudo/rakudo#5157
15:12 epony left
Geth roast: vrurg++ created pull request #827:
Stringify language revision from the CORE
15:13 epony joined, linkable6 left, linkable6 joined
Geth roast/rakuast-lang-version: af3c8393e1 | (Vadim Belman)++ | S14-roles/versioning.t
Stringify language revision

This doesn't affect older compilers but makes the spectesting happy with rakudo/rakudo#5157
15:16 linkable6 left 15:18 Geth left, Geth joined, linkable6 joined 15:22 Geth left, Geth joined
Geth roast: af3c8393e1 | (Vadim Belman)++ | S14-roles/versioning.t
Stringify language revision

This doesn't affect older compilers but makes the spectesting happy with rakudo/rakudo#5157
roast: ae37898d98 | (Vadim Belman)++ (committed using GitHub Web editor) | S14-roles/versioning.t
Merge pull request #827 from Raku/rakuast-lang-version

Stringify language revision
15:24 linkable6 left, linkable6 joined
Xliff lizmat: Fine. 15:25
|Tux| ===SORRY!=== Error while compiling /pro/3gl/CPAN/Text-CSV6/csv-ip5xs.pl 15:37
Too many positionals passed; expected 1 argument but got 2
at /pro/3gl/CPAN/Text-CSV6/csv-ip5xs.pl:4
Is use Text::CSV_XS:from<Perl5> broken? 15:38
nine [Tux]: my guess, mismatch between rakudo and Inline::Perl5 version. Too new Inline::Perl5 for that rakudo 15:40
There was a backwards incompatible change in rakudo: github.com/niner/Inline-Perl5/comm...7d449bec7a 15:41
Oh, it's the other way round: too old Inline::Perl5 for that Rakudo version
|Tux| Looks like that indeed. I was trying a second box 16:19
Here' the usual results
Rakudo v2022.12-1-gd52342eb0 (v6.d) on MoarVM 2022.12-15-g6b456a6c0
csv-ip5xs0.832 - 0.850
csv-ip5xs-205.356 - 5.482
csv-parser3.798 - 4.019
csv-test-xs-200.402 - 0.409
test6.442 - 7.128
test-t1.421 - 1.434
test-t --race0.830 - 0.904
test-t-2021.325 - 22.296
test-t-20 --race6.485 - 6.718
16:20 NemokoschKiwi joined 16:34 NemokoschKiwi left
Geth rakudo/main: 5234e0bbab | (Elizabeth Mattijsen)++ | src/Raku/ast/signature.rakumod
Normalise RakuAST class specifications (8/N)
nine It's amazing how far we got when just about nothing about the current quote word implmentation is how it's supposed to be 17:15
lizmat well, if there are insufficient tests :-) 17:23
Geth rakudo/main: 1ec15a8dff | (Stefan Seifert)++ | src/Raku/ast/literals.rakumod
RakuAST: fix quotewords postprocessing stumbling over nqp::join

The code lifted from the old compiler frontend expected string parts to always be concatenated via infix:<~> while the code generated by the RakuAST frontend generates nqp::join('', nqp::list_s(...)). The QAST walker needed to be taught about this, too.
rakudo/main: 70a50d512a | (Stefan Seifert)++ | src/Raku/ast/literals.rakumod
RakuAST: actually mark quote word atoms as such
rakudo/main: 8c64a479bc | (Stefan Seifert)++ | src/Raku/ast/literals.rakumod
RakuAST: fix quotewords postprocessing stumbling over nqp::concat

The code lifted from the old compiler frontend expected string parts to always be concatenated via infix:<~> while the code generated by the RakuAST frontend generates nqp::concat if there's just 2 parts. The QAST walker needed to be taught about this, too.
17:57 ab5tract left
nine Turns out it wasn't that hard after all 18:00
18:00 reportable6 left 18:03 reportable6 joined
Geth rakudo/main: 49b4566e45 | (Stefan Seifert)++ | 2 files
RakuAST: fix initialization of Mu typed variables failing type checks

A Mu typed variable should accept _any_ type at all, including VM types that are actually outside the Raku type hierarchy, so we must not emit any type checking code for such variables.
Fixes my Mu \foo = nqp::list_i;
Xliff Is there a way to run a string through the Raku parser?
18:41 notna joined
lizmat that's what the Str.AST method does 18:56
Xliff ^^
Xliff OK, so... the parameter object for... "sub a ("me") { };" - Will look something like --> my $p = RakuAST::Parameter.new( :$value ); $p.set-type( RakuAST::Type::Simple.new('Str') ); 18:59
Where $value is "me"
lizmat I'm not sure, atm... looking into that as a matter of fact
I think we shouldn't have to pass the type if a constant was given: the type should be derived from the given defined value 19:00
that can only lead to discrepancies 19:01
Geth rakudo/main: 2cffc13f02 | (Stefan Seifert)++ | src/Raku/ast/name.rakumod
RakuAST: Fix package lookups on multi-part package names

When we are already given a lexical, that means that not just the first part of the name, but the full name has been resolved. So in this case we only have to slap an nqp::who in front and are done.
Fixes A::B::<C>
lizmat 103 / 630 ! 19:05
Xliff lizmat: OK. That is from Raku::Actions, so I put it there. 19:08
Value is also $!value, and I think it will need to be $.value
Otherwise you can't deparse the example I just gave. 19:09
lizmat yeah... working on the deparsing bit atm
nine lizmat: your numbers are still with a non-RakuAST make test before the actual run, aren't they? 19:13
lizmat yes
Geth rakudo/main: 8589e80b18 | (Stefan Seifert)++ | src/Raku/ast/expressions.rakumod
RakuAST: support currying of postcircumfixes on whatever

Fixes @foo.map: *[1]
nine nine@sphinx:~/rakudo (main =)> RAKUDO_RAKUAST=1 ./rakudo-m -e 'role Foo { method foo() { note $_ for <1 2> } }; class Bar does Foo { }; Bar.foo' 19:36
Cannot map a List using 'Bool::True'
Somehow applying that role to the class breaks the QAST for the for loop. Instead of the map getting passed a block with the loop body, it gets passed the loop body directly 19:37
โ”‚ โ”‚ โ”‚ - QAST::Op(callmethod map) 19:38
โ”‚ โ”‚ โ”‚ - QAST::Op(callmethod serial)
โ”‚ โ”‚ โ”‚ - QAST::Var(local for-list_1)
โ”‚ โ”‚ โ”‚ - QAST::Op(call &note)
โ”‚ โ”‚ โ”‚ - QAST::Var(lexical $_)
19:48 Xliff left
nine The cause is missing checktime effects on the role body 19:49
lizmat stops with looking at Parameter for today 19:52
needs more grokking while not so tired
20:19 notna left
Geth rakudo/main: 0b0bce8962 | (Stefan Seifert)++ | src/Raku/ast/statements.rakumod
RakuAST: fix bizarre miscompilations of role bodies

When roles are applied to classes within the same comp unit as they are declared, they need to be fully compiled as their bodies are run when the class is composed. However we only ran resolving, but did not apply check time effects, so we e.g. did not thunk for loop expressions.
It looks like check time effects should just not modify the AST, i.e. not try to thunk anything. That's better done as begin time effects as those are guaranteed to run only once. Not sure if this will hold, but for now it gets us further in the tests.
nine 99 make test files!
lizmat phah! :-)
nine Only one of the telemetry tests is still failing now 20:22
Some exceptions were thrown in END blocks:\n X::TypeCheck::Assignment: Type check failed for an element of \@columns; expected Positional but got Seq ((\"blahblah\",).Seq)\n in block at /home/nine/rakudo/lib/Telemetry.rakumod (Telemetry) line 833 20:23
20:44 codesections left, discord-raku-bot left, discord-raku-bot joined, codesections1 joined 20:46 codesections1 is now known as codesections 21:13 [Coke] left
nine Ah, is copy is only implemented for scalars 21:19
Geth rakudo/main: dfcb5f47a7 | (Stefan Seifert)++ | src/Raku/ast/signature.rakumod
RakuAST: properly support is copy trait on @ and % parameters
nine 100!
22:02 NemokoschKiwi joined 22:15 bisectable6 left, bisectable6 joined
vrurg nine: ๐ŸŽ‰ 22:37
23:05 NemokoschKiwi left