🦋 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:19
librasteve_ left
04:53
ab5tract left
04:56
ab5tract joined
10:48
nebuchadnezzar joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | roast: 2a85a8a7ec | (Elizabeth Mattijsen)++ | S03-metaops/reduce.t Fix [\orelse] test The test incorrectly expects Any to be produced, rather than Nil. |
10:58 | |||||||||||||||||||||||||||||||||||||
rakudo/main: ba2431f445 | (Elizabeth Mattijsen)++ | src/core.c/metaops.rakumod Streamline list triangle metaop Use a proper iterator instead of gather / take. Makes it up to 45% faster, and fixes a bug that produced Any instead of Nil. Part of research into #1705 |
11:03 | ||||||||||||||||||||||||||||||||||||||
11:15
sena_kun joined
11:59
finanalyst left
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo/main: dbc7bfc84e | (Elizabeth Mattijsen)++ | src/core.c/metaops.rakumod Streamline list infix reduction Create an IterationBuffer with decontainerized values, then slip that in the argument list. Makes [Z+] about 10% faster. Part of work on #1705 |
12:05 | |||||||||||||||||||||||||||||||||||||
12:06
[Tux] left
12:09
[Tux] joined
|
|||||||||||||||||||||||||||||||||||||||
ab5tract | Hmm… is there any hope for improving gather/take performance? | 12:20 | |||||||||||||||||||||||||||||||||||||
(Question inspired by the massive performance improvement in lizmat++’s commit) | 12:21 | ||||||||||||||||||||||||||||||||||||||
lizmat | if we can find out in RakuAST that gather / take can be reduced to a push to an IterationBuffer, then these opts would be automatic | ||||||||||||||||||||||||||||||||||||||
but throwing an exception for each "take", and returning from it is just expensive | 12:22 | ||||||||||||||||||||||||||||||||||||||
ab5tract | That sounds promising | ||||||||||||||||||||||||||||||||||||||
lizmat | although I believe jnthn already did a lot to optimize that | 12:23 | |||||||||||||||||||||||||||||||||||||
12:33
nebuchadnezzar left
|
|||||||||||||||||||||||||||||||||||||||
ab5tract | Is that the “normal” way to implement coroutines? | 13:14 | |||||||||||||||||||||||||||||||||||||
lizmat | afaik gather / take are basically Raku's way of hiding coroutine sheninagans | 13:18 | |||||||||||||||||||||||||||||||||||||
timo | once we know that the gather will be consumed eagerly, we know we don't have to do coroutiney stuff | 13:20 | |||||||||||||||||||||||||||||||||||||
but if the list is actually being iterated over in any meaningful way, where the code in the "gather" has some side-effects between the individual "take"s, we can't just throw that away | |||||||||||||||||||||||||||||||||||||||
ab5tract | Yeah, but I don’t know many other languages with coroutines that are marked “do not use, too slow” | ||||||||||||||||||||||||||||||||||||||
lizmat | they're not marked: do not use, too slow | 13:21 | |||||||||||||||||||||||||||||||||||||
it's just that in these cases that I'm working on, they were not necessary | |||||||||||||||||||||||||||||||||||||||
timo | at least we don't have these fun very-deep call trees with lots of "reify" in them any more :) | ||||||||||||||||||||||||||||||||||||||
ab5tract | Culturally their use has been discouraged | ||||||||||||||||||||||||||||||||||||||
timo | well, for internals code it's a little bit of a different story than for user code | 13:22 | |||||||||||||||||||||||||||||||||||||
lizmat | well, I'd say that's true: use them only if you really need them, or if you don't care that much about efficiency | ||||||||||||||||||||||||||||||||||||||
timo | we usually want to give the user the fastest implementation for things that are going to be used "commonly" | ||||||||||||||||||||||||||||||||||||||
ab5tract | Sure, I’m not intending to conflate the two. I just mean that IME gather/take is often written off for user space as well | 13:23 | |||||||||||||||||||||||||||||||||||||
timo | i use gather/take every now and then, it's very handy if you're going through nested stuff for example | ||||||||||||||||||||||||||||||||||||||
ab5tract | So my line of questioning is just to ask: do they need to be implemented this way? | 13:24 | |||||||||||||||||||||||||||||||||||||
But probably the answer is yes | |||||||||||||||||||||||||||||||||||||||
timo | doesn't have to be coroutines, could be threads instead. though of course that's worse, not better | ||||||||||||||||||||||||||||||||||||||
lizmat | I don't think generally people realize that gather / take is lazy | ||||||||||||||||||||||||||||||||||||||
I often see things like: my @a = gather { ... take, take, take } | 13:26 | ||||||||||||||||||||||||||||||||||||||
which sorta defeats the purpose, I'd say | 13:27 | ||||||||||||||||||||||||||||||||||||||
apart from maybe readabiility | 13:28 | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo/main: 6c5afe65d0 | (Elizabeth Mattijsen)++ | src/core.c/metaops.rakumod Streamline triangle list infix reduction Use a proper iterator, makes it about 2.5x as fast. Part of #1705 |
13:38 | |||||||||||||||||||||||||||||||||||||
ab5tract | Unfortunately a fair number of the examples in the docs seem to be of that variety | 13:52 | |||||||||||||||||||||||||||||||||||||
Anyway, just dropping this here for future reference: zelang-dev.github.io/c-coroutine/ | |||||||||||||||||||||||||||||||||||||||
14:06
sena_kun left
14:07
sena_kun joined
|
|||||||||||||||||||||||||||||||||||||||
lizmat | m: say [\<] # this feels... wrong ? | 14:36 | |||||||||||||||||||||||||||||||||||||
camelia | (True) | ||||||||||||||||||||||||||||||||||||||
lizmat | I'd expect that to be the () | 14:37 | |||||||||||||||||||||||||||||||||||||
m: say [\<] 42 | 14:40 | ||||||||||||||||||||||||||||||||||||||
camelia | (True) | ||||||||||||||||||||||||||||||||||||||
ab5tract | m: dd [**] | 14:43 | |||||||||||||||||||||||||||||||||||||
camelia | 1 | ||||||||||||||||||||||||||||||||||||||
lizmat | m: dd [\**] | ||||||||||||||||||||||||||||||||||||||
camelia | (1,).Seq | ||||||||||||||||||||||||||||||||||||||
lizmat | hmmm | ||||||||||||||||||||||||||||||||||||||
m: dd [\**] 42 | |||||||||||||||||||||||||||||||||||||||
camelia | (42,).Seq | ||||||||||||||||||||||||||||||||||||||
ab5tract | m: dd [%%] | 14:44 | |||||||||||||||||||||||||||||||||||||
camelia | Failure.new(exception => X::NoZeroArgMeaning.new(name => "infix:<\%\%>")) | ||||||||||||||||||||||||||||||||||||||
lizmat | m: dd [\%%] | ||||||||||||||||||||||||||||||||||||||
camelia | ().Seq | ||||||||||||||||||||||||||||||||||||||
lizmat | m: dd [\+] | ||||||||||||||||||||||||||||||||||||||
camelia | ().Seq | ||||||||||||||||||||||||||||||||||||||
ab5tract | Having that exception in (almost) all circumstances would be mostly ok for me. | 14:45 | |||||||||||||||||||||||||||||||||||||
lizmat | but many ops *do* have a meaning for the non-args case | 14:46 | |||||||||||||||||||||||||||||||||||||
namely the identity of the op | |||||||||||||||||||||||||||||||||||||||
/ and % and %% can't have that, as they have no identity | 14:47 | ||||||||||||||||||||||||||||||||||||||
ab5tract | But that’s by convention, right? | 14:48 | |||||||||||||||||||||||||||||||||||||
[**] could easily return a failure, and [%%] could have been made to return a NaN | 14:49 | ||||||||||||||||||||||||||||||||||||||
lizmat | well... I guess a very logical convention ? | ||||||||||||||||||||||||||||||||||||||
that behaviour sorta falls out of meta ops | 14:50 | ||||||||||||||||||||||||||||||||||||||
well, reduction meta ops such as [op] and [\op] | |||||||||||||||||||||||||||||||||||||||
ab5tract | I guess the primary distinction is whether the op chains or not.? | ||||||||||||||||||||||||||||||||||||||
Ah right, they are there for the metas. Got it | 14:51 | ||||||||||||||||||||||||||||||||||||||
lizmat | well, the precedence determines how it is handled: left, right, chain, list | ||||||||||||||||||||||||||||||||||||||
the logical ops have chain precedence | 14:52 | ||||||||||||||||||||||||||||||||||||||
m: say 3 < 4 < 5 < 6 | |||||||||||||||||||||||||||||||||||||||
camelia | True | ||||||||||||||||||||||||||||||||||||||
lizmat | m: say 3 < 4 < 5 < 5 | ||||||||||||||||||||||||||||||||||||||
camelia | False | ||||||||||||||||||||||||||||||||||||||
lizmat | that;s just short for: 3 < 4 && 4 < 5 && 5 < 5 | 14:53 | |||||||||||||||||||||||||||||||||||||
ab5tract | I’m not un familiar with:) | ||||||||||||||||||||||||||||||||||||||
I’m saying that an identity makes sense for chain ops | |||||||||||||||||||||||||||||||||||||||
I’m not as convinced about other precedence’s | 14:54 | ||||||||||||||||||||||||||||||||||||||
lizmat | m: say infix:<==>() | ||||||||||||||||||||||||||||||||||||||
camelia | True | ||||||||||||||||||||||||||||||||||||||
ab5tract | I’m pretty sure that chains? | ||||||||||||||||||||||||||||||||||||||
lizmat | yeah, that does | 14:55 | |||||||||||||||||||||||||||||||||||||
m: dd &infix:<+>.prec | |||||||||||||||||||||||||||||||||||||||
camelia | {:assoc("left"), :dba("additive"), :prec("t=")} | ||||||||||||||||||||||||||||||||||||||
lizmat | actually, it's associativity :-) | 14:56 | |||||||||||||||||||||||||||||||||||||
m: dd &infix:<+>.associative # newer interface | 14:57 | ||||||||||||||||||||||||||||||||||||||
camelia | "left" | ||||||||||||||||||||||||||||||||||||||
[Tux] | Rakudo v2025.01-36-g6c5afe65d (v6.d) on MoarVM 2025.01-9-gfc2d31f32
|
15:40 | |||||||||||||||||||||||||||||||||||||
tux.nl/Talks/CSV6/speed4-20.html / tux.nl/Talks/CSV6/speed4.html tux.nl/Talks/CSV6/speed.log | 15:41 | ||||||||||||||||||||||||||||||||||||||
The CSV speed test pointed me to an update for julia and that the CSV module was not available anymore | 15:51 | ||||||||||||||||||||||||||||||||||||||
so I updated julia and re-installed the CSV parser | |||||||||||||||||||||||||||||||||||||||
2025-01-11 13:44:54 csv-julia 3.336 | 15:52 | ||||||||||||||||||||||||||||||||||||||
2025-01-11 13:45:47 csv-julia 3.313 | |||||||||||||||||||||||||||||||||||||||
2025-01-30 16:48:46 csv-julia 0.734 | |||||||||||||||||||||||||||||||||||||||
2025-01-30 16:49:25 csv-julia 0.718 | |||||||||||||||||||||||||||||||||||||||
Wow! | |||||||||||||||||||||||||||||||||||||||
jdv | is that gooder? | 16:09 | |||||||||||||||||||||||||||||||||||||
[Coke] | (could be threads) www.youtube.com/watch?v=UA_E57ePSR4 | 16:10 | |||||||||||||||||||||||||||||||||||||
^ timo | |||||||||||||||||||||||||||||||||||||||
timo | i haven't seen the show, but i've seen many memes from it and it is high on my to-watch list | ||||||||||||||||||||||||||||||||||||||
[Tux] | jdv, it is 4½ times faster, so yes. (still slow compared to the other languages, but stll) | 16:11 | |||||||||||||||||||||||||||||||||||||
[Coke] | timo: it was amazing: well written, funny, clever. | 16:12 | |||||||||||||||||||||||||||||||||||||
timo | "yes yes it's the good tv show, we've all seen it" :P | ||||||||||||||||||||||||||||||||||||||
[Tux] did not | 16:13 | ||||||||||||||||||||||||||||||||||||||
[Coke] | AHAHAAH | 16:15 | |||||||||||||||||||||||||||||||||||||
timo: I was just searching for clips and just watched "chidi sees the time knife" | 16:16 | ||||||||||||||||||||||||||||||||||||||
excellent! convergence! a sign! | |||||||||||||||||||||||||||||||||||||||
timo | "it's a The Good Place insult. it's devastating. you're devastated right now." | ||||||||||||||||||||||||||||||||||||||
17:41
finanalyst joined
18:17
finanalyst left
21:12
finanalyst joined
22:45
sena_kun left
|
|||||||||||||||||||||||||||||||||||||||
[Coke] | what's the bot channela gain? | 23:11 | |||||||||||||||||||||||||||||||||||||
... we lost all the bots? | 23:22 | ||||||||||||||||||||||||||||||||||||||
I'll try the commit ping to restart them. | |||||||||||||||||||||||||||||||||||||||
Geth | whateverable/main: a02729bd40 | (Will Coleda)++ | .ping Force a restart |
23:23 | |||||||||||||||||||||||||||||||||||||
[Coke] | releasable6: uptime | 23:26 | |||||||||||||||||||||||||||||||||||||
releasable6 | [Coke], and I oop! Backtrace: gist.github.com/4d89fdc470524756d8...64c0aae88b | ||||||||||||||||||||||||||||||||||||||
[Coke] | releasable6: status | 23:27 | |||||||||||||||||||||||||||||||||||||
releasable6 | [Coke], Next release will happen when it's ready. There are no known blockers. 49 out of 53 commits logged | ||||||||||||||||||||||||||||||||||||||
[Coke], Details: gist.github.com/0e19c2295bf805a212...85e115733c | |||||||||||||||||||||||||||||||||||||||
23:27
bloatable6 left,
benchable6 left,
shareable6 left,
greppable6 left,
notable6 left,
sourceable6 left,
evalable6 left,
releasable6 left,
unicodable6 left,
linkable6 left,
coverable6 left,
committable6 left,
nativecallable6 left,
quotable6 left,
bisectable6 left,
tellable6 left
23:29
committable6 joined
23:30
sourceable6 joined,
linkable6 joined,
nativecallable6 joined,
notable6 joined,
greppable6 joined,
coverable6 joined,
quotable6 joined,
releasable6 joined,
guifa joined
23:31
evalable6 joined,
bloatable6 joined,
bisectable6 joined,
shareable6 joined,
benchable6 joined
23:32
unicodable6 joined,
tellable6 joined
|
|||||||||||||||||||||||||||||||||||||||
[Coke] | .seen undercover | 23:36 | |||||||||||||||||||||||||||||||||||||
tellable6 | [Coke], I saw undercover 2017-07-19T19:02:52Z in #perl6-dev: <Undercover> Zoffix, Use cover: trigger with args to give to sourcery sub. e.g. cover: Int, 'base'. See modules.perl6.org/dist/CoreHackers::Sourcery |