[00:06] *** reportable6 left [00:19] *** mykhal left [00:20] *** mykhal joined [00:30] *** linkable6 joined [01:13] *** spacekookie_ left [01:15] *** spacekookie joined [01:15] *** sisar joined [02:15] *** unicodable6 left [02:15] *** squashable6_ left [02:15] *** statisfiable6_ left [02:15] *** quotable6 left [02:15] *** releasable6 left [02:15] *** committable6 left [02:15] *** greppable6 left [02:15] *** linkable6 left [02:15] *** sourceable6_ left [02:15] *** bloatable6 left [02:15] *** shareable6_ left [02:15] *** bisectable6_ left [02:15] *** coverable6 left [02:15] *** nativecallable6_ left [02:15] *** notable6 left [02:15] *** benchable6 left [02:16] *** quotable6 joined [02:16] *** nativecallable6 joined [02:16] *** sourceable6 joined [02:16] *** squashable6 joined [02:16] *** statisfiable6 joined [02:17] *** bloatable6 joined [02:17] *** greppable6 joined [02:18] *** coverable6 joined [02:18] *** releasable6 joined [02:21] *** sisar left [02:23] *** ggoebel left [02:29] *** evalable6 joined [03:09] *** reportable6 joined [03:16] *** notable6 joined [03:16] *** bisectable6 joined [03:17] *** shareable6 joined [03:34] *** frost joined [03:36] *** guifa joined [03:36] o/ [04:17] *** linkable6 joined [04:17] *** benchable6 joined [04:17] *** unicodable6 joined [04:47] *** floppy_disk joined [04:56] *** floppy_disk left [04:58] *** [Coke] left [05:17] *** committable6 joined [06:07] *** reportable6 left [06:10] *** [Coke] joined [06:28] *** Sgeo left [06:47] *** ggoebel joined [06:48] *** mexen_ joined [06:50] Happy Nowruz everyone! [06:50] *** mexen_ is now known as mexen_wfh [06:52] *** ggoebel left [06:52] *** ggoebel joined [07:12] *** mexen_wfh left [08:08] *** abraxxa joined [08:14] *** abraxxa left [08:15] *** abraxxa joined [08:35] *** sena_kun joined [08:48] *** dakkar joined [08:55] *** Manifest0 left [09:00] *** Manifest0 joined [09:22] What is that, good sir [10:00] *** evalable6 left [10:00] *** linkable6 left [10:05] Persian new year and international day("renewal of nature" and "culture of peace") https://en.wikipedia.org/wiki/Nowruz https://www.un.org/en/observances/international-nowruz-day [10:07] ohh 🧚 [10:09] *** reportable6 joined [10:28] *** TempIRCLogger left [10:29] *** TempIRCLogger joined [10:29] *** peder left [10:30] *** peder joined [10:33] *** TempIRCLogger left [10:33] *** TempIRCLogger joined [10:34] *** zacts joined [10:47] *** zacts left [11:00] *** evalable6 joined [11:03] *** linkable6 joined [11:04] *** razetime joined [11:49] *** Guest93 joined [11:56] Hi. How can I perform multiple tests of a same file in 'if' condition without repeating file name? [11:56] if "/etc/os-release".IO.f && "/etc/os-release".IO.r and ... { [11:56]   CODE [11:56] } [11:56] So I would like to get rid of repeating "/etc/os-release" multiple times. For me it's very common to call boolean methods on same object in one 'if' condition, so I wonder if there is a short Perl-ish form of it. [11:57] You could deal with the topic variable I think [11:57] either using "given" or in this case, I find it tempting to just use "andthen" [11:58] $_ doesn't work in 'if' condition [11:58] which is a closer equivalent of "with" [11:59] it does, why wouldn't it [11:59] if "/etc/os-release".IO andthen .f && .r and ... { [11:59] } [11:59] however, dor this .f and .r business, I would expect that there is some smartmatching stuff [11:59] and you don't even need to replace the IO in the first place [11:59] m: with "tmp".IO { if .e and .d { say "hi" } }     # or  something like this perhaps [11:59] rakudo-moar fb749d99e: ( no output ) [12:00] .f && .r && .x with "/etc/os-release".IO [12:01] '/etc/os-release'.IO ~~ :f & :r [12:01] this is also correct, isn't it [12:01] that is also correct, but would create the IO object twice [12:03] >>> if "/etc/os-release".IO andthen .f && .r and ... { [12:03] WORKS!! [12:03] that sounds optimizable though, not an inherent treat of the syntax? [12:03] I love this andthen, Jan Krňávek for president [12:07] >> MasterDuke 13:59:33 [12:07] >> m: with "tmp".IO { if .e and .d { say "hi" } }     # or  something like this perhaps [12:07] also nice tip. THANK you!! [12:08] *** reportable6 left [12:09] the difference between `with` and `given` is that `with` skips on missing value [12:10] .defined must be true for with to trigger [12:11] >> lizmat 14:00:50 [12:11] >> .f && .r && .x with "/etc/os-release".IO [12:11] looks cool, but get syntax error when use in if block like this [12:11] if .f && .r with "/etc/os-release".IO { [12:11]   say "true"; [12:11] } else [12:11] Guest93, rakudo-moar fb749d99e: OUTPUT: «true␤» [12:11]   say "false"; [12:11] } [12:11] Guest93, rakudo-moar fb749d99e: OUTPUT: «false␤» [12:11] yes, it does... you can't mix with and if like that [12:11] m: say "foo" if 0 [12:11] rakudo-moar fb749d99e: ( no output ) [12:11] m: say "foo" with 0 [12:11] rakudo-moar fb749d99e: OUTPUT: «foo␤» [12:12] and andthen enforces boolean context, right? [12:13] https://docs.raku.org/routine/andthen [12:13] *** razetime left [12:13] The andthen operator returns Empty upon encountering the first undefined argument, otherwise the last argument. [12:13] *** razetime joined [12:13] so it is exactly like with [12:14] I like this way more but the name was a bit suggestive in the other direction [12:15] >>> '/etc/os-release'.IO ~~ :f & :r [12:15] checking .. [12:17] [14:01:26] '/etc/os-release'.IO ~~ :f & :r [12:17] [14:01:31] this is also correct, isn't it [12:17] Works!! THanks!! [12:20] these 3 forms are workable: [12:21] if "/etc/os-release".IO andthen .f && .r { [12:21]   say "true"; [12:21] } else { [12:21] Guest93, rakudo-moar fb749d99e: OUTPUT: «true␤» [12:21]   say "false"; [12:21] } [12:21] Guest93, rakudo-moar fb749d99e: OUTPUT: «false␤» [12:21] with "/etc/os-release".IO { [12:21]   if .f and .r { [12:21]     say "true"; [12:21]   } else { [12:21] Guest93, rakudo-moar fb749d99e: OUTPUT: «true␤» [12:21]     say "false"; [12:21]   } [12:21] Guest93, rakudo-moar fb749d99e: OUTPUT: «false␤» [12:21] } [12:21] if "/etc/os-release".IO ~~ :f && :r { [12:21]   say "true"; [12:21] } else { [12:21] Guest93, rakudo-moar fb749d99e: OUTPUT: «true␤» [12:21]   say "false"; [12:21] } [12:21] Guest93, rakudo-moar fb749d99e: OUTPUT: «false␤» [12:21] *** discord-raku-bot left [12:21] *** discord-raku-bot joined [12:21] Guest93: please use gists for extended code examples [12:21] how? [12:22] by using e.g. gist.github.com and posting the url here [12:27] 👍👍👍 [12:28] https://gist.github.com/AlexEnz/b3922058d31b71b738448b57fb4fea00 [12:28] thank you all !!! [12:41] *** Altai-man joined [12:46] *** Guest93 left [13:02] *** [Coke] left [13:07] *** Altai-man left [13:07] *** [Coke] joined [13:12] *** [Coke]_ joined [13:13] *** [Coke] left [13:22] *** frost left [13:26] *** [Coke]_ is now known as [Coke] [13:54] *** Sgeo joined [13:56] *** Xliff_ left [13:58] *** peder left [14:11] *** reportable6 joined [14:11] *** peder joined [14:46] *** wingfold joined [14:56] and yet another Rakudo Weekly News hits the Net: https://rakudoweekly.blog/2022/03/21/2022-12-releasomatic/ [14:58] lizmat++ (also yay, I snuck in my update just in time) [15:15] sneaked reeeeee [15:17] when you look at the link https://raku.land/cpan:BDUGGAN/Dawa the last paragraph's header looks like this https://i.imgur.com/PoxH3cW.png and it's caused by colliding ids of elements on the page containing readme's contents [15:19] It's never a bad time to state how much I adore the topic variable as it is in Raku [15:20] the best part is how you can skip it and just do .something-like-this [15:21] I feel this enables a whole next level of maintainability [15:31] <[Coke]> https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences#scrolling-margins - Nifty, this basically does what I want for my status line with a scrolling window. [15:31] <[Coke]> (windows only) but I could use this on windows and the termios stuff on linux. [15:51] You don't need termios unless you're doing raw *input*. [15:51] If all you're doing is sending ANSI sequences, just do that. [15:52] <[Coke]> thanks. [15:52] (And FWIW escape sequences with names starting with "DEC" are VTnnn sequences) [16:08] College memories of sneaking into the lab reserved for upperclassmen, to use the large *color* DEC VT340 terminals with ReGIS and Sixel graphics, instead of the main lab's amber monochrome VT100`s. Good times, good times. [16:26] *** colemanx joined [16:27] dude sixels are so cool [16:27] I remember messing with them a bunch when I started programming a several years ago [16:29] <[Coke]> have something working on windows that puts a header and a terminal spinners bar on the last two lines while the viewport is everything above that. need to dynamically get the console size, and reset the viewport when done so that I don't have to hit enter to get past the progress bar. [16:31] <[Coke]> (and wrap it up into a module instead of a bunch of hard coded stuff) [16:31] <[Coke]> (and make it work on linux) [16:34] <[Coke]> can we get raku into the microsoft store? [16:35] <[Coke]> I just typed "python" in a command window, got a very nice "click here" and am now installing python 3.x [16:44] *** abraxxa left [16:47] *** abraxxa joined [16:51] *** abraxxa left [16:52] *** abraxxa joined [17:05] *** razetime left [17:33] I like the "Did You Know" section of this week's newsletter [17:33] 👎 [17:34] oops, wrong one :\ [17:34] thumbs UP [17:36] *** dakkar left [17:43] :) [17:57] *** nine left [17:57] *** m_athias left [17:58] *** nine joined [17:58] *** m_athias joined [18:00] *** ilogger2 joined [18:02] *** lucs_ is now known as lucs [18:04] *** wingfold left [18:05] *** camelia left [18:05] *** m_athias left [18:05] *** nine left [18:06] *** m_athias joined [18:06] *** nine joined [18:09] *** reportable6 left [18:14] *** camelia joined [18:18] *** abraxxa left [18:22] [Coke] as soon as I figure out packaging for Mac, I can do that for the apple store at elast [18:24] <[Coke]> ++guifa [18:42] ¦ doc: ad6c0c6c54 | (JJ Merelo)++ | doc/Type/Label.pod6 [18:42] ¦ doc: Adds new Label stuff #4043 [18:42] ¦ doc: review: https://github.com/Raku/doc/commit/ad6c0c6c54 [18:42] Link: https://docs.raku.org/type/Label [18:43] *** linkable6 left [19:03] *** melezhik joined [19:03] . [19:09] ¦ doc: 72dce1aa2c | (JJ Merelo)++ | doc/Type/Date.pod6 [19:09] ¦ doc: Adds new Date 2022.03 #4043 [19:09] ¦ doc: review: https://github.com/Raku/doc/commit/72dce1aa2c [19:09] ¦ doc: 46a9c05072 | (JJ Merelo)++ | doc/Type/DateTime.pod6 [19:09] ¦ doc: Adds new DateTime features for 2022.03 closes #4043 [19:09] ¦ doc: review: https://github.com/Raku/doc/commit/46a9c05072 [19:16] guifa: You mean Raku in the AppStore? For iOS too??? [19:19] is star still being maintained? [19:23] the Question™️ 🤣 [19:26] SmokeMachine for the App Store. I don't know how we could pull it off on iOS, outside of using the JS RT [19:27] guifa: there is pythonista on iOS App Store [19:30] ¦ doc: 910fd68a79 | (JJ Merelo)++ | doc/Type/independent-routines.pod6 [19:30] ¦ doc: Minor fix :pencil2: [19:30] ¦ doc: review: https://github.com/Raku/doc/commit/910fd68a79 [19:31] tonyo: yes, Anton Oks is the new maintainer [19:32] ¦ doc: a21a3aed7f | (JJ Merelo)++ | doc/Type/independent-routines.pod6 [19:32] ¦ doc: Minor fix :pencil2: [19:32] ¦ doc: review: https://github.com/Raku/doc/commit/a21a3aed7f [19:49] *** melezhik left [20:21] *** wingfold joined [20:54] *** melezhik joined [21:01] *** melezhik left [21:02] SmokeMachine: I guess Apple loosened restrictions a while back [21:10] *** reportable6 joined [21:34] *** wingfold left [21:40] *** Tom joined [21:42] *** Tom is now known as Guest750 [21:45] I'm running Ubuntu 20.04; I have been running rakudo-2021.04 and rakudo-star. I just tried to install rakudo-star-2022.02, but the mods to my .bashrc don't seem to work. In particular the env. var 'PATH' references 'share' but there is no share directory in the rakudo-star-2022.02. Any thoughts? [21:47] *** melezhik joined [21:48] sena_kun SmokeMachine yes, idea is to run tests on sparky cluster built on top off azure container instances - with per seconds price model - https://azure.microsoft.com/en-us/pricing/details/container-instances/ [21:49] in that case there is no need to keep multi core pricy VM, and runs docker container on demand and then shutdown them [21:50] how many modules blin tests? [21:51] SmokeMachine we don't even need to have a k8s cluster - azure container instance are spawned and shut down on demand - it's pretty cheap and effective [21:52] melezhik: what are you building? [21:52] this is an example how to do this for parallel ( on many docker containers on the same time ) Rakudo spec test - https://github.com/melezhik/fastspec/blob/master/sparrowfile [21:54] tonyo I am thinking about building distributed test systems built on top of Sparky and azure docker instances [21:55] we could run tests on 20 containers in parallel and this would give us 20X speed ))) [21:56] we could apply this pattern to any distributed nature tasks, I am just suggesting community modules testing against raid commits / releases as an obvious example [21:56] maybe there are other niches for that [21:57] melezhik: At a certain point, the overall time to complete parallel tests becomes dominated by imbalance between the individual tests, by work needed to distribute the tests, and startup/shutdown/cleanup of each run test. [21:57] *** destroycomputers left [21:57] like I said as a prove of concept I tried to do Rakudo test spec on multiple spec chunks on sparky cluster - https://github.com/melezhik/fastspec/blob/master/sparky/fastspec/sparrowfile#L49-L78 [21:58] You can mitigate the imbalance problem by using feedback from previous runs to sort the tests by longest-runtime-first in the work distribution queue. [21:59] *** Guest750 left [21:59] japhb the thing is it'll hugely improved with the an era of docker. Also Sparky cluster  job api does all the job - it's all already implemented - https://github.com/melezhik/sparky#cluster-jobs [22:00] melezhik: i started down that path but you'll run into wanting different OSes to test against, eg something will work in linux but not bsd or windows, etc [22:00] so, yes there are some overheads to manage distributed queue, but they are not that significant, like I said [22:01] The imbalance problem is the bigger one. [22:01] tonyo this was my previous work, with rakudist, but now I am talking about something different - about parallel cluster tests for community modules [22:02] but this also could be applied to parallel tests on various os, distributions [22:03] japhb - "and startup/shutdown/cleanup of each run test." - it's already solved one runs tests on clean docker containers and then just kill them [22:04] this is completely the case with azure container instance, and you can see how it works with fast spec - https://github.com/melezhik/fastspec/blob/master/sparky/fastspec/sparrowfile#L135 [22:08] I'm glad you've solved the second problem. Just don't forget the first problem, is all I'm saying. :-) [22:10] yeah, this is why I've referenced (addressed) only the  second part of your statement ))),  so you are saying we are always limit by the slowest and greatest test, right? )) [22:12] Well, the big problem is when you get unlucky and after a well distributed run in which all workers are happily churning along, and you've gotten almost to the end of the work queue, you have the bad luck of the last couple tests being outsized huge -- so only those two workers have anything at all to do, and it takes them a long time to finish, meanwhile you can't use the rest of your fleet capacity to help [22:12] at all. [22:13] yeah, I see, but I guess my level of granularity is a module is being tested not a certain test, right? [22:13] so paralyzation is made by modules not by tests [22:14] Right, but how do you know which modules have nearly-no tests, and which have lots of test files but are really fast to execute them, and which have tests that run for several minutes? [22:14] so roughly speaking we are guaranteed to have an even workload for all workers in a cluster, at least with some good aproximation ... [22:14] right but no matter what the background OS is using (eg even if your os is win, the container is still using only linux) [22:15] yeah, that's true, I still think for the sake of Rakudo testing , (back compatibility ) not module testsing, we can think of the of 100 most breakable modules if you will so that to tests against them every Rakudo commit [22:15] so you might have RCM modules that work only against the container and the system library provided by linux (GNU) but not the library provided by BSD (this crept up in an issue with a module running tar) [22:16] melezhik: Yes, but that approximation is only as good as the granularity of parallelism you can achieve and the variance of its grains [22:16] Anyway, I'm just trying to provide a hint. Either you will be lucky, or you won't ... and then you'll remember this conversation. ;-) [22:17] tonyo japhb I get all that, thanks ... well the idea - have very fast (1 minute total time  ) test for 100 💯 Raku modules against every Rakudo commit, to give Raku devs fast feedback on regression [22:17] will they be happy about that? :-))) [22:18] That would be awesome, yes. :-) [22:18] i think a nightly would suffice, yea, and if it automatically managed the issue in GH (eg, closed the issue when the problem is fixed) then yea i think it'd be less than objectionable noise on the repo [22:18] it could be just 1 hours of containers CPU/memory time per day, so dirt cheap - remember - it's per second price for azure container instances ? ))) [22:19] so, I'll go ahead for this next journey ?  ha-ha ))) [22:20] tonyo yeah, we could start with your nightly Rakudo builds - it'll be even cheaper .... [22:21] i like the idea, don't take the opinions as criticism [22:21] not at all  ))) [22:21] :] [22:22] I hate it with passion and hate you all! [22:22] just kidding :) [22:22] ))) [22:26] melezhik: i also had the thought of dedicating 10 cores of my desktop to that task but running against a VM so you can have a matrix of oses with it (bsd, osx, linux, win) [22:30] Why reinvent that wheel? [22:31] If we want to test a larger part of the ecosystem on every rakudo commit, all it takes is someone running the https://github.com/wbiker/module2rpm script on more modules and submit them to https://build.opensuse.org/project/show/home:niner9:rakudo-git [22:32] *** melezhik left [22:32] Fully parallelized, dependency aware integration test on a > 1500 machine cluster. [22:33] is there any way to get notifications of failures? [22:33] Including web and command line interfaces, notifications, set-up of native dependencies and I don't know what else [22:34] And of course an API, on which you can automate everything and get all the data. [22:34] Oh, and it's completely free. Both in terms of license and for use. [22:46] *** linkable6 joined [23:07] *** monkey_ joined [23:44] *** melezhik joined [23:45] nine is it 1500 machines cluster for Rakudo modules only or this cluster shared by all other clients? [23:56] *** melezhik left [23:59] *** kj4tip joined