🦋 Welcome to the MAIN() IRC channel of the Raku Programming Language (raku.org). Log available at irclogs.raku.org/raku/live.html . If you're a beginner, you can also check out the #raku-beginner channel!
Set by lizmat on 6 September 2022.
00:24 maylay left 00:26 maylay joined 00:35 derpydoo left
wayland Question: In Rakudoc, how do I put a > inside a C<> block? 00:53
Answer: Use C<<>> 01:01
01:29 jpn joined 01:33 jpn left 02:06 hulk joined 02:07 kylese left 02:46 ulipink joined 03:05 yewscion_ joined
wayland A comment. I just upgraded from Rakudo 2024-08 to one from the last couple of months. I have a class, and in one of the methods it has the following piece of code: for self[0..*] -> $row { 03:07
The class "does Positional". Nothing else changed other than the upgrade. Now, rather than iterating over its own elements, it just runs the loop once, but seems to pick up the first element for some reason. 03:08
03:12 yewscion_ left 03:15 hulk left, kylese joined
wayland Fix: Changing it to the following worked: self[0..*-1] 03:15
03:17 jpn joined 03:22 jpn left 03:42 derpydoo joined 03:53 codesections joined 03:57 codesections left 03:58 Aedil joined 04:00 Aedil left 04:12 jpn joined 04:17 jpn left 04:19 ulipink left 04:23 codesections joined 04:28 codesections left, codesections joined 04:30 kylese left 04:32 codesections left 04:34 kylese joined 04:40 stanrifkin joined, Opus left 04:41 stanrifkin_ left 04:55 codesections joined 04:57 Aedil joined 05:00 codesections left 06:01 jpn joined 06:05 jpn left 07:25 esh left
librasteve wayland: looks to me that self[] is your issue … since that is indexing the element after the last element in your array :-) … it possible that this behaviour is undefined in different way in newer raku … btw self[^] is another way to say this 07:33
Voldenet actually, $a[0..*] doesn't do anything Positional, I wonder what it means 07:35
m: my @a := role :: does Positional { method elems() { say "elems"; 0 } }.new; say @a[0..*]
camelia (<anon|1>.new)
Voldenet m: my @a := role :: does Positional { method elems() { say "elems"; 0 } }.new; say @a[0..*-1]
camelia elems
()
Voldenet in the second case, "elems" get called 07:36
08:33 jpn joined 08:37 jpn left 09:03 jpn joined 09:05 maylay left 09:07 maylay joined 09:08 jpn left 09:15 jpn joined 09:25 kylese left 09:27 kylese joined 09:32 maylay left 09:35 maylay joined 10:00 sena_kun joined 10:08 derpydoo left
melezhik. ugexe: tbh I am sure that slow part is due to compilation, zef install log shows that it takes sometimes minutes to calculate dependency tree before installation stage starts … at least from kinda “black box testing” perspective… 10:11
.tell grondilu: are you interest in sparky badge for your Chess module ? 10:15
tellable6 melezhik., I'll pass your message to grondilu
10:23 jpn left 11:10 Sgeo left 11:37 Geth joined 11:38 maylay joined 11:41 maylay left 11:46 maylay joined 11:51 yewscion_ joined 11:53 JimmyZhuo joined 12:00 yewscion_ left 12:38 yewscion_ joined 12:45 tjr left 12:46 tjr joined 13:20 JimmyZhuo left 13:25 maylay left 13:27 maylay joined
melezhik. I am sure -> I am not sure 13:33
13:59 apac joined
ugexe What distribution is taking minutes to calculate its dependencies? 14:02
14:36 librasteve_ left
melezhik. As an example Air - has got just a few dependencies according to this log it takes 7 minutes to resolve all its dependencies- sparky.sparrowhub.io/report/libras...-Air/24113 14:42
gist.github.com/melezhik/1bce3b532...9c5c48f295 14:44
Time between 09:37:51 and 09:44:17 14:46
ugexe Yet all the other ones under it finish instantly 14:47
melezhik. And I see similar picture sometimes for other modules - like Sparrow6
What do you mean ?
ugexe only one of the “resolving” dependencies lives took that long 14:48
melezhik. ?
Let me reiterate - I see maybe 10-15 modules under search lines and it takes 7 minutes 14:49
ugexe There are multiple lines searching for dependencies that you linked. And they all finish instantly. Go see 14:50
all But one rather
melezhik. How so ? I am not sure if I understand a there are 4 lines prefixed with “Searching for missing” and timestamp , the first line start at 09:37:51 and the forth line starts at 09:44:17 So we have around 7 minutes apart 14:52
ugexe …yes. And again all the other lines finish instantly. You don’t recognize that or think it’s suspicious? 14:53
melezhik. 09:37:51 :: ===> Searching for missing dependencies: DateTime::Format, HTML::Escape, Cro::HTTP::Router 09:44:17 :: ===> Searching for missing dependencies: IO::Socket::Async::SSL, OO::Monitors, IO::Path::ChildSecure, Base64, HTTP::HPACK:ver<1.0.1>, Cro::Core:ver<0.8.10+>:auth<zef:cro>:api<0>, Cro::TLS:ver<0.8.10+>:auth<zef:cro>:api<0>, Crypt::Random, JSON::JWT, DateTime::Parse, Log::Timeline 09:44:17 :: ===>
Searching for missing dependencies: if, CBOR::Simple, Digest::HMAC 09:44:17 :: ===> Searching for missing dependencies: Digest:ver<1+>, TinyFloats:ver<0.0.3+>In
ugexe anyways it’s almost certainly a rakudo issue, possibly spesh related. If you attach a debugger or something you can probably find out more 14:54
melezhik. For me what matters is that between zef install Air and the moment when all dependencies resolved ( even the last step finishes instantly ) - takes 7 minutes 14:55
ugexe as far as zef is concerned the module resolution code is pretty simple and I do not think it can be the root cause of the actual issue.
melezhik. I don’t know what zef is doing before that - but all I know it spends 7 minutes till it”I see that all dependencies are resolved 14:56
ugexe Yeah, you’re gonna have to figure that out with a debugger
melezhik. Ok , I can rephrase the is as zef spends 7 minutes for something at the beginning of installation process 14:57
14:58 Aedil left
Why ? I mean I decently can , however don’t you think this zef related issue ? 14:58
ugexe No
melezhik. definitely
ugexe the issue is zef is written in raku
melezhik. Why ?
ugexe Because I have a strong mental model of how zef works 14:59
14:59 jpn joined
ugexe Let me turn the question around: what makes you think it isn’t an issue with raku? These type of performance problems with e.g. spesh get found much more regularly than performance issues in zef 15:02
melezhik. Hm, that is not helpful position. Sorry . Have you tried to troubleshoot it ? People use zef and people have issues with the tool . Of course its written on Raku , but if you can make something about it or at least if you can try - please do, saying it’s not a zef issue is not constructive
15:03 jpn left
ugexe It is productive you just don’t seem to like the answer 15:04
15:04 Aedil joined
ugexe it isn’t productive to spent time alluding to it being a zef issue when the problem that needs to be fixed is in raku 15:05
Also I’m typing on a phone so I’m a bit short
melezhik. That’s the point - I am not saying for sure - if this is Raku or zef related or both . But because I am using the tool I just start a simple statement I have a problem with a tool , but I don’t know there reason . Now if you have already troubleshooted this and have certain answer - please provide the one . But don’t just say - it’s not zef issues . “I have a string mental model about how zef works “ -
sorry is not technically sound argument for me
ugexe It’s the same as your argument though 15:06
melezhik. Please don’t say I am alluding anything , because I am not. I am just saying like I said in a “black box testing” manner - I use zef and I have problem with how long zef works . I said it already - I am not saying what is the root cause - but for me as for end user - I see those “symptoms” if you will 15:08
ugexe I could rewrite zef in go, but the raku issue would still exist 15:09
melezhik. Tbh I don’t like the overall attitude . But ok - take it or leave it . It’s up to you as for maintainer of zef to decide whether you go a troubleshot issue or not. I just think it’s always reasonable at least assume that there might me be issue with zef itself and at least send some time for it. 15:10
What is THE issue with Raku ? Did you investigate ? 15:11
ugexe I’m done dude
15:32 maylay left 15:35 maylay joined
ugexe Sigh, I really wish people would investigate issues more before they blame something 15:50
I just looked at the log. Explain why all the output after the long line finish at the same time?
or maybe explain why I have to ask that question to begin with 15:51
16:09 maylay left 16:12 maylay joined 16:37 Guest69 joined 16:42 jpn joined 16:48 wayland76 joined 16:49 habere-et-disper joined, wayland left 17:04 habere-et-disper left 17:38 stanrifkin left 17:45 jpn left 18:10 Guest69 left 18:34 [Coke] left 19:30 abraxxa-home joined 19:32 abraxxa-home left 19:35 abraxxa-home joined 19:36 abraxxa-home left, abraxxa-home joined 19:38 Xliff joined
Xliff Hello! 19:38
tellable6 2025-03-21T13:53:35Z #raku <librasteve> Xliff: I wonder if browser detection (to logs?) is a good candidate for Cro middleware?
2025-03-21T19:02:54Z #raku-dev <lizmat> Xliff: are you using OO::Monitor's wait-condition / need-condition in your code ?
Xliff m: my $e = q<abc>; $e .= subst( /(b)/, "{ $/[0] }e" ); $e.say
camelia Use of Nil in string context
aec
in block <unit> at <tmp> line 1
Xliff Why doesn't that work?
lizmat: Why would I need either of those in my code? The browser detection is done in a request scopped manner. 19:39
I shouldn't need any such things if it's performed in an around() block, right?
librasteve: Aren't around() blocks considered middleware? 19:40
melezhik. ugexe: ok , I run build with debug mode - sparky.sparrowhub.io/report/libras...-Air/24227
19:41 jpn joined
19:36:37 :: ===> Extracting: Digest:ver<1+> 19:36:37 :: [Digest] Command: tar -zt -f ./8f2092538c1c35ea49c3e9d613a82fe2a3ba4708.tar.gz 19:39:02 :: [Digest] Extracting with plugin: Zef::Service::Shell::tar 19:42
Xliff m: my $e = q<abc>; $e ~~ /(b)/; $e.substr-rw( $/.from, $/.to - $/from) = "{ $/[0] }e" ); $e.say
camelia ===SORRY!=== Error while compiling <tmp>
Unable to parse expression in argument list; couldn't find final ')' (corresponding starter was at line 1)
at <tmp>:1
------> /(b)/; $e.substr-rw( $/.from, $/.to - $/<HERE>from) = "{ $/[0] }e" ); $e.say…
Xliff m: my $e = q<abc>; $e ~~ /(b)/; $e.substr-rw($/.from, $/.to - $/.from) = "{ $/[0] }e" ); $e.say 19:43
camelia ===SORRY!=== Error while compiling <tmp>
Unexpected closing bracket
at <tmp>:1
------> .from, $/.to - $/.from) = "{ $/[0] }e" <HERE>); $e.say
melezhik. Took approximately 2 minutes 20 seconds for extracting Digest to finish
Xliff m: my $e = q<abc>; $e ~~ /(b)/; $e.substr-rw($/.from, $/.to - $/.from) = "{ $/[0] }e" }; $e.say
camelia ===SORRY!=== Error while compiling <tmp>
Unexpected closing bracket
at <tmp>:1
------> .from, $/.to - $/.from) = "{ $/[0] }e" <HERE>}; $e.say
Xliff m: my $e = q<abc>; $e ~~ /(b)/; $e.substr-rw($/.from, $/.to - $/.from) = "{ $/[0] }e"; $e.say
camelia abec
19:43 Sgeo joined
lizmat Xliff: the question was about something entriely else: the use of OO::Monitors 19:44
melezhik. Could it be that mentioned command - Extracting with plugin: Zef::Service::Shell::tar is slow for at least some distros ?
lizmat there's one of your modules that uses it
ugexe melezhik i asked you to explain why all the output after the problematic line has the same timestamp 19:45
and again, in the link you just posted i see the same pattern
it isn't taking 3 minutes to extract that distribution, its taking 3 minutes before all the text to be shown or whatever 19:46
19:46 jpn left
ugexe like look at the 19:39:02 timestamps 19:46
it didn't precompile all those modules in 0 seconds
melezhik. I don’t know . Something happen between 19:36:37 and 19:39:02 and this something takes more then 2 minutes 20:00
tbrowder fyi i just installed Air, took about 5 min, but i have lots of ram and cores 20:03
Xliff lizmat: Why whould I need those routines, then?
tbrowder the msgs i saw looked “normal” for complex deps 20:04
20:04 maylay left 20:07 maylay joined
melezhik. Similar delay with another build 20:01:50 :: ===> Extracting: TinyFloats:ver<0.0.3+> 20:01:50 :: [TinyFloats] Command: tar -zt -f ./b0f219fa8e4ad5099e986f9ac7ee1979e498bd58.tar.gz 20:01:50 :: [TinyFloats] Extracting with plugin: Zef::Service::Shell::tar 20:04:14 :: [TinyFloats] Command: tar -zxvf ./b0f219fa8e4ad5099e986f9ac7ee1979e498bd58.tar.gz -C ../b0f219fa8e4ad5099e986f9ac7ee1979e498bd58.tar.gz HTH 20:09
ugexe It feels like you haven’t read anything I’ve said 20:12
clearly there is an issue with the output buffering, either from rakudo internally or your own ci code 20:13
librasteve tbrowder: lemme try 20:20
tbrowder: did you follow the README instructions? 20:23
Install Air, Cro & Red - zef install --/test cro - zef install Red --exclude="pq:ver<5>" - zef install Air 20:24
tbrowder duh, no my bad
librasteve (it will take 5 mins if you don't --/test on cro)
20:24 Xliff left
tbrowder i’ll bow out now… 20:25
librasteve oh ... well we are "well acquainted with raku quirks - so certainly my Getting Started needs more emphasis ... I will try and improve it 20:26
ttfn
general question - can I somehow mark META6.json deps as --/test and so on 20:27
?
20:30 [Coke] joined 20:42 Aedil left
[Coke] I agree with ugexe here, this doesn't look like a systemtic zef issue - please try to install the individual dependencies one at a time (the 3 from the first line that are clearly taking longer) and see if you can figure out which of those 3 is the problem one. 20:45
(afk on a train) 20:46
21:09 vrurg joined, vrurg_ left
[Coke] You could also do a fresh install with a verbose option from zef to get more logging output to more clearly show where the slowdown is. 21:11
21:38 yewscion_ left 21:39 human_blip left 21:40 human_blip joined 21:49 yewscion_ joined 21:54 yewscion_ left 22:00 habere-et-disper joined 22:04 habere-et-disper left 22:06 yewscion_ joined 22:12 yewscion_ left 22:22 yewscion_ joined 22:36 yewscion_ left 22:46 jpn joined 22:47 yewscion_ joined 22:48 wbooze joined 22:51 jpn left, maylay left 22:52 maylay joined, yewscion_ left 22:57 maylay left 22:59 maylay joined 23:03 yewscion_ joined 23:08 yewscion_ left
lizmat Xliff: if you're not using those routines, it's all good 23:17
tellable6 lizmat, I'll pass your message to Xliff
lizmat this probably means we can safely remove that functionality from OO::Monitors without breaking anybody's code
23:19 yewscion_ joined
coleman rebooting docs.raku.org 23:26
23:26 abraxxa-home left
coleman done 23:27
lizmat coleman++ 23:28
23:34 sena_kun left 23:40 sena_kun joined 23:45 jpn joined 23:47 sena_kun left 23:50 jpn left