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
|