🦋 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.
01:23 librasteve_ left 09:05 sena_kun joined 09:59 sena_kun left 10:14 andinus left 10:15 andinus joined
Geth rakudo/main: fd6ffe3310 | (Elizabeth Mattijsen)++ | src/Perl6/Metamodel/RoleToClassApplier.nqp
Streamline Metamodel::RoleToClassApplier (Part 1/N)

  - split method lookup in local / non-local case
  - simplify lookups to bare nqp::existkey
  - move all error handling into separate methods to reduce bytecode
   size for the fast path
10:31
ab5tract Looking for a way to determine the "shape" of a Parameter (eg, '$', '@', or '%') ... from the Parameter class code it really looks like the only option is to check the sigil. `$!container_descriptor` appears to be undefined for the general cases I've tried. 10:56
lizmat good question, I propose to abstract that functionality into a Parameter.method, so we can easily make it a better check in the future 11:07
ab5tract good answer :) 11:44
m: class C { multi method m(Positional $a where [&&] *.map({ $_ == 1|2 })) { say "scalar" }; multi method m(@a) { say "array" } }; (my $c = C.new).m([1,2]); $c.m([3,4]) 12:42
camelia scalar
scalar
ab5tract m: class C { multi method m(Positional $a where { [&&] $_.map({ $_ == 1|2 })}) { say "scalar" }; multi method m(@a) { say "array" } }; (my $c = C.new).m([1,2]); $c.m([3,4]) 12:43
camelia scalar
array
ab5tract ^^ this is weird, right? 12:59
lizmat do you need the example to be methods? 13:26
m: multi m(Positional $a where [&&] *.map({ $_ == 1|2 })) { say "scalar" }; multi method m(@a) { say "array" }; m([1,2]); m([3,4]) 13:27
camelia Potential difficulties:
Useless declaration of a has-scoped multi-method in mainline (did you mean 'my method m'?)
at <tmp>:1
------> = 1|2 })) { say "scalar" }; multi method⏏ m(@a) { say "array" }; m([1,2]); m([3,4
scalar…
lizmat m: multi m(Positional $a where [&&] *.map({ $_ == 1|2 })) { say "scalar" }; multi m(@a) { say "array" }; m([1,2]); m([3,4])
camelia scalar
scalar
lizmat I wonder whether it would make sense to make the Parameter object available in where blocks somehow 13:29
Geth rakudo: ab5tract++ created pull request #5543:
Add multi disambiguation for positional scalars / use disambiguation in Array.splice
13:33
ab5tract this is just a weird behavior that I noticed while doing some testing of the multi disambiguation ("Now available in PR!") 13:37
lizmat left some comments 13:39
will look at it in more depth later
Geth rakudo/main: aa02c8b89b | (Elizabeth Mattijsen)++ | src/Perl6/Metamodel/RoleToClassApplier.nqp
Streamline Metamodel::RoleToClassApplier (Part 2/N)

  - remove $!to_compose_meta attribute: it can be derived from $!to_compose
   when needed
  - restructure helper subs and add a few new ones
  - turn error methods into error subs: we're in a class so that's possible
  - don't use attributes where local shortcuts can be used
  - fininsh streamlining the .apply method
  - some more internal comments
14:13
ab5tract lizmat: thanks for once again giving me reason to dislike the JVM backend :/ 14:53
just waiting for this thing to re-compile to test changes is going to be enough to drain a significant portion of my will to live, er, code 15:08
is there a way to disable the newdisp dispatcher in MoarVM so that I can at least test via a usable pipeline? 15:13
+++ Generatinggen/jvm/ast.nqp # it's been here for nearly 10 minutes already 15:14
15:23 sena_kun joined
ab5tract total time was closer to 30 minutes... I think I'd rather abandon the whole concept behind the PR then deal with developing under those conditions 15:41
*than
at least re-compilation is not quite so lengthy 15:57
lizmat ab5tract: sorry 16:35
ab5tract :) 16:36
16:56 djinni`_ left 17:14 djinni` joined
nine JVM backend is slower but that sounds excessive. But then this step takes a surprisingly long time even on MoarVM 17:21
m: role Foo[::T] {}; dd my Foo:D[Int] $i = Foo[Int].new 17:42
camelia Foo:D $i = Foo[Int].new
nine m: role Foo[::T] {}; dd my Foo:D[Int] $i .= new
camelia No appropriate parametric role variant available for 'Foo':
Cannot resolve caller (Foo); none of these signatures matches:
(::$?CLASS ::::?CLASS Mu, ::T Mu)
in block <unit> at <tmp> line 1
nine Another one of these bugs in the old frontend that become clear when you actually try to understand the code :)
lizmat ab5tract: github.com/Raku/nqp/pull/816 may be of interest 17:45
18:24 MasterDuke joined
MasterDuke the jvm build is currently broken because of 196fbee64e8002272a4a7ed853315eedd160204f. i have been holding off on merging github.com/Raku/nqp/pull/816 because it break on windows, but may merge anyway since then at least things fail faster... 18:28
ab5tract MasterDuke: thanks for mentioning this. it was breaking for me but I don't have the patience to bisect 18:46
Legacy dispatch can now also distinguish between $[] and [] 18:51
Geth rakudo/main: b411252a53 | (Elizabeth Mattijsen)++ | src/Perl6/Metamodel/RoleToClassApplier.nqp
Streamline Metamodel::RoleToClassApplier (Part 3/N)

  - statically inline compose_method_table sub: it's only called in
   one location, so why not have the code live there
  - streamline private/only method composition
  - add some more internal comments
18:54
lizmat ab5tract++ whee!
19:16 librasteve_ joined
ab5tract lizmat: so how do I kick the tires on a blin run? I don't think I want to set that up on my local machine 19:21
lizmat jdv probably knows 19:22
ab5tract pinging jdv re: blin runs on PR branches 19:40
Geth rakudo/main: d1a5b47970 | (Elizabeth Mattijsen)++ | src/Perl6/Metamodel/RoleToClassApplier.nqp
Streamline Metamodel::RoleToClassApplier (Part 4/N)

  - make checking for suitable candidates much smarter and much less
   involved, by having a local lookup hash with all candidates by name
  - added has_matching_candidate helper sub to check whether a given
   code object has a matching candidate in a list of code objects
20:20
lizmat this appears to bring CPU seconds of make spectest down from 1242 -> 1234, or .4% 20:21
ab5tract Nice one! 20:40
lizmat ah, 1230 even :-)
Geth rakudo/main: 3b736e56d6 | (Elizabeth Mattijsen)++ | src/Perl6/Metamodel/RoleToClassApplier.nqp
Streamline Metamodel::RoleToClassApplier (Part 5/5)

  - streamline attributes, parents and array_type handling
20:42
japhb If you mean it went 1242 -> 1230, that's a full 1%. :-D 20:46
lizmat well, almost 20:47
m: say 1230 / 1242
camelia 0.990338
Geth rakudo/main: c7d24b3dfb | (Elizabeth Mattijsen)++ | 2 files
Don't bother passing the target in the stubs

It's always the same, and available when composing a class
21:09
lizmat and that concludes my hacking for today&
ab5tract enjoy your rest! 21:24
23:31 sena_kun left
japhb m: say 1229 / 1242 23:34
camelia 0.989533
japhb lizmat: ^^ OK fine, within rounding error, 1230 is closer to 1% than 1129 is. ;-) 23:35
jdv ab5tract: it *should* work in docker 23:50
at least that's how i run it
ab5tract Nice! Which Dockerfile do you use? 23:51
23:51 sena_kun joined
jdv its in blin 23:51
docker/Dockerfile iirc 23:52
it might have a missing builds issue though. if it does i have a way around it but either AlexDaniel needs to fix it or we need to move it to community run (the mothership 23:53
)
ab5tract Ah, I should have looked more carefully. I’ll try to add something to the blin documentation about it once I get it working
jdv ok. i think there's a doc in that dir
good luck 23:54
ab5tract The readme could use a mention of it somewhere near the skull emoji, I reckon :)
jdv its pretty resource intensive and takes a while to run (at least on my piddly box) 23:55
ab5tract Thanks for the heads up. I’ll put some extra focus on patience 23:56
23:58 librasteve_ left