🦋 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, reportable6 joined 04:20 Xliff joined
Xliff Raku-GLib suite timing statistics for Raku 2023.02.17.g.95.e.0.a.1783 04:21
Total number of projects: 33 (502933 loc)
Total non-parallel compile times: 8706.870 (263.845 avg)
Total parallel compile times: 1393.242 (42.219 avg) 6.249x speedup
4th best parallel time recorded since March 2022! 04:23
06:00 reportable6 left 06:02 reportable6 joined 06:47 Xliff left 07:48 ab5tract left 08:42 sena_kun joined
Geth rakudo/main: 188beb5562 | (Elizabeth Mattijsen)++ | src/core.c/Range.pm6
Return correct Bool for infinite ranges

Better fix for github.com/rakudo/rakudo/issues/5222
09:41
09:42 evalable6 left, linkable6 left 09:43 evalable6 joined 09:44 linkable6 joined
Nemokosch now that this is kind of a hot topic, let me throw this in github.com/rakudo/rakudo/issues/5143 09:47
another elems issue
Geth rakudo/main: 53135c8d37 | (Elizabeth Mattijsen)++ | src/core.c/Range.pm6
Properly fix (1..*).Bool

Initially thinking about using self.Seq.head !=:= Nil, than decided to use the more direct .iterator.pull-one instead. Means the value to check is IterationEnd, not Nil.
Should have written the tests first :-(
09:53
roast: 040622c267 | (Elizabeth Mattijsen)++ | S02-types/range.t
Add Range.Bool tests

Related to github.com/rakudo/rakudo/issues/5222
rakudo/main: e9f438f5aa | (Elizabeth Mattijsen)++ | 6 files
RakuAST: add support for "our constant foo = 42"

  - introduce RakuAST::VarDeclaration::Constant class
  - remove specific stopper from grammar
  - adapt type_declarator:sym<constant> accordingly
  - add deparsing / raku logic
  - add basic tests
10:32
lizmat sadly, didn't gain any additional tests 10:33
10:35 nine_ left, nine joined 10:50 epony left 10:51 epony joined 10:56 epony left, epony joined 12:00 reportable6 left 12:02 reportable6 joined 12:10 ab5tract joined 13:46 evalable6 left, linkable6 left 13:47 linkable6 joined 13:49 evalable6 joined 16:06 ab5tract left 16:27 lizmat_ joined 16:32 lizmat_ left 16:33 lizmat_ joined 16:36 committable6 left, quotable6 left, coverable6 left, shareable6 left, bisectable6 left, lizmat left, sjn left, rypervenche left 16:37 Xliff joined, committable6 joined, quotable6 joined, coverable6 joined, shareable6 joined, bisectable6 joined, sjn joined, rypervenche joined 16:46 lizmat_ left 16:47 lizmat joined 17:09 vrurg_ left 17:10 vrurg joined 18:00 reportable6 left 18:02 reportable6 joined 18:25 AlexDaniel joined, epony left 18:42 AlexDaniel left 18:56 AlexDaniel joined
AlexDaniel please feel free to file this performance ticket on my behalf: gist.github.com/AlexDaniel/d651dd9...25af11d30e 18:57
(cuz I can't file tickets in rakudo)
18:59 epony joined 19:21 MasterDuke joined 19:46 squashable6 left
Nemokosch how would you like it to be converted into an actionable issue? 19:46
19:48 squashable6 joined
Voldenet if you're looking for optimization chance, bigger perf issue is that `for ^1000 { .WHERE.say };` will display different address every time 20:09
and this can be optimized without dealing with `Int` vs `int` problem 20:10
tonyo i think he's looking to make the coerced types faster
alex mentions there's obvious optimizations 20:11
Voldenet probably there are some 20:13
but still I wish raku was able to reuse memory a bit more 20:14
MasterDuke isn't the int vs uint different (in addition to int vs Int) something to look into? that might be lower hanging fruit 20:22
tonyo that was the point of the gist, i think 20:23
[Coke] doesn't surprise that a subset is less effective than a native in general. 20:25
MasterDuke ah, but uint is a native. UInt is the subset
Nemokosch > bigger perf issue is that for ^1000 { .WHERE.say }; will display different address every time however, in that case, you might actually have a fully-blown, writeable container 20:26
while this is not an option with -> $i 20:27
[Coke] (subset) oops
Nemokosch yes, uint and int is strange the least to say... 20:28
[Coke] yes, .WHERE can change
(even if it was the same variable each time with $i, it could still change then, depending on GC) 20:29
Nemokosch when we talked about it a bit earlier, it really came as a surprise that we didn't get similar benchmarking results; then it turned out the big win only came with int
the big question is - can we even inspect if a variable is int or uint? 20:31
MasterDuke m: use nqp; say nqp::objprimspec(int); say nqp::objprimspec(uint) 20:33
camelia 1
10
MasterDuke fwiw, i believe the int v uint is something to do with iterating ranges 20:35
Nemokosch m: my uint $asd; use nqp; say say nqp::objprimspec($asd)
Raku eval 0 True
Nemokosch oops
anyway, it's not really informative 20:36
MasterDuke `my class IntRange does PredictiveIterator {` from src/core.c/Rakudo/Iterator.pm6:2115 might need looking into for a uint version
and then figuring out how/when to use the new uint one instead 20:39
21:05 Xliff_ joined 21:07 Xliff left
Voldenet >you might actually have a fully-blown, writeable container 21:11
I don't disagree, but this should be supported as a special case
21:11 Xliff_ left
Voldenet most loops just iterate over the collection 21:12
or other iterable, which could control how (and if) loops will allocate 21:13
21:16 shmup left
Nemokosch anyway, the situation is more fortunate when you predictably have a read-only variable 21:22
AlexDaniel actually, my point is that in all cases the performance should be the same. Feel free to split it into different tickets but yeah. 21:38
just because you have a bigint somewhere doesn't mean that the performance can be more than 10x slower 21:39
bigints are not 10x slower themselves… or are they?
Nemokosch well, I can very well imagine that with division they are... 21:42
AlexDaniel press x to doubt :)
and, more importantly, it seems that if you fix the loop variable performance, then you might as well beat python in most simple tasks 21:43
adding more native ints in that example does improve anything, it's just the loops
does not* 21:44
Nemokosch I mean it's sort of obvious that if you evaluate something many times, your mileage will vary more 21:56
AlexDaniel ?
Nemokosch "the loops" probably only serve as an amplifier 21:57
22:12 shmup joined 23:03 sena_kun left 23:30 NemokoschKiwi joined