🦋 Welcome to the MAIN() IRC channel of the Raku Programming Language (raku.org). This channel is logged for the purpose of keeping a history about its development | evalbot usage: 'm: say 3;' or /msg camelia m: ... | Log inspection is getting closer to beta. If you're a beginner, you can also check out the #raku-beginner channel!
Set by lizmat on 25 August 2021.
[Coke] Moritz's 00:45
melezhik Happy new year indeed! 02:08
To all raku people ))) 02:09
Voldenet Happy new year #raku, fewer bugs and luckier optimizations ;) 03:40
CIAvash .tell spacekookie you need to make newline optional in `TOP`, because you're matching it with `<scopeword> \v <scope>` in token `line`. and you need to add whitespace in token `scope`, `[ \h* <scope-line> \v+ ]*`. and here's how I would write it: gist.github.com/CIAvash/e7d877b9c3...f9fde90fe1 06:26
tellable6 CIAvash, I'll pass your message to spacekookie
lizmat wishes the #raku people a enjoyful 2022! 11:29
El_Che I have an half hour, let's have a look at that pesky arm64 :) 11:34
El_Che scrolled through the module security discussion and it may be something that could bite us in the ass. Maybe no technical solution is needed, but the documentation should be very explicit about it 11:35
furthermore a duplication information in a meta6.json and in the source files will result in inconsistencies 11:36
El_Che ok, a hello world form of success: 12:02
uname -a
Linux cirrus-ci-task-6084719229009920 5.4.129-63.229.amzn2.aarch64 #1 SMP Tue Jul 20 21:22:19 UTC 2021 aarch64 aarch64 aarch64 GNU/Linux
:)
the trick is to avoid a timeout for 22 consecutive builds (the os+version matrix I build atm) 12:03
lizmat El_Che++ 12:04
El_Che too bad github does not offer arm64, yet another CI system to learn 12:12
El_Che arm64 builds will be throtled and this will make failing flapper tests very painful 13:16
Anton Antonov Happy New Year, everyone! 13:33
@lizmat I submitted a FOSDEM22 presentation proposal yesterday. 13:34
@lizmat Since, well, I promised I will do that. It is titled "Multi-language Data Wrangling and Acquisition Conversational Agents". 13:35
lizmat Anton Antonov++ 15:11
Anton Antonov @lizmat I got a message from Andrew Shitov that it is accepted. 16:20
guifa Hrm 19:30
m: class A { method foo { 'ok' } }; role B { method foo { callsame } }; my $a = A.new; $a does B; $a.foo.say;
camelia ok
guifa m: class A { method foo { 'ok' } }; role B { multi method foo { callsame } }; my $a = A.new; $a does B; $a.foo.say; 19:31
camelia ok
guifa that's what I'd expect but I'm getting Nil on both older and more recent branches 19:32
bisectable class A { method foo { "ok" } }; role B { multi method foo { callsame } }; my $a = A.new; $a does B; $a.foo.say;
MasterDuke looks like camelia is stuck on a commit from nov 19 19:34
guifa I'm not entirely sure though if Nil or 'ok' is the correc tthough. As I understand it, if A doesn't declare it as multi, then if B does, all of B's candidates will be exhausted before it's dispatched to A 19:35
actually nm on this machine I only have 2021.05, let me check on one with more recent. Maybe this is just something new-disp fixed 19:36
MasterDuke evalable6: class A { method foo { 'ok' } }; role B { multi method foo { callsame } }; my $a = A.new; $a does B; $a.foo.say;
evalable6 ok
guifa evalable6: role A { multi method CALL-ME(Str:D $a, Str:D $b) { $a ~ $b } }; &infix:<+> does A; my $x = "a"; $x += "b"; say $x; my $y = 0; $y += 1; say $y; 19:37
evalable6 (exit code 1) ab
Died with X::Multi::NoMatch
MasterDuke oh, they're still stuck because of the force push
committable6: 2021.12 class A { method foo { 'ok' } }; role B { multi method foo { callsame } }; my $a = A.new; $a does B; $a.foo.say; 19:38
committable6 MasterDuke, ¦2021.12: «ok␤»
MasterDuke committable6: 2021.12 role A { multi method CALL-ME(Str:D $a, Str:D $b) { $a ~ $b } }; &infix:<+> does A; my $x = "a"; $x += "b"; say $x; my $y = 0; $y += 1; say $y; 19:39
committable6 MasterDuke, ¦2021.12: «ab␤Died with X::Multi::NoMatch␤␤ «exit code = 1»»
guifa committable6: role A { multi method CALL-ME(Str:D $a, Str:D $b) { $a ~ $b }; multi method CALL-ME(|c) { say 'falling back'; callsame } }; &infix:<+> does A; my $x = "a"; $x += "b"; say $x; my $y = 0; $y += 1; say $y; 19:40
committable6 guifa, ¦role: «Cannot find this revision (did you mean “coke”?)»
guifa err
committable 2021.12 role A { multi method CALL-ME(Str:D $a, Str:D $b) { $a ~ $b }; multi method CALL-ME(|c) { say 'falling back'; callsame } }; &infix:<+> does A; my $x = "a"; $x += "b"; say $x; my $y = 0; $y += 1; say $y;
m: role A { multi method CALL-ME(Str:D $a, Str:D $b) { $a ~ $b }; multi method CALL-ME(|c) { say 'falling back'; callsame } }; &infix:<+> does A; my $x = "a"; $x += "b"; say $x; my $y = 0; $y += 1; say $y; 19:41
camelia ab
falling back
(Any)
MasterDuke needs : or , after the name
committable: 2021.12 role A { multi method CALL-ME(Str:D $a, Str:D $b) { $a ~ $b }; multi method CALL-ME(|c) { say 'falling back'; callsame } }; &infix:<+> does A; my $x = "a"; $x += "b"; say $x; my $y = 0; $y += 1; say $y; 19:42
committable6 MasterDuke, ¦2021.12: «ab␤falling back␤(Any)␤»
guifa I'm guessing the issue is that CALL-ME is a submethod rather than a method 19:46
guifa which normally would be fine: 19:47
m: class A { submethod foo { 'ok' } }; role B { submethod foo { self.A::foo } }; my $a = A.new; $a does B; $a.foo.say;
camelia Cannot dispatch to method foo on A because it is not inherited or done by A+{B}
in submethod foo at <tmp> line 1
in block <unit> at <tmp> line 1
guifa okay, so there we go, issue golfed: how to access an A's foo from B ? 19:54
MasterDuke committable6: releases class A { submethod foo { 'ok' } }; role B { submethod foo { self.A::foo } }; my $a = A.new; $a does B; $a.foo.say; 19:55
committable6 MasterDuke, gist.github.com/866682f39ae5f2ce6d...179ff362fe 19:56
MasterDuke bisectable6: old=2021.09 new=2021.10 class A { submethod foo { 'ok' } }; role B { submethod foo { self.A::foo } }; my $a = A.new; $a does B; $a.foo.say;
bisectable6 MasterDuke, Bisecting by exit code (old=2021.09 new=2021.10). Old exit code: 0
MasterDuke, bisect log: gist.github.com/e85e641b89fba254c4...8cb4ea3130 19:57
MasterDuke, There are 224 candidates for the first “new” revision. See the log for more details
MasterDuke guifa: looks like it was the new-disp merge. should probably create an issue and/or ping jnthn 19:58
guifa m: class A { submethod foo { 'ok' } }; role B { submethod foo { A.^methods.head.CALL-ME() } }; my $a = A.new; $a does B; $a.foo.say; 19:59
camelia No such method 'CALL-ME' for invocant of type 'Submethod'
in submethod foo at <tmp> line 1
in block <unit> at <tmp> line 1
guifa raises an eyebrow
GOT IT 20:00
m: class A { submethod foo { 'ok' } }; role B { submethod foo { A.^methods.head()(self); } }; my $a = A.new; $a does B; $a.foo.say;
camelia ok
guifa but I feel like there should be a simpler way to access A's submethod in this case 20:03
spacekookie CIAvash: damn thank you! 20:57
tellable6 hey spacekookie, you have a message: gist.github.com/400d756da8db4c5c30...bb4a11f7f1
spacekookie Happy new year btw!
spacekookie pats tellable6 20:58