🦋 Welcome to the IRC channel of the core developers of the Raku Programming Language (raku.org #rakulang). This channel is logged for the purpose of history keeping about its development | evalbot usage: 'm: say 3;' or /msg camelia m: ... | Logs available at irclogs.raku.org/raku-dev/live.html | For MoarVM see #moarvm
Set by lizmat on 8 June 2022.
00:00 reportable6 left 00:01 reportable6 joined 00:03 japhb left 00:35 japhb joined
ugexe I think we need a better way of versioning core modules 00:43
they used to be versioned as 6.c etc, but now the version is based on rakudo verion i.e. 2023.XX.XXXX 00:44
MasterDuke huh. how/when did that happen?
ugexe the first thing wrong there is anyone that was doing `use Test:ver<6.*>` (for example I used `Test:ver<6.c+>` a lot) would have be had their code broken
but the important thing is some version scheme is followed from here out. other compilers that would also have to provide NativeCall, Test, etc should version theirs similarly 00:45
so that one can depend on a specific version of Test that isn't compiler specific but also has whatever features they need of that version
m: say CompUnit::RepositoryRegistry.repository-for-name("core").installed[0].meta<ver>' 00:46
camelia ===SORRY!=== Error while compiling <tmp>
Two terms in a row
at <tmp>:1
------> -for-name("core").installed[0].meta<ver>⏏'
expecting any of:
infix
infix stopper
postfix
statement end
ugexe m: say CompUnit::RepositoryRegistry.repository-for-name("core").installed[0].meta<ver>
camelia v2023.08.45.g.16595.e.843
ugexe v2022.04 is the last rakudo release where the version shows 6.d. v2022.06 shows v2022.06 00:49
nemokosch so this may be related to zef emitting dummy warnings at installation
[Coke] "dummy" 00:51
I think you mean deprecation.
nemokosch not deprecation, literal "implicit coercion of type object to string" warnings
> Methods .^name, .raku, .gist, or .say can be used to stringify it to something meaningful. in method try-load at (Zef) line 155 00:53
line 155 coincides with > my $plugin-is-core = so $?DISTRIBUTION.meta<provides>{$short-name}.?chars; 00:55
01:35 evalable6 left, linkable6 left 01:37 evalable6 joined, linkable6 joined 03:00 tellable6 left, evalable6 left, shareable6 left, reportable6 left, bloatable6 left, bisectable6 left, sourceable6 left, quotable6 left, committable6 left, nativecallable6 left, statisfiable6 left, benchable6 left, squashable6 left, releasable6 left, notable6 left, unicodable6 left, linkable6 left, coverable6 left, greppable6 left, bloatable6 joined, notable6 joined 03:01 evalable6 joined, tellable6 joined, benchable6 joined, committable6 joined, quotable6 joined, linkable6 joined, coverable6 joined 03:02 shareable6 joined, squashable6 joined, sourceable6 joined, bisectable6 joined, reportable6 joined, statisfiable6 joined, nativecallable6 joined, unicodable6 joined, greppable6 joined 03:03 releasable6 joined 03:12 squashable6 left 03:14 squashable6 joined
MasterDuke .tell codesections btw, i saw this a little while ago and thought it would be up your alley if you haven't already seen it news.ycombinator.com/item?id=36672957 03:40
tellable6 MasterDuke, I'll pass your message to codesections
04:36 melezhik joined 04:42 melezhik left 05:04 melezhik joined 05:06 melezhik left 06:00 reportable6 left 06:03 reportable6 joined
Geth rakudo/main: f09fa022f2 | (Elizabeth Mattijsen)++ | src/core.c/Rakudo/Iterator.pm6
Make .combinations about 25% faster
07:31
rakudo/main: 695b9dc468 | (Elizabeth Mattijsen)++ | src/core.c/Rakudo/Iterator.pm6
Make .combinations another 7% faster

By using lexicals in hot loops instead of attributes
07:59
08:29 sena_kun joined 09:15 ab5tract joined
nemokosch lizmat: this is just a guess but have you thought if push and pop are wasty? 10:17
The other suspicious thing for me is the amount of nqp::clone calls, even on something that is guaranteed to be a C native int 10:18
11:09 NemokoschKiwi joined 11:13 ab5tract left 11:14 ab5tract joined 11:20 NemokoschKiwi left 12:00 reportable6 left 12:01 reportable6 joined 12:17 jgaz left 13:59 ab5tract left 14:01 ab5tract joined
ab5tract nine: any idea on where one might start looking to resolve the lack of role inheritence in RakuAST? 14:16
vrurg ab5tract: src/Perl6/Metamodel, *Role*HOW* 14:21
ab5tract vrurg: thanks! I already started poking around in there 14:30
vrurg ab5tract: good luck on this! I'm keeping my eye on the issue, but can't start with it yet.
16:20 jgaz joined 18:00 reportable6 left 18:02 reportable6 joined 18:29 sena_kun left 18:30 sena_kun joined
MasterDuke blog.carlmjohnson.net/post/2020/py...pposition/ relevant to several discussion that have been had here 20:35
m: say so all([]) 20:36
camelia True
MasterDuke huh. changing the `nqp::clone` to `nqp::decont` here github.com/rakudo/rakudo/blob/main...r.pm6#L843 causes `say (1..100).combinations(4).Array.elems` to slow down from ~5.7s to ~8.2s 20:47
m: use nqp; my int $a; for ^1_000_000 -> int $i { $a = nqp::clone($i) }; say now - INIT now; say $a 20:48
camelia 0.047119263
999999
MasterDuke m: use nqp; my int $a; for ^1_000_000 -> int $i { $a = nqp::decont($i) }; say now - INIT now; say $a
camelia 0.011423033
999999
MasterDuke but as ^^^ shows, nqp::decont should be faster... 20:49
nemokosch yep 20:50
and by the way, are all the clone calls necessary 20:51
for example, cloning the value that is a native int?
MasterDuke yeah. at least that one is. but i'm not sure why
m: say (1..100).combinations(4).tail; 20:53
camelia (97 98 99 100)
MasterDuke if you just remove the nqp::clone completely, you instead get `((Mu) (Mu) (Mu) (Mu))` 20:54
nemokosch pfff 20:58
MasterDuke and removing the ones around $combination cause `Cannot unbox a type object (VMNull) to int.`
22:56 sena_kun left
MasterDuke the ones around $combination make sense. each time $combination (i.e., $!combination) gets *set* to a new combination, so it needs to be cloned when it gets pulled out as an individual element of the overall result list 23:28
what i don't understand is when i remove $!combination and create $combination as a new IterationBuffer each time, why i can't then remove the nqp::clone's around it 23:29
`Cannot unbox a type object (VMNull) to int. at SETTING::src/core.c/Rakudo/Iterator.pm6:2462` 23:30
23:44 squashable6 left 23:46 squashable6 joined
MasterDuke huh. wouldn't have expected that gist.github.com/MasterDuke17/bb2dc...cc4762990a would slow down `say (1..100).combinations(4).tail; say now - INIT now` by ~1s 23:49