🦋 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:17
MasterDuke joined
|
|||||||||||||||||||||||||||||||
MasterDuke | . | 00:17 | |||||||||||||||||||||||||||||
tellable6 | 2024-04-05T14:03:43Z #raku-dev <[Tux]> MasterDuke: tux.nl/Talks/CSV6/speed4-20.html | ||||||||||||||||||||||||||||||
MasterDuke | [Tux]: cool, thanks | ||||||||||||||||||||||||||||||
00:44
japhb left
00:45
japhb joined
01:31
MasterDuke left
|
|||||||||||||||||||||||||||||||
Geth | nqp/main: e90292265a | (Elizabeth Mattijsen)++ | tools/templates/MOAR_REVISION Bump MoarVM for MasterDuke++ optimizations |
07:23 | |||||||||||||||||||||||||||||
rakudo/main: b4d7db184c | (Elizabeth Mattijsen)++ | tools/templates/NQP_REVISION Bump NQP to get the latest MoarVM optimizations |
07:34 | ||||||||||||||||||||||||||||||
[Tux] |
|
07:46 | |||||||||||||||||||||||||||||
gist.github.com/Tux/c783b98595f425...dcc92947f0 | 07:47 | ||||||||||||||||||||||||||||||
09:17
lizmat_ joined
|
|||||||||||||||||||||||||||||||
lizmat_ | greppable6: role_to_role | 09:19 | |||||||||||||||||||||||||||||
greppable6 | lizmat_, Found nothing! | ||||||||||||||||||||||||||||||
10:20
lizmat__ joined
10:22
lizmat_ left
10:33
ab5tract left,
ab5tract joined
|
|||||||||||||||||||||||||||||||
Geth | rakudo/main: 87feb40a16 | (Elizabeth Mattijsen)++ | src/vm/moar/ModuleLoaderVMConfig.nqp Streamline ModuleLoaderVMConfig role |
11:13 | |||||||||||||||||||||||||||||
12:41
lizmat_ joined,
lizmat__ left
|
|||||||||||||||||||||||||||||||
Geth | rakudo/main: 4cec36b724 | (Elizabeth Mattijsen)++ | src/Perl6/ModuleLoader.nqp Streamline ModuleLoader (Part 1/N) - use nqp::atkey/pos instead of {} and [] - change for loops to while loops - several other shortcuts |
12:44 | |||||||||||||||||||||||||||||
13:05
lizmat_ left,
lizmat_ joined
13:10
lizmat_ left
13:11
lizmat_ joined
13:51
lizmat_ left,
lizmat_ joined
|
|||||||||||||||||||||||||||||||
nine | Is there an actual difference between [] and atpos in NQP? | 13:57 | |||||||||||||||||||||||||||||
lizmat_ | [] can serve as a left-value | 14:06 | |||||||||||||||||||||||||||||
as can { } | 14:07 | ||||||||||||||||||||||||||||||
afk& | 14:08 | ||||||||||||||||||||||||||||||
14:08
lizmat_ left
|
|||||||||||||||||||||||||||||||
ab5tract | m: use nqp; say nqp::istype(${:a("B")}, Associative); say nqp::istype(${:a("B")}, nqp::gethllsym("Raku", "Associative")); #surprising | 14:10 | |||||||||||||||||||||||||||||
camelia | 1 0 |
||||||||||||||||||||||||||||||
lizmat | m: dd nqp::gethllsym("Raku", "Associative") | 14:24 | |||||||||||||||||||||||||||||
camelia | ===SORRY!=== Error while compiling <tmp> Could not find nqp::gethllsym, did you forget 'use nqp;' ? at <tmp>:1 ------> dd nqp::gethllsym("Raku", "Associative")⏏<EOL> |
||||||||||||||||||||||||||||||
lizmat | m: use nqp; dd nqp::gethllsym("Raku", "Associative") | ||||||||||||||||||||||||||||||
camelia | Mu | ||||||||||||||||||||||||||||||
lizmat | m: use nqp; dd nqp::gethllsym("Raku", "Foo") | ||||||||||||||||||||||||||||||
camelia | Mu | ||||||||||||||||||||||||||||||
lizmat | ab5tract ^^ | 14:25 | |||||||||||||||||||||||||||||
ab5tract | sory, I should have been more specific about what was surprising me: I was surprised that Associative is missing in the Raku HLL | 14:26 | |||||||||||||||||||||||||||||
but I still have a lot to learn about the whole HLL concept, to be honest | |||||||||||||||||||||||||||||||
lizmat | it's simple, really: if nothing does a nqp::bindhllsym('Raku', 'Associative', Associative), then it won't be there | 14:29 | |||||||||||||||||||||||||||||
afk& | 14:31 | ||||||||||||||||||||||||||||||
ab5tract | I was under the impression that if it was defined in CORE setting, it was bound into the hll lookup thingy. TIL! | 14:32 | |||||||||||||||||||||||||||||
in retrospect the impression I had is obviously impossible, as we are bootstrapping. | 14:33 | ||||||||||||||||||||||||||||||
Geth | rakudo/is-item-redux: 840e4e16d0 | ab5tract++ | 5 files Scaffolding for 'is item' trait on parameters |
15:35 | |||||||||||||||||||||||||||||
rakudo/is-item-redux: a14563be2f | ab5tract++ | 2 files Add dispatch disambiguation for 'is item' |
|||||||||||||||||||||||||||||||
rakudo/is-item-redux: 8499836dc7 | ab5tract++ | src/Perl6/bootstrap.c/BOOTSTRAP.nqp (Legacy dispatch) disambiguate itemization with 'is item' |
|||||||||||||||||||||||||||||||
rakudo/is-item-redux: f95f722828 | ab5tract++ | 2 files Add dispatch disambiguation for 'is item' This allows for multi routines to distinguish between itemized arguments. For the sake of simplicity, the parameter trait does not add any new ParamTypeChecks to the parameter. Instead it is only used as a marker for disambiguation in multiple dispatch: ... (6 more lines) |
16:24 | ||||||||||||||||||||||||||||||
rakudo/is-item-redux: 9d34483dfc | ab5tract++ | src/Perl6/bootstrap.c/BOOTSTRAP.nqp (Legacy dispatch) disambiguate itemization with 'is item' |
|||||||||||||||||||||||||||||||
ab5tract | lizmat: when an `is item` candidate is dispatched to, do you reckon that the itemization should remain after it is passed to the routine body? | 16:26 | |||||||||||||||||||||||||||||
right now I haven't implemented that, but it would be a simple enough change | 16:27 | ||||||||||||||||||||||||||||||
Geth | rakudo/is-item-redux: 4ad3b37fe2 | ab5tract++ | 2 files Add dispatch disambiguation for 'is item' This allows for multi routines to distinguish between itemized arguments. For the sake of simplicity, the parameter trait does not add any new ParamTypeChecks to the parameter. Instead it is only used as a marker for disambiguation in multiple dispatch: ... (6 more lines) |
16:48 | |||||||||||||||||||||||||||||
rakudo/is-item-redux: c50158bba7 | ab5tract++ | src/Perl6/bootstrap.c/BOOTSTRAP.nqp (Legacy dispatch) disambiguate itemization with 'is item' |
|||||||||||||||||||||||||||||||
lizmat | ab5tract: I'd say, no, as @foo doesn't imply itemization ? | 16:59 | |||||||||||||||||||||||||||||
Geth | rakudo: ab5tract++ created pull request #5549: Add dispatch disambiguation via 'is item' parameter trait |
17:02 | |||||||||||||||||||||||||||||
rakudo/is-item-redux: 9a646a8141 | ab5tract++ | 5 files Scaffolding for 'is item' trait on parameters |
17:05 | ||||||||||||||||||||||||||||||
rakudo/is-item-redux: a3758a75fb | ab5tract++ | 2 files Add dispatch disambiguation for 'is item' This allows for multi routines to distinguish between itemized arguments. For the sake of simplicity, the parameter trait does not add any new ParamTypeChecks to the parameter. Instead it is only used as a marker for disambiguation in multiple dispatch: ... (6 more lines) |
|||||||||||||||||||||||||||||||
rakudo/is-item-redux: 1abfd6e676 | ab5tract++ | src/Perl6/bootstrap.c/BOOTSTRAP.nqp (Legacy dispatch) disambiguate itemization with 'is item' |
|||||||||||||||||||||||||||||||
ab5tract | ouch... I guess I will avoid developing on rakudo directly.. I don't like spamming this channel when I inevitably force push some improvements | ||||||||||||||||||||||||||||||
*rakudo/rakudo | 17:06 | ||||||||||||||||||||||||||||||
lizmat: makes sense to me too | 17:07 | ||||||||||||||||||||||||||||||
next up: the RakuAST version. but I will avoid implementing that until the current work is discussed and merged | 17:22 | ||||||||||||||||||||||||||||||
lizmat | would a separate RakuAST version be needed ? | 17:27 | |||||||||||||||||||||||||||||
nine: other differences in NQP between postcircumfix [] and nqp::atpos: | 17:31 | ||||||||||||||||||||||||||||||
$ nqp -e 'my $a := nqp::list; my $b := $a[0]; say($b.HOW.name($b))' | |||||||||||||||||||||||||||||||
NQPMu | |||||||||||||||||||||||||||||||
$ nqp -e 'my $a := nqp::list; my $b := nqp::atpos($a,0); say($b.HOW.name($b))' | |||||||||||||||||||||||||||||||
VMNull | |||||||||||||||||||||||||||||||
same for postcircumfic { } and nqp::atkey | 17:32 | ||||||||||||||||||||||||||||||
ab5tract | lizmat: yeah, but only the setting up of the trait | 17:33 | |||||||||||||||||||||||||||||
ie, the stuff that's currently in actions | |||||||||||||||||||||||||||||||
lizmat | ack | 17:36 | |||||||||||||||||||||||||||||
nine | I think I'll just give up on t/spec/S02-types/generics.t. The code is almost impossible to comprehend. The commit messages don't explain anything and the issue referenced just says something about a 4th part of some epic saga but doesn't really explain anything. | ||||||||||||||||||||||||||||||
I also don't understand why such extensive work was done on the old frontend without any accompanying work on RakuAST at all. And that in late 2023. I thought we had an agreement that that won't happen. | |||||||||||||||||||||||||||||||
lizmat | yeah, I think we need to revisit generics more generally | 17:37 | |||||||||||||||||||||||||||||
wrt the work: some people needed it *now* rather than *then* | 17:38 | ||||||||||||||||||||||||||||||
nine | Then they could have had it in their fork of Rakudo | 17:39 | |||||||||||||||||||||||||||||
Rakudo is a collaborative effort, not a dumping ground for people's special needs. | 17:40 | ||||||||||||||||||||||||||||||
17:42
MasterDuke joined
|
|||||||||||||||||||||||||||||||
lizmat | well, afaik generics *were* specced | 17:43 | |||||||||||||||||||||||||||||
so the special need is in the timing, not in the content, I'd say | 17:44 | ||||||||||||||||||||||||||||||
MasterDuke | huh. i just profiled tools/build/raku-ast-compiler.nqp (the script that's run during the `+++ Generating gen/moar/ast.nqp` stage) and 90% of the time is spent in run_alt | 17:51 | |||||||||||||||||||||||||||||
lizmat | yeah, that's doing a *lot* of processing | ||||||||||||||||||||||||||||||
MasterDuke | 12s in NQP::src/QRegex/NFA.nqp:1044 | ||||||||||||||||||||||||||||||
lizmat | so that we don't have to | ||||||||||||||||||||||||||||||
MasterDuke | ~25k lines in the files it processes | 17:52 | |||||||||||||||||||||||||||||
lizmat | it's producing a 32K line / 1.6 MB source file | 17:53 | |||||||||||||||||||||||||||||
MasterDuke | but i've never seen *any* nqp/rakudo code spend anywhere *near* that amount of time in run_alt | 17:54 | |||||||||||||||||||||||||||||
is it something about the grammar in the script? | |||||||||||||||||||||||||||||||
lizmat | MasterDuke: possibly | 17:55 | |||||||||||||||||||||||||||||
I haven't really dared looking at that yet | 17:56 | ||||||||||||||||||||||||||||||
MasterDuke | it's not a long script, only 440 lines, but i don't know grammars nearly well enough to tell if there's a slow spot | ||||||||||||||||||||||||||||||
18:03
kjp left
|
|||||||||||||||||||||||||||||||
MasterDuke | well, github.com/rakudo/rakudo/blob/main...qp#L71-L87 is where in the script it spends the most time, but i don't know if that's useful information | 18:10 | |||||||||||||||||||||||||||||
lizmat | jnthn probably knows, but that looks like a pretty involved token :-) | 18:12 | |||||||||||||||||||||||||||||
japhb | moritz might be able to see the problem too, if he's accessible at all | 18:13 | |||||||||||||||||||||||||||||
Although I am kindof curious about the performance of something that combines | and || in one regex "expression" | 18:17 | ||||||||||||||||||||||||||||||
ab5tract | lizmat: actually, no RakuAST-specific changes are needed | 18:20 | |||||||||||||||||||||||||||||
lizmat | yeah, that's what I was thinking :-) | ||||||||||||||||||||||||||||||
ab5tract | pretty slick! | 18:21 | |||||||||||||||||||||||||||||
Geth | rakudo/main: c6fb210a94 | (Stefan Seifert)++ | 3 files RakuAST: resolve generic lexicals in roles at compose time |
18:32 | |||||||||||||||||||||||||||||
rakudo/main: 1d609daf40 | (Stefan Seifert)++ | src/Raku/ast/variable-declaration.rakumod RakuAST: prohibit multiple is type traits on variables Complains correctly about: my @a is Int is Str |
|||||||||||||||||||||||||||||||
japhb | Stefan: What do allomorphs look like these days? | 18:42 | |||||||||||||||||||||||||||||
lizmat | m: dd <42>.isa(Allomorph) | 18:43 | |||||||||||||||||||||||||||||
camelia | Bool::True | ||||||||||||||||||||||||||||||
lizmat | so: my @a is Allomorph | ||||||||||||||||||||||||||||||
or: my @a is IntStr | |||||||||||||||||||||||||||||||
m: dd <42e0>.isa(Allomorph) | 18:44 | ||||||||||||||||||||||||||||||
camelia | Bool::True | ||||||||||||||||||||||||||||||
japhb | TIL .isa() | ||||||||||||||||||||||||||||||
22:13
kjp joined
|
|||||||||||||||||||||||||||||||
Geth | rakudo/is-item-redux: 0684f1c50d | ab5tract++ | src/Raku/ast/signature.rakumod Add sigil exception for 'is item' to RakuAST |
22:17 | |||||||||||||||||||||||||||||
ab5tract | so there was one small detail missing for is item in RakuAST after all | 22:18 | |||||||||||||||||||||||||||||
now to bed& | |||||||||||||||||||||||||||||||
Regarding the question in #raku-beginner re: matches… I sometimes wish there were a “direct-to-result” option that gave me the actual thing, instead of a match object representation of the thing. But maybe we already have that and I’m just unaware? | 22:54 | ||||||||||||||||||||||||||||||
m: dd my Str() @g = “11 22” ~~ /(\d\d)\s(\d\d)/ | 23:41 | ||||||||||||||||||||||||||||||
camelia | Str(Any) @g = Array[Str(Any)].new("11 22") | ||||||||||||||||||||||||||||||
ab5tract | m: dd my @g = “11 22” ~~ m/(\d\d)\s(\d\d)/ | ||||||||||||||||||||||||||||||
camelia | Mu @g = [Match.new(:orig("11 22"), :from(0), :pos(5), :list((Match.new(:orig("11 22"), :from(0), :pos(2)), Match.new(:orig("11 22"), :from(3), :pos(5)))))] |