00:19 zenmov joined
Geth advent/main: b3ea66ac69 | (Hillel Wayne)++ (committed using GitHub Web editor) | raku-advent-2024/authors.md
Add RAC article (#120)
00:33
01:25 guifa joined 01:29 Manifest0 left 02:03 zenmov left 02:11 zenmov joined 02:30 hulk joined, kylese left 02:33 _________ left 03:00 yewscion joined, kjp left 03:01 kjp joined 03:03 kjp left, kjp joined 03:06 yewscion left 03:15 hulk left, kylese joined 03:27 yewscion joined 03:33 yewscion left 05:23 zenmov left 06:20 Aedil joined 06:21 _________ joined 07:10 zenmov joined 08:43 kst joined
Geth advent/main: 136146c433 | ab5tract++ (committed using GitHub Web editor) | raku-advent-2024/authors.md
Add article on revision gating
08:53
Voldenet m: {} 09:04
camelia ( no output )
Voldenet also short, maybe not as short as 0
09:05 Manifest0 joined
Voldenet and empty does work with `raku -e ''` 09:05
09:20 dakkar joined 09:52 sena_kun joined 10:10 sena_kun left 10:17 MoC joined
Geth raku.org: pelanaut++ created pull request #226:
Atikon-Logo aktualisiert und mit www.atikon.com/ verlinkt
10:23
raku.org/main: 1ed6abbe5a | (Peter Lang)++ (committed by Elizabeth Mattijsen) | 2 files
Atikon-Logo aktualisiert und mit www.atikon.com/ verlinkt
10:24
11:44 Sgeo left 12:20 finanalyst joined 13:07 finanalyst left 14:46 librasteve_ joined
antononcube @lizmat I will play with "App::Ecosystems" soon. Should produce interesting package-dependency graphs. 15:35
Here is a such graph from 2022: imgur.com/33P7QmG 15:38
15:42 donaldh left 15:43 donaldh joined 15:44 pierrot left 15:45 pierrot joined, Ekho left, guifa left
I just filed a (low priority) metadata documentation issue to GitHub's repository for "App::Rak", which, I think, is a good idea to follow for all Raku package Git repositories. See: github.com/lizmat/App-Rak/issues/63 . 15:47
15:50 bdju left 15:51 bdju joined 15:53 Ekho joined
timo finanalyst.github.io/ModuleCitation/ do you know about this yet? 15:55
16:01 zenmov left
ugexe the graphs end in 2019 lol 16:20
timo there's a "fork me on github" button near the middle, presumably you can find a CI job there with some output or so? 16:22
16:47 MoC left
antononcube @ugexe I might have used some old or obsolete repository. 16:48
timo is REA a good primary source for this kind of information, or would the fez ecosystem be better? 16:54
antononcube @timo That kind of questions is why I proclaimed my anticipated use of lizmat's (new) "App::Ecosystems". 17:06
I.e. I hope that package to give "up to date" information. 17:07
timo makes sense, yeah 17:17
doing some analysis of historical data could be interesting at some point, too
antononcube I did such rudimentary analysis for a TRC-2022 presentation, but I was mostly focused on making/demoing a recommender for Raku packages. 17:21
17:32 dakkar left
botato I really like the interactive style of development supported by common lisp, or even to a decent extent python with autoreload/importlib.reload, where you can make changes to your code and run the new version without restarting the whole program and losing any state 18:55
it seems rakudo doesn't support reloading a module, is that something that long-term could be added, or just not possible for rakudo? 18:56
19:01 sena_kun joined
timo at first look, it seems tricky 19:01
but it depends a lot on what depth of "replacement" you expect from reloading a module
under what circumstances is it okay to abort and say "the before and after for $thing are not compatible enough for a hot reload"? 19:03
our metaobject protocol allows a fair bit of shenanigans, and if you are okay with "if you break it you get to keep the pieces" you can poke around in some internals with the ops that start with "nqp::" 19:06
ab5tract I wonde, how much of an obstacle is our current lack of a mechanism for parent classes to "inform" their child classes of augmentation? 19:07
in the broader context of hot reloading, I mean 19:08
timo right. okay, imagine we already had that, because i can think of a hacky way to do that that is very not fast and very not a good idea for production ...
ab5tract I think there might be interest in this even in the face of those concerns 19:09
I also wonder if we could leverage `:ver<>` in hot reloading efforts ... 19:12
timo m: class A:ver<1> { has $.foo }; class A:ver<2> { has Int $.foo }; say A.new(foo=>"hi"); 19:13
camelia ===SORRY!=== Error while compiling <tmp>
Redeclaration of symbol 'A'.
at <tmp>:1
------> s A:ver<1> { has $.foo }; class A:ver<2><HERE> { has Int $.foo }; say A.new(foo=>"hi")
expecting any of:
generic role
timo m: package First { class A:ver<1> { has $.foo }; }; package Second { class A:ver<2> { has Int $.foo }; }; say First::A.new(foo=>"hi"); say First::A.new() ~~ Second::A
camelia First::A.new(foo => "hi")
False
timo m: class PretendyClassHOW is Perl6::Metamodel::ClassHOW does Perl6::Metamodel::TypePretense { }; my $before_a := Perl6::Metamodel::ClassHOW.new_type(:1ver, :name("A")); $before_a.compose(); my $after_a := PretendyClassHOW.new_type(:2ver, :name("A")); $after_a.pretend_to_be([$before_a<>]); $after_a.compose(); say $before_a.new() ~~ $after_a; say $after_a.new() ~~ $before_a; 19:23
camelia ===SORRY!=== Error while compiling <tmp>
Invalid typename 'Perl6::Metamodel::TypePretense'
at <tmp>:1
------> sHOW does Perl6::Metamodel::TypePretense<HERE> { }; my $before_a := Perl6::Metamodel::
timo ah?
ab5tract could it be a bootstrap order issue? 19:24
timo i think that package is just not in scope
19:24 Aedil left
timo this is probably going to become too long for a single line of irc very fast 19:24
m: use Perl6::Metamodel:from<NQP>; class PretendyClassHOW is Perl6::Metamodel::ClassHOW does Perl6::Metamodel::TypePretense { }; my $before_a := Perl6::Metamodel::ClassHOW.new_type(:1ver, :name("A")); $before_a.compose(); my $after_a := PretendyClassHOW.new_type(:2ver, :name("A")); $after_a.pretend_to_be([$before_a<>]); $after_a.compose(); say $before_a.new() ~~ $after_a; say $after_a.new() ~~ 19:25
camelia ===SORRY!=== Error while compiling <tmp>
Missing required term after infix
at <tmp>:1
------> new() ~~ $after_a; say $after_a.new() ~~<HERE><EOL>
expecting any of:
prefix
term
timo $before_a;
dangit
that really was very fast
m: use Perl6::Metamodel:from<NQP>; class PCH is Perl6::Metamodel::ClassHOW does Perl6::Metamodel::TypePretense { }; my $a := Perl6::Metamodel::ClassHOW.new_type(:1ver, :name("A")); $a^.compose(); my $b := PretendyClassHOW.new_type(:2ver, :name("A")); $b.pretend_to_be([$a<>]); $b.^compose(); say $a.new() ~~ $b; say $b.new() ~~ $a; 19:27
camelia ===SORRY!=== Error while compiling <tmp>
Undeclared name:
PretendyClassHOW used at line 1
timo m: use Perl6::Metamodel:from<NQP>; class PCH is Perl6::Metamodel::ClassHOW does Perl6::Metamodel::TypePretense { }; my $a := Perl6::Metamodel::ClassHOW.new_type(:1ver, :name("A")); $a^.compose(); my $b := PCH.new_type(:2ver, :name("A")); $b.pretend_to_be([$a<>]); $b.^compose(); say $a.new() ~~ $b; say $b.new() ~~ $a;
camelia WARNINGS for <tmp>:
Useless use of "^" in expression "$a^.compose()" in sink context (line 1)
No such method 'compose' for invocant of type 'Any'
in block <unit> at <tmp> line 1
timo oops
m: use Perl6::Metamodel:from<NQP>; class PCH is Perl6::Metamodel::ClassHOW does Perl6::Metamodel::TypePretense { }; my $a := Perl6::Metamodel::ClassHOW.new_type(:1ver, :name("A")); $a.^compose(); my $b := PCH.new_type(:2ver, :name("A")); $b.pretend_to_be([$a<>]); $b.^compose(); say $a.new() ~~ $b; say $b.new() ~~ $a;
camelia Method A.pretend_to_be not found
in block <unit> at <tmp> line 1
timo m: use Perl6::Metamodel:from<NQP>; class PCH is Perl6::Metamodel::ClassHOW does Perl6::Metamodel::TypePretense { }; my $a := Perl6::Metamodel::ClassHOW.new_type(:1ver, :name("A")); $a.^compose(); my $b := PCH.new_type(:2ver, :name("A")); $b.^pretend_to_be([$a<>]); $b.^compose(); say $a.new() ~~ $b; say $b.new() ~~ $a; 19:28
camelia Too many positionals passed; expected 2 arguments but got 3
in block <unit> at <tmp> line 1
timo silly. 19:29
m: use Perl6::Metamodel:from<NQP>; class PCH is Perl6::Metamodel::ClassHOW does Perl6::Metamodel::TypePretense { }; my $a := Perl6::Metamodel::ClassHOW.new_type(:1ver, :name("A")); $a.^compose(); my $b := PCH.new_type(:2ver, :name("A")); $b.HOW.pretend_to_be([$a<>]); $b.^compose(); say $a.new() ~~ $b; say $b.new() ~~ $a;
camelia False
False
timo well, that's not HOW to do that
ab5tract :D 19:30
timo this is an area of the metamodel that i haven't touched before, i don't think 19:31
antononcube weekly: youtu.be/S_3e7liz4KM 19:32
notable6 antononcube, Noted! (weekly)
ab5tract antononcube++
REPL food for thought: "A problem with REPLs is that they embed an iterative design process, and potentially the only way to get back to a guaranteed state is to rerun the entire code history" 19:33
timo bpython has this cool "undo" feature where it actually reruns the whole history up until the previous line you executed :D 19:37
if there's side-effects in your code so far, well, tough luck ;) ;) 19:38
ok, i'm not feeling up to MOP noodling right now, I think 19:51
20:03 Sgeo joined
ab5tract that's fair :) 20:31
xinming With Cache::Async module, Is it possible to do .get-if-present("$key"), if not found, let Cache::Async handle the build in the background automatically? 20:47
Something like: my $d = $cache.get-if-present("$key"); unless $d { $cache.build("$key"); return "default" }; $cache.get("$key"); 20:49
Xliff Happy Turkey Day for those of you celebrating!
xinming What I mean is, when the data is not in cache, We return 'default' and build cache in the background. if cache is expired, We return stale cached value, also build in the background. 20:51
When I read the doc, it returns a Promise, I think I may need to hold the promise and wait for it to finish somewhere. otherwise, if I early return, The promise var goes out of scope, probably be aborted. 20:52
21:17 dustinm` left 21:20 dustinm` joined
ab5tract xinming: Maybe you can return the promise always? If the cache gives back the default (use a sentinel), then you give back the promise that will produce the result. If the cache has the value, you can create a Promise, create a Vow from that promise, then keep the vow with the value from the cache before returning the promise 22:01
I hope that makes sense and/or helps :)
22:22 sena_kun left 23:36 cm left 23:42 xinming left 23:45 cm joined