This channel is intended for people just starting with the Raku Programming Language (raku.org). Logs are available at irclogs.raku.org/raku-beginner/live.html Set by lizmat on 8 June 2022. |
|||
00:00
kjp left,
kjp joined
01:07
NemokoschKiwi left
02:43
rf left
03:23
Kaiepi left
03:55
Kaiepi joined
07:16
Kaiepi left
08:33
Manifest0 left
11:15
Kaiepi joined
12:44
atroxaper joined
|
|||
atroxaper | Hello, #raku-beginner! Happy New Year! Do you know Raku analogue of C#/Java WeakReference system? The system allows to have a reference to an object, but do not prevents of GC work on it. | 12:47 | |
lizmat | this feels like an X-Y question | 12:56 | |
there are no references in Raku, at least not at a level that a normal user would care about | 12:57 | ||
atroxaper: could you explain what you're trying to achieve ? | |||
atroxaper | There are some cache algorithms where we have a storage with "weak reference" to objects. When GC wants to clean up the object, the weak reference is not a reference for GC. After GC clean up the "weak reference" will point to null. | 13:01 | |
lizmat | you would have to forcibly evict cached values | 13:03 | |
perhaps raku.land/zef:lizmat/Hash::LRU could be of use ? | |||
otherwise something like: %cache{%cache.keys.head}:delete while %cache.elems > 100 | 13:04 | ||
perhaps better: %cache{%cache.keys.head(%cache.elems - 100)}:delete if %cache.elems > 100 | 13:05 | ||
since the order of keys in a hash is random, this would randomly delete keys | 13:06 | ||
atroxaper | lizmat: It is not about cache issue for me. I'm always ask about strange things:) Imagine, you have on object. You do not control it. But you want to associate a value with the object, but do not want to prevent a GC work. One more think, you want to store the value *outside* the object. So you cannot mixin something to it. | 13:08 | |
lizmat | you could cache on the .WHICH of the object | ||
atroxaper | lizmat: how for example? | 13:10 | |
lizmat | my %cache; %cache{$object.WHICH} = 42 | ||
Nemokosch | what are objects stored by in a Hash, by default? | 13:11 | |
I would have thought they are stored by WHICH either way | |||
lizmat | by their stringification | ||
atroxaper | Oh, yes. I read WHAT instead of WHICH :) | 13:12 | |
Nemokosch | gotcha | ||
lizmat | m: my %h; dd %h.of, %h.keyof | ||
camelia | Mu Str(Any) |
||
13:12
Kaiepi left
|
|||
lizmat | so the default is coercion to Str | 13:13 | |
atroxaper | lizmat: then I do not know when $object will gone. I will have a "memory leak". | ||
Nemokosch | oh, keyof is new to me | ||
lizmat | docs.raku.org/routine/keyof#class_Hash | 13:14 | |
13:15
Kaiepi joined
|
|||
lizmat | atroxaper: perhaps a DESTROY method on the class that updates that cache ? | 13:16 | |
Nemokosch | Would you understand what this is trying to say, by the way: | ||
> Returns the parameterized key used for the Associative role | |||
atroxaper | lizmat: unfortunately, I doesn't control the class :( | 13:17 | |
lizmat: Anyway. I have a backup plan to archive the goal. Thank you! :) | |||
lizmat | and yet another Rakudo Weekly News hits the Net: rakudoweekly.blog/2023/01/02/2023-...ming-away/ | 13:57 | |
14:07
atroxaper left
|
|||
guifa | lizmat youlinked to the P6C version of DateTime::TImezones for my module, should be raku.land/zef:guifa/DateTime::Timezones | 15:12 | |
15:39
ab5tract joined
15:45
guifa_ joined
15:51
ab5tract left
15:52
ab5tract joined
16:11
ab5tract left
16:33
ab5tract joined
16:46
jgaz joined
17:37
jgaz left
|
|||
lizmat | guifa_: thanks, fixed | 17:40 | |
17:52
Kaiepi left
18:36
Kaiepi joined
21:10
Kaiepi left
21:38
NemokoschKiwi joined
21:48
Kaiepi joined,
jaguart left
22:02
jgaz joined
22:06
jgaz left
22:10
jaguart joined
|