🦋 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] |
|
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
|