🦋 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. |
|||||||||||||||||||||||||||||||||||||||
[Coke] | Well, there are a LOT of alwaysfails. | 00:28 | |||||||||||||||||||||||||||||||||||||
weird. JSON::Class has a test-depends on Test::Async but blin is not seeing that dep - but so does WWW::GCloud:auth<zef:vrurg>:ver<0.0.7>, and blin *does* see that one. | 00:32 | ||||||||||||||||||||||||||||||||||||||
JSON:Class is defaulting to 0.0.6, but Red's dep hierarchy has two hits at v 0.0.14+ and 0.0.20+ | 00:39 | ||||||||||||||||||||||||||||||||||||||
(so my testing of JSON::Class wasn't helpful, since I was testing the wrong (old) version) | 00:41 | ||||||||||||||||||||||||||||||||||||||
SmokeMachine | That might be the “wrong” JSON::Class… | 00:47 | |||||||||||||||||||||||||||||||||||||
raku.land/?q=JSON::Class | 00:48 | ||||||||||||||||||||||||||||||||||||||
[Coke]: ^^ | 00:52 | ||||||||||||||||||||||||||||||||||||||
We have: JSON::Class:ver<0.0.6>:auth<zef:vrurg>:api<1.0.5> and JSON::Class:ver<0.0.21>:auth<zef:jonathanstowe>:api<1.0> | |||||||||||||||||||||||||||||||||||||||
[Coke] | so if you want a particular author's version, I'd put that in the declarations. | 00:54 | |||||||||||||||||||||||||||||||||||||
(oh, except it's not one of red's direct dependencies) | 00:55 | ||||||||||||||||||||||||||||||||||||||
SmokeMachine | Yeah… that’s not a direct dependency… | 00:56 | |||||||||||||||||||||||||||||||||||||
[Coke] | so I think my pointer to Test::Async was wrong, I was testing the wrong JSON::Class. (So let me test the right one...) | 00:58 | |||||||||||||||||||||||||||||||||||||
the last Red diagnostic I had was that JSON::Class wasn't installed, so hopefully the real error will be revealed shortly, sorry about the noise. | 00:59 | ||||||||||||||||||||||||||||||||||||||
SmokeMachine | No problem at all… I plan to open a MR to this: github.com/jonathanstowe/META6/blo...6.json#L34 | 01:01 | |||||||||||||||||||||||||||||||||||||
github.com/jonathanstowe/META6/pull/32 | 01:16 | ||||||||||||||||||||||||||||||||||||||
[Coke] tries to figure out why WWW::GCloud::API::Storage is showing up in a Blin run for Red. | 01:18 | ||||||||||||||||||||||||||||||||||||||
[Coke] gives up for the night. | |||||||||||||||||||||||||||||||||||||||
01:49
MasterDuke joined
|
|||||||||||||||||||||||||||||||||||||||
MasterDuke | m: q|my $a = 0; my $b; for ^3 { $a++; 1 but last; $a++; }; say $a|.EVAL | 01:50 | |||||||||||||||||||||||||||||||||||||
camelia | 1 | ||||||||||||||||||||||||||||||||||||||
MasterDuke | m: q|my $a = 0; my $b; for ^3 { $a++; 1 but last; $a++; }; say $a|.AST.EVAL | ||||||||||||||||||||||||||||||||||||||
camelia | Potential difficulties: Useless use of constant integer 1 in sink context at EVAL_0:1 1 |
||||||||||||||||||||||||||||||||||||||
MasterDuke | m: q|my $a = 0; my $b; for ^3 { $a++; $_ but last; $a++; }; say $a|.EVAL | 01:51 | |||||||||||||||||||||||||||||||||||||
camelia | 1 | ||||||||||||||||||||||||||||||||||||||
MasterDuke | m: q|my $a = 0; my $b; for ^3 { $a++; $_ but last; $a++; }; say $a|.AST.EVAL | ||||||||||||||||||||||||||||||||||||||
camelia | 1 | ||||||||||||||||||||||||||||||||||||||
MasterDuke | so RakuAST warns about the `1 but last`. regular frontend doesn't warn, and both do the right thing | 01:52 | |||||||||||||||||||||||||||||||||||||
i found this when running github.com/Raku/roast/blob/master/...6c.t#L155. it's not what's being tested, but i noticed the difference and don't know what's correct | 01:59 | ||||||||||||||||||||||||||||||||||||||
however, i also found what i do think is a bug in RakuAST accidentally triggered by that test file | 02:01 | ||||||||||||||||||||||||||||||||||||||
ha, maybe two bugs, now that i'm trying to get it in a form easily showable on irc | 02:03 | ||||||||||||||||||||||||||||||||||||||
m: use Test; role A { method a() { say "a" } }; throws-like { EVAL q[role A { method b() { say "b" } }] }, X::Syntax::Variable::Twigil | 02:04 | ||||||||||||||||||||||||||||||||||||||
camelia | # Subtest: did we throws-like X::Syntax::Variable::Twigil? 1..2 not ok 1 - code dies # Failed test 'code dies' # at <tmp> line 1 ok 2 - # SKIP Code did not die, can not check exception # You failed 1 test of 2 not… |
||||||||||||||||||||||||||||||||||||||
MasterDuke | m: use Test; { role A { method a() { say "a" } } }; throws-like { EVAL q[role A { method b() { say "b" } }] }, X::Syntax::Variable::Twigil | ||||||||||||||||||||||||||||||||||||||
camelia | # Subtest: did we throws-like X::Syntax::Variable::Twigil? 1..2 not ok 1 - code dies # Failed test 'code dies' # at <tmp> line 1 ok 2 - # SKIP Code did not die, can not check exception # You failed 1 test of 2 not… |
||||||||||||||||||||||||||||||||||||||
MasterDuke | notice both examples did not throw any exception and the second one differed in wrapping the initial `role A ...` declaration in braces | 02:06 | |||||||||||||||||||||||||||||||||||||
m: q|use Test; role A { method a() { say "a" } }; throws-like { EVAL q[role A { method b() { say "b" } }] }, X::Syntax::Variable::Twigil|.AST.EVAL | |||||||||||||||||||||||||||||||||||||||
camelia | lang-call cannot invoke object of type 'VMNull' belonging to no language in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
MasterDuke | that's the second bug, but why i can't show the RakuAST behavior | 02:07 | |||||||||||||||||||||||||||||||||||||
with `RAKUDO_RAKUAST=1`, the first version behaves the same, it doesn't die | 02:08 | ||||||||||||||||||||||||||||||||||||||
however, the second version (with the extra scope around the initial `role A ...`), instead fails because the exception type is `X::Redeclaration` and the message is `Redeclaration of symbol 'A'` | 02:10 | ||||||||||||||||||||||||||||||||||||||
that's a simplified version of github.com/Raku/roast/blob/master/...#L111-L116 | 02:11 | ||||||||||||||||||||||||||||||||||||||
Geth | roast: MasterDuke17++ created pull request #871: Simplify 6.c/s14 roles/mixin 6c.t |
02:25 | |||||||||||||||||||||||||||||||||||||
MasterDuke | so i think the first RakuAST bug is that the two role declarations are leaking into the same scope | 02:27 | |||||||||||||||||||||||||||||||||||||
easy to work around it by changing one of the names, but thought i'd mention it in case i'm just understanding what's going on incorrectly | 02:29 | ||||||||||||||||||||||||||||||||||||||
02:29
nine left
02:30
nine joined
02:52
MasterDuke left
06:58
finanalyst joined
|
|||||||||||||||||||||||||||||||||||||||
nine | MasterDuke: That's not a bug in RakuAST but in the spec tests and the old frontend. See github.com/Raku/roast/commit/17263...75e3476180 and github.com/Raku/roast/commit/6d586...b6a2736026 | 07:46 | |||||||||||||||||||||||||||||||||||||
tellable6 | nine, I'll pass your message to MasterDuke | ||||||||||||||||||||||||||||||||||||||
09:07
finanalyst left
12:03
JimmyZhuo joined
|
|||||||||||||||||||||||||||||||||||||||
JimmyZhuo | $ RAKUDO_RAKUAST=1 ./rakudo-m -e '1' | 12:04 | |||||||||||||||||||||||||||||||||||||
Cannot find method 'parse' on object of type NQPMu | |||||||||||||||||||||||||||||||||||||||
at NQP::src\HLL\Compiler.nqp:532 (E:\OpenSource\MoarVM\install\share\nqp\lib/NQPHLL.moarvm:parse) | |||||||||||||||||||||||||||||||||||||||
from NQP::src\HLL\Compiler.nqp:447 (E:\OpenSource\MoarVM\install\share\nqp\lib/NQPHLL.moarvm:execute_stage) | |||||||||||||||||||||||||||||||||||||||
from NQP::src\HLL\Compiler.nqp:483 (E:\OpenSource\MoarVM\install\share\nqp\lib/NQPHLL.moarvm:run) | |||||||||||||||||||||||||||||||||||||||
$ ./rakudo-m -e '1' | |||||||||||||||||||||||||||||||||||||||
WARNINGS for -e: | |||||||||||||||||||||||||||||||||||||||
Useless use of constant integer 1 in sink context (line 1) | |||||||||||||||||||||||||||||||||||||||
seems rakuast is broken on window | 12:05 | ||||||||||||||||||||||||||||||||||||||
nine | I guess something in the build system | 12:06 | |||||||||||||||||||||||||||||||||||||
JimmyZhuo | I think I get the problem | 12:07 | |||||||||||||||||||||||||||||||||||||
turns out my windows file system sometimes is broken | 12:10 | ||||||||||||||||||||||||||||||||||||||
lizmat | nine: github.com/rakudo/rakudo/issues/5815 made me reailize that we probably need logic that converts the BUILDPLAN to a RakuAST version of the POPULATE method | 12:25 | |||||||||||||||||||||||||||||||||||||
so that any introspection would also allow changes to the POPULATE method | 12:26 | ||||||||||||||||||||||||||||||||||||||
do you agree? | |||||||||||||||||||||||||||||||||||||||
for context maybe: the POPULATE method is the new BUILDALL :-) | |||||||||||||||||||||||||||||||||||||||
JimmyZhuo likes the name BUILDALL | 12:31 | ||||||||||||||||||||||||||||||||||||||
lizmat | you can still use BUILDALL if you want: it's just a thin shim around POPULATE nowadays | 12:33 | |||||||||||||||||||||||||||||||||||||
Geth | rakudo/main: 170711bde8 | (Stefan Seifert)++ | 4 files RakuAST: add lexical fixups for role bodies When code runs at BEGIN time, such as role bodies and BEGIN blocks, we need to ensure we get lexical outers fixed up properly when deserializing after pre-comp. To do this we make a list of closures, which each point to the outer context. These survive serialization and thus point at what has to be fixed up. |
12:50 | |||||||||||||||||||||||||||||||||||||
nine | That was a day and a half of hard work to get right. But it gets us to 851 passing spectest files on the bootstrapped compiler | ||||||||||||||||||||||||||||||||||||||
lizmat | wow! | 12:52 | |||||||||||||||||||||||||||||||||||||
nine: re github.com/rakudo/rakudo/issues/5815 | |||||||||||||||||||||||||||||||||||||||
I was thinking of taking a stab at the compiler services logic: the part in World responsible for creating accessors and creating the POPULATE method | 12:53 | ||||||||||||||||||||||||||||||||||||||
and turn them into proper RakuAST trees that can be incorporated into the RakuAST tree of a class | 12:54 | ||||||||||||||||||||||||||||||||||||||
nine | The accessor part already exists | ||||||||||||||||||||||||||||||||||||||
lizmat | in true RakuAST ? | ||||||||||||||||||||||||||||||||||||||
that's not using World's logic under the hood ? | |||||||||||||||||||||||||||||||||||||||
must've missed that | 12:55 | ||||||||||||||||||||||||||||||||||||||
nine | There is no World in RakuAST | ||||||||||||||||||||||||||||||||||||||
Look for RakuAST::CompilerServices | |||||||||||||||||||||||||||||||||||||||
lizmat | ah, but that generates directly to QAST ? | 12:56 | |||||||||||||||||||||||||||||||||||||
I mean, you wouldn't be able to do something to the accessor at CHECK / optimize time ? | 12:57 | ||||||||||||||||||||||||||||||||||||||
as it wouldn't exist as a tree ? | |||||||||||||||||||||||||||||||||||||||
nine | Again, look for RakuAST::CompilerServices and it will answer your questions | 12:58 | |||||||||||||||||||||||||||||||||||||
lizmat | ok, the answer is: it doesn't exists as a tree, it's directly QASTed | 13:02 | |||||||||||||||||||||||||||||||||||||
nine | There isn't much QAST involved at all. How much less could it be? | 13:03 | |||||||||||||||||||||||||||||||||||||
lizmat | I'm not worried about direct correctness, I'm worried about modules that would like to insert stuff into accessors, and not being able to because they don't exist in the tree | 13:04 | |||||||||||||||||||||||||||||||||||||
anyways, I've found the text: "# TODO: create method BUILDALL here" | 13:05 | ||||||||||||||||||||||||||||||||||||||
and the absence of the string BUILDPLAN in the ast dir | |||||||||||||||||||||||||||||||||||||||
so I guess BUILDPLAN -> RakuAST tree part would still have to be written | |||||||||||||||||||||||||||||||||||||||
and we're going to need that if we want Perl6/World.nqp to die | 13:06 | ||||||||||||||||||||||||||||||||||||||
nine: agree ? | |||||||||||||||||||||||||||||||||||||||
nine | Eventually, yes. I just wonder whether it would make more sense to have a complete regression test suite first? | 13:07 | |||||||||||||||||||||||||||||||||||||
After all the BUILDPLAN thing should behave exactly the same, just faster | |||||||||||||||||||||||||||||||||||||||
lizmat | the thing for *me* is, is that working on RakuAST with its build cycle, is getting to be really annoying on my current MBP | 13:08 | |||||||||||||||||||||||||||||||||||||
or should say: M1 MacMini | 13:09 | ||||||||||||||||||||||||||||||||||||||
After April 1st I'll be able to get me a much faster machine | |||||||||||||||||||||||||||||||||||||||
nine | You can have an account on my desktop as well. JimmyZhuo already has one | ||||||||||||||||||||||||||||||||||||||
Spectests in 2 minutes | |||||||||||||||||||||||||||||||||||||||
lizmat | but not if we're all doing that at the same time, I guess ? | 13:10 | |||||||||||||||||||||||||||||||||||||
nine | Well, we're not :) | ||||||||||||||||||||||||||||||||||||||
JimmyZhuo: there's a regression caused by your commit 9713c41f859e4179fea3ff5958bc09619cc94400: Default value '6.c' will never bind to a parameter of type str | 14:09 | ||||||||||||||||||||||||||||||||||||||
Default value '72' will never bind to a parameter of type int | |||||||||||||||||||||||||||||||||||||||
So the check is failing on native types | |||||||||||||||||||||||||||||||||||||||
JimmyZhuo | lizmat: github.com/Rakudo/Rakudo/commit/4f...3c02f125d, could you give me a test for this commit, thanks | 14:12 | |||||||||||||||||||||||||||||||||||||
nine: which test? | 14:13 | ||||||||||||||||||||||||||||||||||||||
nine | Happens when building rakudo on the bootstrap-rakuast branch (rebased on current main) | 14:14 | |||||||||||||||||||||||||||||||||||||
JimmyZhuo | if nqp::objprimspec($value-type) { | 14:15 | |||||||||||||||||||||||||||||||||||||
$value-type := $value-type.HOW.mro($value-type)[1]; | |||||||||||||||||||||||||||||||||||||||
} | |||||||||||||||||||||||||||||||||||||||
need some code like this? | |||||||||||||||||||||||||||||||||||||||
nine | yes | 14:16 | |||||||||||||||||||||||||||||||||||||
JimmyZhuo | nine: feel free to add it, and it's sleep time here , good night | 14:20 | |||||||||||||||||||||||||||||||||||||
22:20 clock here | |||||||||||||||||||||||||||||||||||||||
14:20
JimmyZhuo left
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo/main: 1a1aa92fc2 | (Stefan Seifert)++ | src/Raku/ast/expressions.rakumod RakuAST: don't sink target of bind Binding is a way to specifically avoid sinking, so don't. Fixes some infinite loops caused by accidental sinking of lazy infinite iterators. |
14:27 | |||||||||||||||||||||||||||||||||||||
nine | That's 881 | 14:32 | |||||||||||||||||||||||||||||||||||||
Geth | rakudo/main: 8d62f88d37 | (Stefan Seifert)++ | src/Raku/ast/signature.rakumod RakuAST: fix ** and + rw/raw slurpies to not containerize args Fixes: sub foo(**@a) { } |
15:35 | |||||||||||||||||||||||||||||||||||||
nine | And now it's 943 | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo/bootstrap-rakuast: 48 commits pushed by (Stefan Seifert)++ review: github.com/rakudo/rakudo/compare/d...92add74215 |
||||||||||||||||||||||||||||||||||||||
16:08
librasteve_ joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo/main: 291a614032 | (Stefan Seifert)++ | src/Raku/ast/nqp.rakumod RakuAST: never sink the results of nqp ops NQP ops are low level tools. They are used when magic is explicitly unwanted. |
16:09 | |||||||||||||||||||||||||||||||||||||
rakudo/main: b34d0f080b | (Stefan Seifert)++ | src/Raku/ast/expressions.rakumod RakuAST: don't sink assigments Assignments are also used to explicitly avoid sinking values. |
|||||||||||||||||||||||||||||||||||||||
nine | 970 passing. Most notably those pesky infinite loops are now gone | ||||||||||||||||||||||||||||||||||||||
16:09
finanalyst joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo/main: 20 commits pushed by (Stefan Seifert)++ review: github.com/rakudo/rakudo/compare/b...e52bcf6148 |
16:29 | |||||||||||||||||||||||||||||||||||||
rakudo/bootstrap-rakuast: 28 commits pushed by (Stefan Seifert)++ review: github.com/rakudo/rakudo/compare/6...f753578f99 |
16:31 | ||||||||||||||||||||||||||||||||||||||
[Tux] |
|
16:46 | |||||||||||||||||||||||||||||||||||||
tux.nl/Talks/CSV6/speed4-20.html / tux.nl/Talks/CSV6/speed4.html tux.nl/Talks/CSV6/speed.log | |||||||||||||||||||||||||||||||||||||||
Geth | rakudo/main: 4cb9daf8e2 | (Stefan Seifert)++ | 2 files RakuAST: tell QASTContext our actual language version |
16:48 | |||||||||||||||||||||||||||||||||||||
rakudo/main: c1378a280b | (Stefan Seifert)++ | src/Raku/ast/scoping.rakumod RakuAST: fix missing IMPL-TO-QAST on LexicalPackage |
|||||||||||||||||||||||||||||||||||||||
rakudo/main: c8fb690291 | (Stefan Seifert)++ | src/Raku/ast/signature.rakumod RakuAST: fix overly zealous parameter bind type compile time check We can be more lenient on native types as the binder can lower arguments. |
|||||||||||||||||||||||||||||||||||||||
nine | Setting still doesn't build though: Default value '0' will never bind to a parameter of type NuT:D | 16:51 | |||||||||||||||||||||||||||||||||||||
Thing is, I think the compiler is correct here. | |||||||||||||||||||||||||||||||||||||||
my role Rational[::NuT = Int, ::DeT = Mu] does Real | 16:52 | ||||||||||||||||||||||||||||||||||||||
method new(NuT:D \nu = 0, DeT:D \de = 1) | |||||||||||||||||||||||||||||||||||||||
On the one hand, yes the default for NuT is Int to which 0 would most definitely bind. On the other hand though, it doesn't have to be. | |||||||||||||||||||||||||||||||||||||||
16:57
finanalyst left
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo/main: 584ea0ff59 | (Stefan Seifert)++ | src/Raku/ast/signature.rakumod RakuAST: fix overzealous parameter default type check failing on generics |
17:03 | |||||||||||||||||||||||||||||||||||||
nine | Ok, this brings us back on track | ||||||||||||||||||||||||||||||||||||||
lizmat | nice, 1278 for me now | 17:20 | |||||||||||||||||||||||||||||||||||||
bisectable6: old=2024.04 enum E (A => %(class => Array)); dd A.pairs | 17:21 | ||||||||||||||||||||||||||||||||||||||
bisectable6 | lizmat, Bisecting by output (old=2024.04 new=8d62f88) because on both starting points the exit code is 0 | ||||||||||||||||||||||||||||||||||||||
lizmat, bisect log: gist.github.com/7bff1f5a7d8c3f45fe...61bd626f41 | 17:23 | ||||||||||||||||||||||||||||||||||||||
lizmat, There are 18 candidates for the first “new” revision. See the log for more details | |||||||||||||||||||||||||||||||||||||||
lizmat | me | ||||||||||||||||||||||||||||||||||||||
h | |||||||||||||||||||||||||||||||||||||||
17:42
finanalyst joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo/main: a36de41a4a | (Elizabeth Mattijsen)++ | src/Perl6/Metamodel/EnumHOW.nqp Wrap enum value stringification in a quietly In response to #5794. Enums keep both a forward hash as well as an inverted hash. The issue describes warning creating the reverse hash if type values were encountered in data-structures such as hashes and arrays used as value in an enum. Since this needed a fix in the metamodel, and NQP doesn't know quietly, basically copied the QAST from the quietly handling in the grammar. |
17:53 | |||||||||||||||||||||||||||||||||||||
18:18
finanalyst left
18:23
sena_kun joined
19:01
finanalyst joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo/main: 63a4ba3f2b | (Stefan Seifert)++ | 2 files RakuAST: fix accessing natively typed parameters in nqp ops Fixes; sub foo(int $digits) { nqp::pow_I(10, $digits, Num, Int) }; |
19:07 | |||||||||||||||||||||||||||||||||||||
nine | And we're at 1024 in full bootstrap mode :) | 19:08 | |||||||||||||||||||||||||||||||||||||
lizmat | NICE! | ||||||||||||||||||||||||||||||||||||||
nine | At least it payed off. That was a hard one with all the entanglement between variable declarations, parameters, signatures and signature binds | 19:09 | |||||||||||||||||||||||||||||||||||||
Geth | rakudo/main: f8a30b2955 | (Elizabeth Mattijsen)++ | 4 files RakuAST: Fix my @a = :a:b; As indicated by #5680. This commit: - change ::ColonPairs.new to use a slurpy, but still maintains the semantics of the old interface as well (which is used in the Raku grammar) - add .raku and deparsing logic - add missing IMPL-TO-QAST method |
19:24 | |||||||||||||||||||||||||||||||||||||
roast: fb962f394c | (Elizabeth Mattijsen)++ | S02-literals/pairs.t Add TODOd test for #5680 |
19:30 | ||||||||||||||||||||||||||||||||||||||
lizmat | and that concludes my hacking for today& | 19:41 | |||||||||||||||||||||||||||||||||||||
19:43
finanalyst left
20:08
Altai-man joined
20:10
sena_kun left
21:39
finanalyst joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo/main: 3805890479 | (Stefan Seifert)++ | 2 files RakuAST: fix enums getting shadowed by pre-existing packages Fixes: package Foo::Bar {}; enum Foo <a b>; |
21:42 | |||||||||||||||||||||||||||||||||||||
nine | 1027 | ||||||||||||||||||||||||||||||||||||||
22:56
finanalyst left
23:13
Altai-man left
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo: MasterDuke17++ created pull request #5816: RakuAST: throw for '!' vars in 'my' | 'our' | 'state' scope |
23:31 |