🦋 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:06 LainIwakura joined 00:45 lichtkind left 01:14 hulk joined, kylese left 02:15 hulk left, kylese joined 03:11 stanrifkin_ joined 03:14 stanrifkin left 03:45 kylese left 03:48 kylese joined 03:56 derpydoo joined 05:25 LainIwakura left 05:34 SpaceRobot joined
SpaceRobot 0 Hello robots...... 05:34
05:37 lizmat_ joined 05:41 lizmat left 06:02 derpydoo left 06:10 LainIwakura joined 06:21 SpaceRobot left 06:22 LainIwakura left 06:24 Aedil joined 06:37 derpydoo joined 06:39 derpydoo left 06:40 LainIwakura joined 06:44 LainIwakura left 09:46 Geth joined 10:39 sjm_ left
wayland .tell ab5tract: The changes to the Distribution/Resource writeup are in a PR at github.com/Raku/doc/pull/4570 (you may not be that keen, but thought I'd mention it) 10:58
tellable6 wayland, I'll pass your message to ab5tract
wayland Do we still have a karma bot? 11:00
lizmat don't think we do, but we haz logs and a search engine on the logs... 11:07
wayland Was that intentional, or did it just fall by the wayside? 11:16
lizmat I think the latter... 11:18
but since we haz the logs, we could get one up and running again, and feed it all the karma back to 2005 if one feels that to be necessary 11:19
antononcube I uploaded with fez a new version of "WWW::OpenAI" , version 0.3.6, and still do not see it in raku.land and 360.zef.pm . 12:03
Anyone else having that problem?
wayland antononcube: I've had it take a fair while before. 12:41
lizmat: Cool :) . 12:42
antononcube @wayland Ok. But it is already 11+ hours since I uploaded it. 🙂 12:44
wayland I don't think I've had any go longer than 2h. 12:50
antononcube 😭 13:00
13:16 grondilu joined
grondilu Hello. Is mixing a parametric role supposed to be expensive? I used one in my Chess module and lost a lot of performance. 13:17
see github.com/grondilu/chess/commit/f...862f85998c 13:18
vasko librasteve: The reason `PUT /task/1/done` and `DELETE /task/1/done` is more HTMX & REST over `GET /task/1/toggle` is that the former is more uniform. With a `GET /task/1/done` subresource to check if it's done. It also has the benefit of being declarative and idempotent. The `/toggle` is basically RPC. And as you already mentioned if you want a 13:44
`/task/1/toggle` you want `POST` for XSS, preloading & caching reasons.
librasteve: The other approach is not to use a subresource, you can also do a form which does a `PUT /task/1` with an `done` key in the body. 13:46
14:00 wayland left, wayland joined
ugexe i dunno if mixing in a parametric role is supposed to be expensive, but it certainly feels intuitive that it would be the fastest/cheapest thing 14:10
that it would not be the fastest/cheapest thing rather
14:12 wayland left, wayland joined
SmokeMachine vasko: I’m thinking about that, and maybe doing something like this would make that possible: `multi method done is accessible{:http-method<PUT>) { $!done = True }; multi method done is accessible{ :http-method<DELETE> } { $!done = False }`. I don’t think this would work now (because, if I remind it correctly, I save use the method name instead of the method it self) but I think that might be implementable… 14:21
14:21 wayland left, wayland joined
SmokeMachine And it should work for any set of http methods… 14:22
vasko SmokeMachine can you make `done` a cromponent too? 14:28
14:31 Sgeo joined
Voldenet grondilu: Is mixin always being slow or just when using parametrized role with it? Because I'm suspecting that github.com/rakudo/rakudo/blob/main...ns.nqp#L65 gets called for any parametrized value 14:32
in general I'd expect specialization/monomorphization be slow, but I was wondering which part was slower 14:35
m: role SAN[Str $san] { method SAN { $san } }; my $start = now; for ^1000 { my $w = "a" but SAN["bleh"]; }; say now - $start # parametrized role 14:43
camelia 0.008457542
Voldenet m: role SAN { has $.san; method SAN { $.san } }; my $start = now; for ^1000 { my $w = "a" but SAN.new(san => "bleh"); }; say now - $start # non-parametrized role 14:44
camelia 0.564101691
Voldenet m: my $start = now; for ^1000 { my $w = "a" but role { has $.SAN = "bleh" }; }; say now - $start 14:45
camelia 0.082737783
Voldenet fascinating
SmokeMachine vasko: sorry, what do you mean by making it a Cromponent? How would you use that?
Voldenet however 14:47
m: role SAN[Str $san] { method SAN { $san } }; my $start = now; for ^1000 { my $w = "a" but SAN["bleh" ~ $_]; }; say now - $star
camelia ===SORRY!=== Error while compiling <tmp>
Variable '$star' is not declared. Did you mean '$start'?
at <tmp>:1
------> "a" but SAN["bleh" ~ $_]; }; say now - <HERE>$star
Voldenet m: role SAN[Str $san] { method SAN { $san } }; my $start = now; for ^1000 { my $w = "a" but SAN["bleh" ~ $_]; }; say now - $start
camelia 0.735249532
Voldenet So, parametrization takes a lot of time if it doesn't hit the cache 14:48
and mixin fails to hit the cache for different specializations it seems
14:52 wayland left, wayland joined
[Coke] 'rakubrew build-zef' gave me Building zef latest but then HEAD is now at f924b1f Bump version 0.22.8 14:56
missing a fetch or something? (shouldn't that be 2c6ab9f?) 14:57
ugexe i think that shows what version the local clone is currently at 14:58
and it gets updated *from* that version to whatever 14:59
[Coke] looks like you need 'rakubrew self-upgrade' in there to update that zef clone 15:02
ugexe: if I have items in test-depends, but try to run with --/test, 'zef install --deps-only --/test .' does nothing - Is there a way to say "I want to install my test dependencies but not test the deps themselves"? 15:07
ugexe `--/test --test-depends` maybe 15:10
along with --deps-only
Voldenet m: my $start = now; for ^1000 -> $i { my $w = "a" but role { has $.SAN = "bleh" ~ $i }; }; say now - $start # for completion 15:11
camelia 0.063507467
ugexe yeah - github.com/ugexe/zef/blob/2c6ab9ff...kumod#L405
[Coke] nice, thanks! 15:13
(raku/doc is just a weird repo, can't imagine anyone else wants this particular combo. :)
antononcube .seen patrickb 15:16
tellable6 antononcube, gist.github.com/6d3c66c82f1f4ac72b...028253488a
15:18 human-blip left 15:20 human-blip joined 15:22 wayland left 15:23 wayland joined
Voldenet grondilu: I've compared profiles and with `$move but SAN[…variable…]` roughly the same time is taken by ParametricRoleGroupHOW.parametrize and Mixins.mixin – `$move but role { has $.SAN = … }` is orders of magnitude faster 15:29
vasko SmokeMachine Like if you made `done` a cromponent within `Task`, then `done` would could routes `GET/PUT/DELETE /task/$id/done`. If you do `GET /task/1/done` you would get a 200 or a 404 indicating if whether the done subresource exists. 15:32
Voldenet generate_mixin is called every time, but it isn't slow
15:33 wayland left, wayland joined 15:40 wayland left, wayland76 joined 15:49 Aedil joined 15:53 wayland76 left, wayland joined 16:14 wayland left, wayland joined 16:24 wayland left, wayland joined
SmokeMachine vasko: but how would the RENDER method for done work? I’m not getting how would work done as a component… 16:31
16:43 wayland left 16:44 wayland joined 16:52 Sgeo_ joined 16:55 Sgeo left, wayland left 16:56 wayland joined 17:36 wayland left, wayland joined 17:50 wayland left 17:51 wayland76 joined, wayland76 left, wayland76 joined 18:56 kst`` left
antononcube So, who can fix fez ? 🙂 I do not see 'WWW::OpenAI:ver<0.3.6>" in 360.zef.pm , but it try to upload version I get an email that I have to bump the package version. 19:00
19:03 kst`` joined
SmokeMachine wayland76: hi! Just to let you know I have answered your Red issue. 19:06
ab5tract Voldenet: that’s a really interesting finding. Can I trouble you to create a ticket for this so it doesn’t fall through the cracks? 20:28
tellable6 2025-05-02T10:58:13Z #raku <wayland> ab5tract: The changes to the Distribution/Resource writeup are in a PR at github.com/Raku/doc/pull/4570 (you may not be that keen, but thought I'd mention it)
patrickb antononcube: What's up? I'm usually following IRC pretty closely. Off to bed now, but type away! 20:32
wayland76 patrickb: He uploaded his module, but it's not appearing on raku.land, etc.
(not sure if that's what he wanted you for, but anyway :) ) 20:33
lizmat antononcube ping tonyo 21:51
antononcube fwiw, the REA didn't see it either yet
so that tracks
tbrowder lizmat: distro 'Pod::TreeWalker' might be the solution for my use case rather than the RakuAST route. Your touch in the 't/lib/TestWalker.rakumod' appears to be a very good example of how to collect desired data from pod. 21:55
antononcube .seen tonyo 21:59
tellable6 antononcube, I saw tonyo 2025-04-15T15:52:08Z in #raku-dev: <tonyo> then
antononcube @patrickb You asked for certain LLM processing of IRC logs. 22:11
wayland76 m: role Foo { method foo() {} }; say Foo.^methods(:all); 22:30
camelia (foo)
wayland76 Why doesn't that return all the methods from eg. Mu? 22:31
coranila m: role Foo {}; say Foo.new.methods(:all) 22:34
Raku eval Exit code: 1 No such method 'methods' for invocant of type 'Foo' in block <unit> at main.raku line 1
evalable6 (exit code 1) No such method 'methods' for invocant of type 'Foo'
in block <unit> at /tmp/gFtp5LXGSL line 1
coranila ah shucks, the caret! 22:35
wayland76: the point stands, you gotta pun to get an actual MRO; the role is not an object and as such does not know how to look for methods particularly well
m: role Foo {}; say Foo.new.^methods(:all) 22:36
Raku eval (permutations prepend max flat FLATTENABLE_HASH batch match throw-cannot-be-empty end nodemap fmt join Array AT-KEY maxpairs ACCEPTS splice produce roll List ASSIGN-KEY Bag SetHash tree BIND-KEY repeated none grep values ZEN-KEY print-nl unique are iterator lazy-if all pairup any Hash minmax elems BagHash keys serial fail-cannot-be-empty collate ASSIGN-POS push Slip reduce Seq antipairs sort Supply BIND-POS
combinations Mix AT-POS EXISTS-KEY Map iterator-and-first unshift Set slice nl-out cache FLATTENABLE_LIST deepmap duckmap pairs EXISTS-POS kv skip head DELETE-POS first DELETE-KEY rotor sum MixHash categorize chrs toggle tail minpairs squish map reverse throw-iterator-cannot-be-lazy pick append classify eager hash flatmap invert fail-iterator-cannot-be-lazy list min one ...)
evalable6 (EXISTS-KEY DELETE-KEY DELETE-POS cache list fm…
coranila, Full output: gist.github.com/9b72a888fb346ec102...2a4efcdceb
vasko SmokeMachine: it doesn't matter it could be an empty 200, a Boolean or some resource with information about when it was done, but we don't care too much. What we care is it exists or not. 22:37
22:37 wayland76 left
SmokeMachine vasko: but that’s the thing… for a component it should matter… a component, at least initially, is something to be shown on the browser… 22:43
22:45 wayland76 joined
wayland76 coranila: Thanks! 22:46
23:08 lichtkind left