🦋 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.
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
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
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
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⎤
StrLiteral
lizmat I wonder how bad 10d73ada49 is for performance 13:45
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
Type::Simple
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
*that
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.
14:29
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
Geth roast: vrurg++ created pull request #827:
Stringify language revision from the CORE
15:12
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:15
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
15:23
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
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
Geth rakudo/main: 5234e0bbab | (Elizabeth Mattijsen)++ | src/Raku/ast/signature.rakumod
Normalise RakuAST class specifications (8/N)
17:12
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.
17:57
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.
nine Turns out it wasn't that hard after all 18:00
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;
18:17
Xliff Is there a way to run a string through the Raku parser?
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>
19:04
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]
19:20
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
(Any)
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 $_)
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
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.
20:21
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
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
21:37
nine 100!
vrurg nine: 🎉 22:37