[02:42] *** gfldex left
[03:38] *** gfldex joined
[06:28] <[Tux]> Rakudo v2024.03-127-gc6adc333c (v6.d) on MoarVM 2024.03-3-gf2220d93d

[06:28] <[Tux]> csv-test-xs-20      0.141 -  0.143

[06:28] <[Tux]> csv-ip5xs           0.256 -  0.263

[06:28] <[Tux]> test-t --race       0.276 -  0.276

[06:28] <[Tux]> test-t              0.418 -  0.433

[06:28] <[Tux]> csv-ip5xs-20        1.123 -  1.159

[06:28] <[Tux]> test-t-20 --race    1.214 -  1.250

[06:28] <[Tux]> csv-parser          1.541 -  1.564

[06:28] <[Tux]> test                1.991 -  2.007

[06:28] <[Tux]> test-t-20           5.150 -  5.214

[06:29] <[Tux]> Errors in building the test have greatly improved. This is all that is left:

[06:29] <[Tux]> ............This type (NQPRoutine) does not support positional operations

[06:29] <[Tux]>   in method require at /pro/3gl/CPAN/rakudo/install/share/perl6/site/sources/FE0EA2E16CD0CD31716830FEE610E9B4116A2281 (Inline::Perl5) line 1057

[06:29] <[Tux]>   in method use at /pro/3gl/CPAN/rakudo/install/share/perl6/site/sources/FE0EA2E16CD0CD31716830FEE610E9B4116A2281 (Inline::Perl5) line 1163

[06:29] <[Tux]>   in block <unit> at csv-ip5pp.pl line 8

[06:57] <nine> Man it sucks when an approach gets you to the 99 % mark but you realize that it cannot get you to 100.

[07:00] <nine> 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:01] <nine> 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:46] <nine> Of course the problem is hard. We haven't even solved it in the old frontend yet:

[07:46] <nine> nine@sphinx:~/rakudo (main *>)> echo 'unit class Foo::Bar; method yes() { say "yes" }' > lib/Foo/Bar.rakumod

[07:46] <nine> nine@sphinx:~/rakudo (main *>)> rakudo -Ilib -e 'use Foo::Bar; Foo::Bar.yes'

[07:46] <nine> BUT:

[07:46] <nine> yes

[07:46] <nine> nine@sphinx:~/rakudo (main *>)> rakudo -Ilib -e 'require Foo::Bar; Foo::Bar.yes'

[07:46] <nine> yes

[07:46] <nine> nine@sphinx:~/rakudo (main *>)> echo 'unit class Foo; method yes() { say "yes" }' > lib/Foo.rakumod

[07:46] <nine> nine@sphinx:~/rakudo (main *>)> rakudo -Ilib -e 'use Foo; Foo.yes'

[07:46] <nine> yes

[07:46] <nine> nine@sphinx:~/rakudo (main *>)> rakudo -Ilib -e 'require Foo; Foo.yes'

[07:46] <nine> No such method 'yes' for invocant of type 'Foo'

[07:47] <nine> For Foo::Bar we at runtime just replace the Foo.WHO<Bar> package stub with the class we found in the loaded module.

[07:48] <nine> 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.

[08:30] *** sena_kun joined
[08:39] <lizmat> hmmm  but how difficult would it be to turn that stub into a class at runtime?

[08:39] <lizmat> or are fearing issues i codegen with Foo being a stub at compile time, and a package at runtime?

[08:39] <lizmat> *you

[08:46] <nine> Well we cannot change the nature of an existing object, can we?

[08:49] <lizmat> we could for an object that contains another object, much like a container object?

[08:49] <lizmat> if we would codegen the stub as a container, we could, no?

[08:55] <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.

[09:01] <Geth> ¦ rakudo/main: cee9f57201 | (Elizabeth Mattijsen)++ | src/Perl6/Metamodel/MultiMethodContainer.nqp

[09:01] <Geth> ¦ rakudo/main: Streamline Metamodel::MultiMethodContainer (Part 2/N)

[09:01] <Geth> ¦ rakudo/main: 

[09:01] <Geth> ¦ rakudo/main: Change autogen_proto selection from a ternary to an array lookup,

[09:01] <Geth> ¦ rakudo/main: which is about 40% faster.  Also refactor error handling a bit.

[09:01] <Geth> ¦ rakudo/main: review: https://github.com/rakudo/rakudo/commit/cee9f57201

[09:22] *** sena_kun left
[09:39] <Geth> ¦ rakudo/main: 0f3c775f4f | (Elizabeth Mattijsen)++ | src/Perl6/Metamodel/MultiMethodContainer.nqp

[09:39] <Geth> ¦ rakudo/main: Streamline Metamodel::MultiMethodContainer (Part 3/N)

[09:39] <Geth> ¦ rakudo/main: 

[09:39] <Geth> ¦ rakudo/main: - abstract adding a new proto / dispatchee into a helper sub

[09:39] <Geth> ¦ rakudo/main: - constantize fetching method table when we're sure no submethods

[09:39] <Geth> ¦ rakudo/main: review: https://github.com/rakudo/rakudo/commit/0f3c775f4f

[10:15] <Geth> ¦ nqp/main: c92ed85ec1 | (Elizabeth Mattijsen)++ | src/how/NQPClassHOW.nqp

[10:15] <Geth> ¦ nqp/main: Slight tweak in fetching MRO

[10:15] <Geth> ¦ nqp/main: 

[10:15] <Geth> ¦ nqp/main: When the REA harvester crashes, it crashes at the next line with

[10:15] <Geth> ¦ nqp/main: $mro being nqp::null.  Since the codegenning for $mro := $!mro

[10:15] <Geth> ¦ nqp/main: and $mro := nqp::getattr(self, NQPClassHOW, '$!mro') is different,

[10:15] <Geth> ¦ nqp/main: change it to the other way to see whether this produces the same

[10:15] <Geth> ¦ nqp/main: kind of crash.  Or hopefully not!

[10:15] <Geth> ¦ nqp/main: review: https://github.com/Raku/nqp/commit/c92ed85ec1

[10:32] <Geth> ¦ rakudo/main: d2f70be380 | (Elizabeth Mattijsen)++ | tools/templates/NQP_REVISION

[10:32] <Geth> ¦ rakudo/main: Bump NQP for the latest NQP fixes

[10:32] <Geth> ¦ rakudo/main: review: https://github.com/rakudo/rakudo/commit/d2f70be380

[11:08] <Geth> ¦ rakudo/main: 8159ed44cd | (Elizabeth Mattijsen)++ | src/Perl6/Metamodel/MethodContainer.nqp

[11:08] <Geth> ¦ rakudo/main: Make .add_method return the updated table

[11:08] <Geth> ¦ rakudo/main: 

[11:08] <Geth> ¦ rakudo/main: To make life easier for .incorporate_multi_candidates

[11:08] <Geth> ¦ rakudo/main: review: https://github.com/rakudo/rakudo/commit/8159ed44cd

[11:16] <Geth> ¦ rakudo/main: c751668bb8 | (Elizabeth Mattijsen)++ | src/Perl6/Metamodel/MultiMethodContainer.nqp

[11:16] <Geth> ¦ rakudo/main: Streamline Metamodel::MultiMethodContainer (Part 4/4)

[11:16] <Geth> ¦ rakudo/main: 

[11:16] <Geth> ¦ rakudo/main: - only fetch (sub)method lookup table once, instead of each iteration

[11:16] <Geth> ¦ rakudo/main: - update local lookup table on changes

[11:16] <Geth> ¦ rakudo/main: - add more internal comments

[11:16] <Geth> ¦ rakudo/main: review: https://github.com/rakudo/rakudo/commit/c751668bb8

[11:48] <Geth> ¦ rakudo/main: d29d3c11f8 | (Elizabeth Mattijsen)++ | src/Perl6/ModuleLoader.nqp

[11:48] <Geth> ¦ rakudo/main: Streamline ModuleLoader (Part 2/N)

[11:48] <Geth> ¦ rakudo/main: 

[11:48] <Geth> ¦ rakudo/main: - reduce accesses to dynamic variables

[11:48] <Geth> ¦ rakudo/main: - use nqp::atkey vs {}

[11:48] <Geth> ¦ rakudo/main: review: https://github.com/rakudo/rakudo/commit/d29d3c11f8

[12:44] <Geth> ¦ rakudo/main: 0f8c0d7e94 | (Elizabeth Mattijsen)++ | src/Perl6/ModuleLoader.nqp

[12:44] <Geth> ¦ rakudo/main: Streamline ModuleLoader (Part 3/N)

[12:44] <Geth> ¦ rakudo/main: 

[12:44] <Geth> ¦ rakudo/main: Specifically, the resolving of conflicts.  Also check for prefix &

[12:44] <Geth> ¦ rakudo/main: before checking hashes, as the prefix & check is faster, so would

[12:44] <Geth> ¦ rakudo/main: trigger without needing a hash lookup

[12:44] <Geth> ¦ rakudo/main: review: https://github.com/rakudo/rakudo/commit/0f8c0d7e94

[13:42] <Geth> ¦ rakudo/main: 35b87f3637 | (Elizabeth Mattijsen)++ | src/Perl6/ModuleLoader.nqp

[13:42] <Geth> ¦ rakudo/main: Streamline ModuleLoader (Part 4/N)

[13:42] <Geth> ¦ rakudo/main: 

[13:42] <Geth> ¦ rakudo/main: Move setting up of known symbols out of the loop.  It's unclear

[13:42] <Geth> ¦ rakudo/main: why this was done inside the loop iterating over all source

[13:42] <Geth> ¦ rakudo/main: symbols to be merged.

[13:42] <Geth> ¦ rakudo/main: 

[13:42] <Geth> ¦ rakudo/main: This is make (spec)test clean, but done in  a separate commit

[13:42] <Geth> ¦ rakudo/main: anyway as to later be able to better bisect should this change

[13:42] <Geth> ¦ rakudo/main: affect the ecosystem.

[13:42] <Geth> ¦ rakudo/main: review: https://github.com/rakudo/rakudo/commit/35b87f3637

[14:33] <vrurg> I wonder if AttrX::Mooish is tested during blin runs. Because 2024.03 broke it.

[15:36] <jdv> how did it break?

[15:37] <jdv> sometimes breakages arent reported in obvious ways and i miss them

[15:39] <jdv> weird.  i dont see it here:  https://github.com/rakudo/rakudo/issues/5539

[16:49] <Geth> ¦ rakudo/main: 48e87465c8 | (Elizabeth Mattijsen)++ | src/Perl6/ModuleLoader.nqp

[16:49] <Geth> ¦ rakudo/main: Streamline ModuleLoader (Part 5/N)

[16:49] <Geth> ¦ rakudo/main: 

[16:49] <Geth> ¦ rakudo/main: Tweaks lexical merging of globals

[16:49] <Geth> ¦ rakudo/main: review: https://github.com/rakudo/rakudo/commit/48e87465c8

[17:25] *** sena_kun joined
[17:58] <Geth> ¦ rakudo/main: 5cbd82d3cf | (Elizabeth Mattijsen)++ | src/Perl6/ModuleLoader.nqp

[17:58] <Geth> ¦ rakudo/main: Streamline ModuleLoader (Part 6/N)

[17:58] <Geth> ¦ rakudo/main: 

[17:58] <Geth> ¦ rakudo/main: Tweaks global merging

[17:58] <Geth> ¦ rakudo/main: review: https://github.com/rakudo/rakudo/commit/5cbd82d3cf

[18:39] <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.

[20:24] *** vrurg_ joined
[20:26] *** vrurg left
[20:35] *** vrurg_ is now known as vrurg

[23:34] *** sena_kun left
