librasteve i was curious to see where gmark (goldmark) used in raku.land ... looks like it is used on the ingestion to load GH [README.]md into the db where is stored as HTML-AND-JAVASCRIPT, so the database query and views are 100% raku ... guess would be even nicer if someone implemented goldmark as a Raku module / grammar 00:25
00:49 Guest45 left
[Coke] trying to run raku.land on an azure vm - anyone run it recently? 00:50
app-1 | Failed to open file /app/esbuild.json: No such file or directory 00:54
01:25 Aedil joined 01:47 hulk joined 01:48 kylese left 02:15 hulk left 02:16 kylese joined 02:29 jmcgnh left 02:47 jmcgnh joined 03:09 guifa left 03:28 guifa joined 03:53 guifa left 05:00 elcaro left, elcaro joined 05:09 simcop2387 left, perlbot left 05:30 Sgeo left 06:34 [Coke] left 06:45 jjido joined 07:25 jjido left 07:31 jjido joined 08:12 dakkar joined 08:31 [Coke] joined 08:49 jjido left 09:26 leah2 left 09:28 sena_kun joined 09:39 leah2 joined 10:28 simcop2387 joined 10:30 perlbot joined
tbrowder question on public distro modules just to be sure: for distro "Foo::Bar", there should not be a "Foo::Utils", instead, make it "Foo::Bar::Utils" (to avoid zef name confusion with another "Foo::Utils" 11:08
or does the :auth take care of that? 11:09
lizmat yes 11:29
at least if you specify :auth in your use statement
12:27 jjido joined
tbrowder ok, so best practice is NOT to do that 'cause you can't control random users 12:43
thnx
or at least run a zef check on the universe 12:45
Geth ecosystem/main: 61ec26cf13 | (Elizabeth Mattijsen)++ | META.list
Remove Alma

It is a research project that doesn't keep any version info
12:56
13:12 jjido left 13:23 ptc joined
ptc Hi everyone! 13:24
Silly question time: I'm trying to install the RandomColor module but I'm getting an odd error with tar inside zef 13:25
Here's the error: [xxirakup6-RandomColor] Extracting with plugin Zef::Service::Shell::tar aborted.
something went wrong extracting /tmp/.zef.1727961859.2747263/1727961868.2747263.4512.708377797458/1c7bb4daea2cfc8ba078b21d3816952f1417fcd3.tar.gz to /tmp/.zef.1727961859.2747263/1c7bb4daea2cfc8ba078b21d3816952f1417fcd3.tar.gz with Zef::Service::Shell::git<4454462406712>,Zef::Service::Shell::tar<4454304166240>,Zef::Service::Shell::unzip<4454484978528>,Zef::Service::FetchPath<4454484978560>
any idea what the actual problem is there?
I was able to open the tarball and the contents look ok. It's not clear why things are failing though :-/
One thing that I noticed is that the module's name looks weird: xxirakup6-RandomColor. It's almost as if someone tried to replace `p6` with `raku` in vim. 13:26
The project itself had been renamed from p6-RandomColor to raku-RandomColor at some stage, but the project's metadata still uses p6-RandomColor. 13:27
I've submitted a pull request to fix that, so issue will hopefully get fixed at some stage 13:28
antononcube @ptc I do not see "RandomColor" in raku.land. 14:00
ptc antononcube: weird, zef can find it and `zef install RandomColor` downloads its tarball and tries to install it 14:07
[Coke] ugexe: `zef info RandomColor` is giving an unitialized value error at Zef::CLI line 873 14:09
raku.land/?q=randomcolor 14:10
antoncube - you won't find it with an exact match
I also get the tar error. 14:11
opening a ticket with zef
oh. the tar file does NOT work here, ptc - it's got paths with .. in them. 14:15
I'd open a ticket for that on the module author. Guessing however they packaged it for fez might be suspect. 14:16
er, on the module itself.
x dist/../p6-GtkPlus/scripts/select-security-group-names.sql: Path contains '..': Unknown error: -1 14:19
Xliff, ptc: github.com/Xliff/raku-RandomColor/issues/8 14:24
14:24 Sgeo joined
ugexe it also has ` "support": {"source": null},` 14:42
that is the cause of the message you see from running `zef info RandomColor`, which is different from the tar file issue 14:45
ptc Coke: cool, thanks for looking into that! 14:46
[Coke] ugexe: is it arguable that zef should treat nulls in the json as "" ? 14:47
ugexe no, similar to how treating undef as "" in general can be seen as undesireable
such things should be caught in a check before a given ecosystem indexes it though 14:51
tbrowder question on use of Proc::Async: if i send it an external program that has sequential subprograms and its own assembly of the results, can that be handled with multiple threads by Proc::Async? 15:06
antononcube @tbrowder If the external program gives an API for that, you should be able to gather results with, say, race (and combine them yourselv.) 15:19
Xliff [Coke] - Thanks. Do you need a quick turnaround or will the weekend work? 16:17
OK, I've uploaded another module to zef. Anyway to find it in the index? 16:23
[Coke] xliff - I'm fine, was reporting for ptc. 16:30
Xliff: it installed, but with a warning: gist.github.com/coke/72a686a865aca...aa567b8092 16:31
16:32 dakkar left
timo that error often comes from using ::("Doesnt::Exist") and not checking the result in a way that clears the "explosive" flag on the Failure 16:41
16:42 lizmat_ joined
timo this is the relevant two lines: try require ::('Color'); $color-support = ::('Color') !~~ Failure; 16:42
16:45 lizmat left
Xliff timo: What's wrong with those? 16:52
$color-support = ( ::('Color') !~~ Failure ).so? 16:53
[Coke] I use if (try require Thing) === Nil { ... } 16:55
github.com/coke/raku-zef-deps/blob...akumod#L87
timo i don't actually know the correct recommended way to do that, but i'm assuming coke's suggestion is good and works. all i know is you got that warning 17:00
nahita3882 the docs suggest that too docs.raku.org/syntax/require 17:05
ptc Xliff: from my side there's no need for a quick turnaround. Thought maybe I'm doing something silly and the issue might already be known.
nahita3882 docs also mention the "wrong" way which the current code uses, I wonder if they looked at the docs and assumed that first (wrong) snippet is the correct one without further looking :y
very humanely possible (no offense intended) 17:06
timo i would expect that wasn't in the docs when the code was written 17:11
alternatively, taken from another module at the time
17:14 lizmat_ left 17:15 lizmat joined
Xliff Note that the current code uses the right way, according to the docs. Look again. 17:42
m: try require ::("Colors"); if ::("Colors") ~~ Failure { say "Boo!" } 17:43
camelia Boo!
timo m: use nqp; sub do-it { try require ::("Colors"); if ::("Colors") ~~ Failure { say "Boo!" }; say "done" }; for ^10 { do-it; nqp::force_gc }; nqp::force_gc 17:44
camelia Boo!
WARNING: unhandled Failure detected in DESTROY. If you meant to ignore it, you can mark it as handled by calling .Bool, .so, .not, or .defined methods. The Failure was:
No such symbol 'Colors'
in sub do-it at <tmp> line 1
in block <un…
Xliff So it's an issue when the Failure object is hits DESTORY? 17:45
There's nothing about that in the docs.
timo yeah that is in the part of the docs that says it's correct, huh 17:46
the problem is when the failure is not disarmed by a proper check
Xliff And the proper check looks like?
m: use nqp; sub do-it { try require ::("Colors"); if ( ::("Colors") ~~ Failure ).so { say "Boo!" }; say "done" }; for ^10 { do-it; nqp::force_gc }; nqp::force_gc 17:47
camelia Boo!
WARNING: unhandled Failure detected in DESTROY. If you meant to ignore it, you can mark it as handled by calling .Bool, .so, .not, or .defined methods. The Failure was:
No such symbol 'Colors'
in sub do-it at <tmp> line 1
in block <un…
timo i'm not sure
i wonder if the try require makes one failure and the ::("Colors") ~~ Failure gets a distinct one 17:48
Xliff Ah! OK. As you can see, .so did not do it.
17:48 Aedil left
timo yeah i'm experimenting on the side as well 17:48
Xliff I don't think it would be ::("Colors").so, because that would always be false. It's a type object. 17:49
timo m: use nqp; sub do-it { if (try require ::("Colors")) ~~ Nil { say "Boo!" }; say ::("Colors").so; say "done" }; for ^10 { do-it; nqp::force_gc }; nqp::force_gc;
camelia Boo!
False
done
Boo!
False
done
Boo!
False
done
Boo!
False
done
Boo!
False
done
Boo!
False
done
Boo!
False
done
Boo!
False
done
Boo!
False
done
Boo!
False
done
Xliff Yea, but ::("Colors") would return the class Object if Colors was a class and not a package, which most of my stuff is. 17:50
timo m: use nqp; sub do-it { if (my $colors = try require ::("Colors")) ~~ Nil { say "Boo!" }; say ::("Colors").so; say "done"; $colors }; for ^10 { do-it; nqp::force_gc }; nqp::force_gc; 17:51
camelia False
done
False
done
False
done
False
done
False
done
False
done
False
done
False
done
False
done
False
done
timo the docs need fixed it looks like 17:54
Xliff m: ::("Int").so.say
camelia False
Xliff m: Int.so.say 17:55
camelia False
timo yeah don't use the .so part of that 17:59
Xliff timo: Well *I* know that, but that's what the warning says to do. 18:10
Is it now LTA?
:)
18:21 Chanakan left 18:24 Chanakan joined
[Coke] (docs) please open a ticket 18:45
thanks!
timo m: use nqp; sub do-it { try require ::("Colors"); my $another = ::("Colors"); say $another.so; if $another ~~ Failure { say "Boo!" }; say "done" }; for ^10 { do-it; nqp::force_gc }; nqp::force_gc 18:51
camelia False
Boo!
done
False
Boo!
done
False
Boo!
done
False
Boo!
done
False
Boo!
done
False
Boo!
done
False
Boo!
done
False
Boo!
done
False
Boo!
done
False
Boo!
done
timo ^- you can disarm it by calling .so, you just have to do it for every Failure object that gets generated
m: use nqp; sub do-it { try require ::("Colors"); my $another = ::("Colors"); say $another.so; if ::("Colors") ~~ Failure { say "Boo!" }; say "done" }; for ^10 { do-it; nqp::force_gc }; nqp::force_gc
camelia False
WARNING: unhandled Failure detected in DESTROY. If you meant to ignore it, you can mark it as handled by calling .Bool, .so, .not, or .defined methods. The Failure was:
No such symbol 'Colors'
in sub do-it at <tmp> line 1
in block <u…
timo ^- here i think what happens is you get a distinct Failure object the second time you mention ::("Colors") and if you only ~~ Failure that one, it slips through 18:52
i guess ~~ Failure is not meant to disarm it, because then there wouldn't be a way to find out if something is a failure without also disarming it, like if you want to pass it on to your caller 18:53
18:54 johan994 joined
johan994 Hi -- is there any way to reference a class method? 18:55
A subroutine sub x {} may be referenced by &x -- is there any such way to reference a method?
timo you retrieve it with the MOP, or create a callable that calls the method on the object for you 19:00
there's $thing.^find_method for the first 19:01
johan994 Ah, yeah, thanks -- I was hoping there was a third way to do it that was both checked at compile-time and returned a reference to the method, comparable with another method reference. 19:04
find_method does the second part, but it feels a bit ugly compared to &x, and it's not checked at compile time 19:05
timo well, classes and methods are quite dynamic in raku 19:06
but you can do anything you want at compile time with BEGIN 19:07
so you can do the setup earlier and get compile time errors if something's wrong, like when the method doesn't exist on the class you're expecting it on 19:08
but then if you get an instance from a subclass that has a different implementation of the method you won't get that
i guess to give a better answer i'd need more context? 19:09
johan994 hm, yeah, great points 19:12
ideally I'd like a macro that does BEGIN { Class.^lookup('static-string') // Exception.new.throw } 19:16
but i might be better off solving it in some other way 19:18
basically i have a class exported by a package, to whose methods i'd like to create references, preferably in a type-checked way 19:19
the class and its methods being defined in a class, i could of course export the method references from the class. i might do something like that 19:21
timo maybe what you actually want is a package with subs in it? 19:22
johan994 hah -- you're right! i definitely need the class, but the methods i actually want to reference might just as well be subroutines... 19:25
[Coke] there is also ^.can 19:26
er, .^can 19:27
timo and if you like dance, .^can.^can
19:53 japhb left 19:58 johan994 left
tbrowder antononcube: thanks. a good working example would make a great blog post 20:03
ptc Xliff, timo: thanks for looking into that so thoroughly! I didn't think my question would cause quite such an avalanche 20:14
timo haha 20:23
20:24 japhb joined
Geth docker: AntonOks++ created pull request #70:
update_release.yml: Add initial release
20:51
docker: e0c005da9a | AntonOks++ | .github/workflows/update_release.yml
update_release.yml: Add initial release

Keep this Docker repo in sync with the published rakudo.org releases
20:52
docker: 741f52d03c | (Anton Oks)++ (committed using GitHub Web editor) | .github/workflows/update_release.yml
Merge pull request #70 from AntonOks/master

update_release.yml: Add initial release
20:58 ptc left
Geth docker: AntonOks++ created pull request #71:
test-docker-image.yml: Add "on.[push,pull_request].paths"
21:04
docker: 7a2756df1a | AntonOks++ | .github/workflows/test-docker-image.yml
test-docker-image.yml: Add "on.[push,pull_request].paths"
docker: 86a8c76df6 | (Anton Oks)++ (committed using GitHub Web editor) | .github/workflows/test-docker-image.yml
Merge pull request #71 from AntonOks/master

test-docker-image.yml: Add "on.[push,pull_request].paths"
21:10 leah2 left
Geth docker: c2a2720a8b | AntonOks++ | 4 files
Bump to 2024.09 [skip workflow]
21:11
21:15 wayland76 joined
wayland76 .tell librasteve we'd also have to get the grammar to do whatever Chroma does with syntax highlighting, but agreed. 21:18
tellable6__ wayland76, I'll pass your message to librasteve
21:22 leah2 joined
wayland76 Is there any better documentation on how to configure --help on a script? I found a hint on docs.raku.org/language/create-cli and looked at docs.raku.org/language/pod for further info, but didn't find any. 21:34
Also,
Also, a weakness I noticed in the Pod6 documentation is that it never says what the use of things like #= are (I only just discovered it now while looking up --help, but when I was writing Pod earlier, it would've been nice to know. HTH, 21:35
Xliff johan994: Can you write something to illustrate what you mean? 21:36
tellable6__ Xliff, I'll pass your message to johan994
Xliff m: class A { has %.methods; submethod BUILD { for self.^methods { %!methods{ .name } = $_ }; method a { }; method b { }; method c { }; }; A.new.methods.keys.gist.say 21:37
camelia ===SORRY!=== Error while compiling <tmp>
Missing block
at <tmp>:1
------> od c { }; }; A.new.methods.keys.gist.say⏏<EOL>
expecting any of:
statement end
statement modifier
statement modifier loo…
Xliff m: class A { has %.methods; submethod BUILD { for self.^methods { %!methods{ .name } = $_ }; }; method a { }; method b { }; method c { }; }; A.new.methods.keys.gist.say
camelia (BUILDALL BUILD c a b methods)
wayland76 A question: My raku module is storing the library files in lib/raku. When I try to install it, the installation script expects them to be in lib/ and not lib/raku. Is there an easy way to adjust where this will be looked for (eg. something I can set in META6.json), or do I need to change everything to just use lib instead? 21:44
21:50 Xliff left
timo the META6.json has the path of every file in it, just change them there 21:51
i'm not sure what you mean by "installation script" though 21:53
22:40 sena_kun left 23:12 wayland76 left