🦋 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.
02:42 gfldex left 03:38 gfldex joined
[Tux] Rakudo v2024.03-127-gc6adc333c (v6.d) on MoarVM 2024.03-3-gf2220d93d
csv-ip5xs0.256 - 0.263
csv-ip5xs-201.123 - 1.159
csv-parser1.541 - 1.564
csv-test-xs-200.141 - 0.143
test1.991 - 2.007
test-t0.418 - 0.433
test-t --race0.276 - 0.276
test-t-205.150 - 5.214
test-t-20 --race1.214 - 1.250
06:28
Errors in building the test have greatly improved. This is all that is left: 06:29
............This type (NQPRoutine) does not support positional operations
in method require at /pro/3gl/CPAN/rakudo/install/share/perl6/site/sources/FE0EA2E16CD0CD31716830FEE610E9B4116A2281 (Inline::Perl5) line 1057
in method use at /pro/3gl/CPAN/rakudo/install/share/perl6/site/sources/FE0EA2E16CD0CD31716830FEE610E9B4116A2281 (Inline::Perl5) line 1163
in block <unit> at csv-ip5pp.pl line 8
nine Man it sucks when an approach gets you to the 99 % mark but you realize that it cannot get you to 100. 06:57
For Foo::Bar.foo we currently generate code like QAST::Op.new(:op<callmethod>, :name<foo>, QAST::WVal.new(:value(Foo::Bar)). Works beautifully because we have a compile-time-value for Foo::Bar which either comes from the setting, got imported via use (a BEGIN time effect) or is something we just compiled ourselves. 07:00
However Foo::Bar could also be imported by a require Foo::Bar; which at compile time only installs stubs for Foo and Foo::Bar and replaces Bar with the actual value only at runtime. Our WVal would then still contain the stub. 07:01
Of course the problem is hard. We haven't even solved it in the old frontend yet: 07:46
nine@sphinx:~/rakudo (main *>)> echo 'unit class Foo::Bar; method yes() { say "yes" }' > lib/Foo/Bar.rakumod
nine@sphinx:~/rakudo (main *>)> rakudo -Ilib -e 'use Foo::Bar; Foo::Bar.yes'
BUT:
yes
nine@sphinx:~/rakudo (main *>)> rakudo -Ilib -e 'require Foo::Bar; Foo::Bar.yes'
yes
nine@sphinx:~/rakudo (main *>)> echo 'unit class Foo; method yes() { say "yes" }' > lib/Foo.rakumod
nine@sphinx:~/rakudo (main *>)> rakudo -Ilib -e 'use Foo; Foo.yes'
yes
nine@sphinx:~/rakudo (main *>)> rakudo -Ilib -e 'require Foo; Foo.yes'
No such method 'yes' for invocant of type 'Foo'
For Foo::Bar we at runtime just replace the Foo.WHO<Bar> package stub with the class we found in the loaded module. 07:47
For Foo we cannot do that as the Foo package stub is a lexical symbol so we just merge the stash of the class found in the loaded module into the stub, but that of course won't turn that stub into a class. 07:48
08:30 sena_kun joined
lizmat hmmm but how difficult would it be to turn that stub into a class at runtime? 08:39
or are fearing issues i codegen with Foo being a stub at compile time, and a package at runtime?
*you
nine Well we cannot change the nature of an existing object, can we? 08:46
lizmat we could for an object that contains another object, much like a container object? 08:49
if we would codegen the stub as a container, we could, no?
nine Yes, that's one possibility I'm considering. Just codegen QAST::Op(:op<decont>, QAST::WVal.new(:value($container))) and code that will put the actual symbol from the module into this container. 08:55
Geth rakudo/main: cee9f57201 | (Elizabeth Mattijsen)++ | src/Perl6/Metamodel/MultiMethodContainer.nqp
Streamline Metamodel::MultiMethodContainer (Part 2/N)

Change autogen_proto selection from a ternary to an array lookup, which is about 40% faster. Also refactor error handling a bit.
09:01
09:22 sena_kun left
Geth rakudo/main: 0f3c775f4f | (Elizabeth Mattijsen)++ | src/Perl6/Metamodel/MultiMethodContainer.nqp
Streamline Metamodel::MultiMethodContainer (Part 3/N)

  - abstract adding a new proto / dispatchee into a helper sub
  - constantize fetching method table when we're sure no submethods
09:39
nqp/main: c92ed85ec1 | (Elizabeth Mattijsen)++ | src/how/NQPClassHOW.nqp
Slight tweak in fetching MRO

When the REA harvester crashes, it crashes at the next line with
  $mro being nqp::null. Since the codegenning for $mro := $!mro
and $mro := nqp::getattr(self, NQPClassHOW, '$!mro') is different, change it to the other way to see whether this produces the same kind of crash. Or hopefully not!
10:15
rakudo/main: d2f70be380 | (Elizabeth Mattijsen)++ | tools/templates/NQP_REVISION
Bump NQP for the latest NQP fixes
10:32
rakudo/main: 8159ed44cd | (Elizabeth Mattijsen)++ | src/Perl6/Metamodel/MethodContainer.nqp
Make .add_method return the updated table

To make life easier for .incorporate_multi_candidates
11:08
rakudo/main: c751668bb8 | (Elizabeth Mattijsen)++ | src/Perl6/Metamodel/MultiMethodContainer.nqp
Streamline Metamodel::MultiMethodContainer (Part 4/4)

  - only fetch (sub)method lookup table once, instead of each iteration
  - update local lookup table on changes
  - add more internal comments
11:16
rakudo/main: d29d3c11f8 | (Elizabeth Mattijsen)++ | src/Perl6/ModuleLoader.nqp
Streamline ModuleLoader (Part 2/N)

  - reduce accesses to dynamic variables
  - use nqp::atkey vs {}
11:48
rakudo/main: 0f8c0d7e94 | (Elizabeth Mattijsen)++ | src/Perl6/ModuleLoader.nqp
Streamline ModuleLoader (Part 3/N)

Specifically, the resolving of conflicts. Also check for prefix & before checking hashes, as the prefix & check is faster, so would trigger without needing a hash lookup
12:44
rakudo/main: 35b87f3637 | (Elizabeth Mattijsen)++ | src/Perl6/ModuleLoader.nqp
Streamline ModuleLoader (Part 4/N)

Move setting up of known symbols out of the loop. It's unclear why this was done inside the loop iterating over all source symbols to be merged.
This is make (spec)test clean, but done in a separate commit anyway as to later be able to better bisect should this change affect the ecosystem.
13:42
vrurg I wonder if AttrX::Mooish is tested during blin runs. Because 2024.03 broke it. 14:33
jdv how did it break? 15:36
sometimes breakages arent reported in obvious ways and i miss them 15:37
weird. i dont see it here: github.com/rakudo/rakudo/issues/5539 15:39
Geth rakudo/main: 48e87465c8 | (Elizabeth Mattijsen)++ | src/Perl6/ModuleLoader.nqp
Streamline ModuleLoader (Part 5/N)

Tweaks lexical merging of globals
16:49
17:25 sena_kun joined
Geth rakudo/main: 5cbd82d3cf | (Elizabeth Mattijsen)++ | src/Perl6/ModuleLoader.nqp
Streamline ModuleLoader (Part 6/N)

Tweaks global merging
17:58
vrurg jdv: It doesn't pass `prove6 -I.`. Since it throws there is no way for exit code to be 0, no to mention no any TAP output from failing tests, only error messages. 18:39
20:24 vrurg_ joined 20:26 vrurg left 20:35 vrurg_ is now known as vrurg 23:34 sena_kun left