🦋 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:04 jpn left 00:15 lichtkind left 00:53 jpn joined 00:58 jpn left 01:10 jpn joined 01:20 kylese left 01:21 jpn left, kylese joined 01:25 jast joined 01:28 ilogger2_ joined 01:29 jdv_ joined 01:34 Guest5764 left, dpk left, jargan left, atweedie left, toddr left, jdv left, ilogger2 left 01:43 toddr joined 01:56 stanrifkin joined 02:08 jdv_ is now known as jdv 02:11 Guest5764 joined, dpk joined, atweedie joined 02:15 kylese left, kylese joined 02:43 jpn joined 02:53 jpn left 03:06 Aedil joined 03:31 stanrifkin_ joined 03:33 stanrifkin left 04:30 kylese left 04:32 kylese joined 04:37 jpn joined 04:42 jpn left 05:17 Sgeo left 05:30 kylese left 05:32 kylese joined 05:33 jpn joined 05:38 jpn left 07:02 jpn joined 07:07 jpn left 07:33 sorenson left 07:35 sorenson joined 08:06 dakkar joined 08:24 lichtkind joined 09:18 lizmat_ joined 09:21 lizmat left, lizmat_ left, lizmat joined 09:23 jpn joined 09:54 jpn left 10:02 greenfork left, thatonelutenist left, greenfork joined, thatonelutenist joined 10:16 donaldh left 10:21 Aedil left 10:26 Aedil joined
tbrowder yep, trimming down is helpling though. the repo is on github, and my trim-down is in a new test file... 11:23
giving up on trimming. repo github:tbowder/Mi6-Helper, git branch "next-ver", test is in subdir "bad" 12:31
antononcube This link should work: github.com/tbrowder/Mi6-Helper/tre...xt-ver/bad 12:36
tbrowder thnx
wonder if chatgpt could convert my old perl website to raku and cro--that would be really cool! 12:38
antononcube It can, but proper prompts have to be used. Probably example conversions too. 12:39
I am having a similar use case -- converting R/Shiny interactive interfaces to Raku/HTMX. 12:40
tbrowder yes, i was really impressed how it produced the code from my pretty decent directives 12:41
antononcube The promptCodeWriterX from "LLM::Prompts" is pretty good at producing good Raku code with the most recent LLMs. 12:44
tbrowder i'll take a look-see 12:45
glad to see someone using Text::Utils! 12:49
antononcube Yes, for the paragraph wrapping -- that is needed in Markdown files. 12:52
BTW, it can be replaced with an LLM function, but that is -- of course -- way too slow.
12:53 donaldh joined, donaldh left
tbrowder ref my current prob. it's not a real show stopper, desired output seems good, just frustrating i can't figure out why the exception is leaking out of dies-ok. 13:01
lizmat perhaps because it returns a Faiilure, that then throws outside of the dies-ok ? 13:02
tbrowder i've tried a little to CATCH but no luck. 13:03
lizmat where did you put the CATCH ? 13:04
tbrowder in code below where the code is about to die from finding an existing directory 13:05
i did a try {} around that chunk, but my catch foo is seriously weak and foggy 13:06
so my prog drives mi6. mi6 will fail if there is an existing dir it wants to create. 13:08
13:08 jpn joined
tbrowder i have tried (1) letting mi6 do the failure and (2) letting my code test and throw before mi6 is executed. 13:10
13:13 jpn left
tbrowder it's ugly, but i'll try them both with CATCH today sometime 13:14
13:22 jpn joined 13:29 donaldh joined
tbrowder antononcube: what i really want to do is convert my old website to using cro behind an apache front end 13:30
13:31 donaldh left 13:32 lichtkind left
tbrowder the site is mostly static, but it does need a secure password capability. right now it uses private ssl certificates, but my old target users now aren't comfy with that. 13:34
13:38 lichtkind joined 13:42 donaldh joined
antononcube How about using "Humming-Bird" instead of "Cro"? Maybe, it fits better your website implementation/design/ 13:43
13:49 jpn left
ugexe tbrowder: you seem to be overlooking either the difference between a failure and an exception 14:19
essentially your `run` returning non-0 will give you a failure that you need to have an exception raised for the dies-ok 14:20
m: use Test; my $foo; dies-ok { $foo = run("asdfasfd"); sink $foo }
camelia ok 1 -
ugexe m: use Test; my $foo; dies-ok { $foo = run("asdfasfd"); }
camelia not ok 1 -
# Failed test at <tmp> line 1
ugexe to your point i'm not sure why it needs to be sunk explicitly though 14:21
i guess because the return value is a Proc object that emulates a failure or something, instead of being a Failure object 14:22
m: use Test; dies-ok { fail 42 };
camelia ok 1 -
ugexe for instance that works as expected
lizmat and yet another Rakudo Weekly News hits the Net: rakudoweekly.blog/2025/04/15/2025-15-in-place/ 14:52
antononcube @lizmat Thank you for the new blog post! You mentioned the update of "Lingua::NumericWordForms" twice. 15:09
(Fine with me, but some might be puzzled.) 15:10
lizmat thanks for the headsup, fixed
15:30 jpn joined
tbrowder ugexe: thnx, and you are right, i do not know diff between Failure and an Exception 16:39
docs to me are a bit confusing on the diff and how to handle that. 16:41
16:41 dakkar left
tbrowder i know you helped me with one case a couple of yrs ago, but this one does seem diff 16:42
melezhik. . 16:44
tbrowder i’ll look at skaji’s code a bit closer 16:48
16:48 jpn left
grondilu Hi 16:53
I'm not too happy with the way I caught csi codes for my chess module. Is there any chance I could find idiomatic code to do that?
ugexe tbrowder: for the sake of what you are doing you can workaround the issue by sinking any Proc object inside dies-ok and lives-ok, i.e. `dies-ok { $proc = run(...); sink $proc; }` 16:54
grondilu m: $*IN.print: "foo"; say "got `{get() // "nothing"}`" 17:02
camelia Failed to write 3 bytes to filehandle: Bad file descriptor
in block <unit> at <tmp> line 1
17:52 abraxxa-home joined 18:00 DarthGandalf left 18:01 DarthGandalf joined 18:06 vrurg left 18:10 vrurg joined
[Coke] m: $*IN.say: "OH HAI" 18:23
camelia Failed to write 7 bytes to filehandle: Bad file descriptor
in block <unit> at <tmp> line 1
[Coke] ... that works on the command line here. weird. 18:24
I would expect it to always fail.
timo not necessarily 18:32
your fds may be different than what you expect
if you have a TTY, often times stdin, stdout, and stderr are just clones and they are all the pty
but camelia most probably doesn't have a PTY 18:33
18:41 melezhik joined
melezhik o/ 18:41
anyone familiar with the business who's owner created this post about porting Rust to Raku/Perl ? fedi.seriousbusiness.international...RcQUBcxG4W
I am just curious
has known about this from today's RW 18:42
[Coke] news to me 18:43
melezhik oh, I get something after a bit googling - seriousbusiness.international 18:44
they say there - "Government agency grade* link redirection software (written in Raku for highest resource consumption)"
ugexe sounds fake as hell
melezhik among their services
[Coke] Searching for that name on google gits some hits about it being a fake/insult name for Elon Musk. 18:45
melezhik and their link from that, but I am not going to "spam" the channel with some unchecked stuff, anyways,
ah, ok - may they just utilize the Raku name? 18:46
[Coke] Sounds like the whole thing is fake, honestly.
melezhik may -> maybe
ugexe i think i broke their hyperlink application by entering ././.htaccess as the url 18:47
it doesnt load anymore 18:48
melezhik oh )
ugexe Government agency grade
i think its all LLM generated or something
[Coke] agreed. 18:49
lizmat: I'd remove the link to "why we rewrote..." - seems bogus 18:50
melezhik yeah, probably ... why LLM related stuff recently seems associated with Raku? Just wondering )) 18:51
lizmat wonder if Dr. Leon Kums is an anagram for something
[Coke] lizmat: "Elon Musk"
lizmat heh
duh
melezhik oh, yeah, that's right 18:52
lizmat removed
I should have seen that, sorry 18:54
melezhik I have a steady progress with helping Rocky linux team starts using Raku/Sparky/Sparrow for their internal tasks, so let's see . We've already tested for some use cases ...
lizmat: that's ok, I also bought into it )))
this is why btw I asked recently about RPM install support for Rakudo 18:55
lizmat afk& 18:56
melezhik irclogs.raku.org/raku/2025-04-14.html#17:31
timo well, nine is working with opensuse, so there's a bunch of rpm-related stuff available for rakudo right? 18:57
melezhik yeah, but I referenced to github.com/nxadm/rakudo-pkg 18:58
I guess the project is supported , right ?
.seen nxadm
tellable6 melezhik, I haven't seen nxadm around, did you mean nadim?
grondilu I'm trying to use $*IN.Supply and I can't make it work as I want. It seems to block until EOF. Why? Isn't it a supply, working asynchronously or something? 18:59
gist.github.com/grondilu/dc94f3612...4c208af4c3
I mean it works if I wrap $*IN.Supply inside a start block, and tap it to emit the value by a supplier. 19:06
as in revision 2 of the gist above.
that seems overly complicated.
[Coke] by default $*IN is buffered, I do not think there's a way to say "don't buffer on input" - for output there out-buffer=0 19:07
there *is* 19:08
grondilu well there is raw mode
melezhik .tell El_Che: - could you please follow up on that irclogs.raku.org/raku/2025-04-14.html#17:31 ? thanks!
tellable6 melezhik, I'll pass your message to El_Che
grondilu I've tried with it and it didn't change anything
grondilu tries again with raw mode from Term::termios
19:14 melezhik left 19:15 Aedil left
ugexe grondilu: see github.com/rakudo/rakudo/issues/24...-435531319 19:21
timo Terminal::LineEditor uses a start block where it reads one byte at a time from the input file descriptor, and if you don't "makeraw" it first, you'll get at least line-buffering i think 19:26
grondilu ugexe: noted, thanks. 19:27
so $*IN.Supply is out, then. I suppose I have to make my own supply which would emit bytes from its own thread. 19:30
timo grondilu: github.com/japhb/Terminal-LineEdit...kumod#L373 19:31
grondilu I see this repo depends on Terminal::ANSIParser. I guess I should look this up, as catching ANSI escape codes can't be much different than catching CSI ones. 19:39
timo it does parse CSI sequences i think? 19:41
grondilu it does indeed. good news. 19:42
timo highly recommend checking all the things japhb's got, there's many a terminal-related thing 19:45
19:47 jpn joined
grondilu indeed again. 19:53
tbrowder ugexe: are congrats due on yr zef upgrade to ver 1.0.0? that's a giant leap in versions, although the auth: looks different 20:00
timo the auth reflects which source you got it from 20:01
well, at least when it comes from an ecosystem i think?
20:06 notna joined 20:14 jpn left
japhb Awww, thanks for the free advertising, timo! ;-) 20:16
timo :3
20:46 abraxxa-home left 20:47 abraxxa-home joined, abraxxa-home left 20:48 abraxxa-home joined 20:56 abraxxa-home left 20:57 notna left 21:17 jpn joined
grondilu japhb: your Terminal::ANSIParser seems exhaustive but complicated to use. Like I'm trying the most basic form `my &parser := make-ansi-parse emit-item => { note .raku }; loop { &parser($*IN.read(1)[0]) }` and it does not stop on EOF. I don't get it. 21:27
*make-ansi-parser
21:27 jpn left
grondilu shouldn't it stop on EOF? It keeps emiting zeros. 21:28
japhb You're forcing it to keep going with loop {}. At EOF the parser would pass on the undefined value it receives, as a marker. It doesn't use a control exception. 21:30
grondilu but shouldn't read block? I thought it was blocking. 21:31
japhb What would it be waiting for if the input already shut down? 21:33
grondilu yeah I guess I did not realize I don't know how read behaves when stdin is closed.
hum it seems that what I need to look at is your Terminal::Print::DecodedInput 21:46
japhb Yeah, that's an older version of the logic that got rearranged and improved into Terminal::ANSIParser and bits of Terminal::LineEditor. 21:48
Still functional for what it needs to do. :-)
(FWIW, the driving impetus for that rewrite is that I needed to be able to support *querying* the terminal, which meant that I really needed more brains in the code than the simplistic method that T::P::DI uses.) 21:50
grondilu T::P::DI seems to come more in 'batteries included' form, though. As it has code to actually set stdin in raw mode and create a supply and so on. 21:51
though maybe Terminal::LineEditor has that? 21:52
well surely, but it's likely hidden in much more code that I don't need 21:53
japhb grondilu: Yeah, T::LE has all that. And the core of that is used to make Terminal::Widgets work.
No worries. If T::P::DI was unusable, I'd fix it. It works for the basic use cases. And it's about as simple as I could manage at the time. :-) 21:54
Plus if you're doing terminal work, you're probably depending on T::P at some point anyway. 21:55
(There are certainly folks that avoid it entirely, but ... :shrug:)
21:56 jpn joined 21:58 jpn left
grondilu so far I've been using Term::termios to make stdin raw but I see you used Terminal::MakeRaw 21:59
which I don't find on raku.land 22:00
found it 22:01
ah maybe Terminal::LineEditor::RawTerminalInput 22:07
this is some impressive work, ngl 22:12
japhb Thank you! :-) 22:14
tbrowder ugexe: i looked at the App::Mi6 code and see lots of plain "die"s. i tried the "sink $proc" on lives-ok and dies-ok. no diff on lives-ok, dies-ok still fails. 22:24
i counted 51 "die" instances. 23:06
in mi6 code 23:07
23:09 japhb left
ugexe you shouldnt have to change anything in App::Mi6 23:12
After this line -- github.com/tbrowder/Mi6-Helper/blo...-dir.t#L33 -- add `sink $proc;` and also `say $proc.raku;` (for debugging purposes) 23:14
grondilu japh: I'm trying `my Terminal::LineEditor::CLIInput $term .= new; $term.enter-raw-mode; my @dim = await $term.detect-cursor-pos; $term.leave-raw-mode; say @dim;`, and seemingly nothing happens until I press enter. Only then I can see the cursor position report was correctly parsed.
23:14 sdomi left
grondilu I mean I thought the point of raw mode was that I would not need to press enter. 23:15
23:15 sdomi joined
tbrowder wow! i finally got it to work. i put my own die just ahead of @skaji's expected "die" and it fired and was caught by dies-ok. as @lizmat and @ugexe pojnted out there must have been a subtle error that was procedural rather than semantic and i just kept not seeing it. i can sleep better tonight. 23:21
23:22 Sgeo joined
tbrowder ah, what did it for the dies-ok was not using $p = run.., but just "run..." 23:26
as was suggested by ugexe. weird, but "whatever" 23:27
23:32 japhb joined