🦋 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.
05:05 guifa left 05:52 finanalyst joined
Geth rakudo/main: c736ec009f | (Jimmy Zhuo)++ | src/Raku/ast/statements.rakumod
RakuAST: Fix while "D" { last }
06:02
rakudo/main: 403252cf63 | niner++ (committed using GitHub Web editor) | src/Raku/ast/statements.rakumod
Merge pull request #5840 from zhuomingliang/main

RakuAST: Fix while "D" { last }
rakudo/main: 9ebb5c87e1 | (Stefan Seifert)++ | src/Raku/ast/signature.rakumod
RakuAST: prohibit using attribute accessors as parameter targets in submethods
06:54
rakudo/main: 038a6e8567 | (Stefan Seifert)++ | 2 files
RakuAST: prohibit attribute access as parameter target in subs
rakudo/main: d505730c5d | (Stefan Seifert)++ | src/Raku/ast/signature.rakumod
RakuAST: avoid misleading error when attribute accessor is used in sig outside package
nine 1340
07:04 timo left 07:07 timo joined
Geth roast: 83b89bd1de | (Stefan Seifert)++ | S14-roles/parameterized-type.t
Fix accidental declaration of our scoped role in another role's signature

The declarations made in a role's signature are meant to go into that role's body. However it's illegal to make our scoped declarations inside roles as that scope is generic. Thus it should be wrong to declare an our scoped role in another role's signature and a more picky compiler might complain.
07:36
rakudo/main: b0ff120046 | (Stefan Seifert)++ | 4 files
RakuAST: prohibit our scoped declarations in roles
07:41
nine 1341
08:55 samebchase4 joined, gfldex left, samebchase left, samebchase4 is now known as samebchase 08:56 gfldex joined 09:22 sena_kun joined
Geth rakudo/main: 1a8c681367 | (Stefan Seifert)++ | 3 files
RakuAST: allow for parameterization of type with variables

The variable can resolve to a container and that's what the type will be parameterized with.
09:34
nine I think this is about as far as I'm gonna take it. 09:48
t/spec/S02-types/generics.t, t/spec/S02-types/is-type.rakudo.moar, t/spec/S02-types/nominalizables.t and most likely t/spec/S12-methods/qualified.t are vrurg's generics stuff. 09:49
t/spec/S14-roles/versioning.t fails due to missing POPULATE which feels bogus as I don't think we should require an implementation to generate a POPULATE method. That it's expecting a POPULATE is more a workaround for there being such a method and the test really should make it optional. 09:50
I assume lizmat++ will take care of the 5 failing files in S26-documentation as she's vastly more qualified than me for the RakuDOC stuff. 09:51
And that's it.
Oh, I forgot, there's also t/spec/S04-statements/label.t. It fails 2 cases where the proper behavior is still up for discussion and where I think that the tests are wrong. 09:53
m: @ = (while True { while True { say "WhileLoop"; last } }) # Obviously this is lazy
camelia ( no output )
nine m: @ = (L1: while True { while True { say "WhileLoop"; last L1 } }) # this however is eager and the test requires this, but why would the precense of a label make the loop eager? 09:54
camelia WhileLoop
nine Like I detailed the first time I encountered this spectest file, the code for while/until loops is riddled with bugs and this spectest just enshrines those bugs 09:55
lizmat nine: i just realized re declarator doc bugs, I've been looking at the wrong place 09:57
suppose this case: 09:58
#= leading doc
my $foo = 42
does the leading doc attach to the 42, or to the container of $foo
?
nine I do not have the slightest idea :) I barely have spent any time with RakuDOC at all 10:00
Not just in the RakuAST effort. Even when writing Raku code I haven't used it 10:01
lizmat well, in the legacy grammar, it attached to the value afaics 10:04
in RakuAST it attaches to the container
which I think would be the correct behaviour
it's just that .WHY currently decontainerizes 10:05
and thus never finds the .WHY on the container
(at least, that's my current theory)
nine Well, yes, documenting the variable would make more sense to me than documenting that value. 10:07
lizmat well, I guess in the case of a "my" variable maybe not so much, unless it is exported (can we do that now?) 10:09
anyways, trying to fix MU.WHY sends the settings compilation into a tailspin... so moving that code now to core_epilogue
as we don't need that in the setting itself anyway 10:10
Geth rakudo/bootstrap-rakuast: 15 commits pushed by (Stefan Seifert)++
review: github.com/rakudo/rakudo/compare/6...0d8fb9bcbf
10:12
lizmat hmmm... but if we attach it to the container, we would at least to mix in a $!why attribute into it 10:25
which then leads to the question: why do things like Attribute / Block objects have a $!why attribute, when that could have been mixed in when needed ? 10:26
all in all this is starting to look like a legacy house of cards that is pretty fragile :-( 10:27
nine Sounds exactly like my experience with package installation 10:29
lizmat #| leading 10:30
my $a = sub { };
say $a.WHY;
$a = 42;
say $a.WHY;
shows: leading
Sorry, no documentation is attached to Int.
so in the legacy grammar, it is attached to the sub and not $a 10:31
and the spectests are testing for that
so now I have half a mind to just remove those spectests
Geth rakudo/bootstrap-rakuast: 1b0fd7daac | (Stefan Seifert)++ | src/Raku/ast/type.rakumod
RakuAST: don't type check native values in enums
10:35
lizmat m: role A { has $.a }; my $a = 42; $a.VAR does A(666); say $a.a; $a = 43 # apparently we can't mixin roles into a container :-( 11:45
camelia 666
Cannot assign to an immutable value
in block <unit> at <tmp> line 1
lizmat at least not with infix:<does> 11:46
m: role A { has $.a }; my $a = 42; $a.VAR.^mixin(A); say $a.a; $a = 43 # also not with ^mixin :-( 11:47
camelia (Any)
Cannot assign to an immutable value
in block <unit> at <tmp> line 1
12:18 finanalyst left
lizmat nine: I'm now leaning towards *not* allowing declarator docs on variables 12:28
which provides a bit of a conundrum, as we *do* want to allow declarator docs on attributes
but variables and attributes in RakuAST share the same RakuAST::Var::Declaration::Simple class 12:29
nine: did you ever consider making a RakuAST::Attribute class, as a subcllass of RakuAST::Var::Declararion::Simple ? 12:38
argh, now I find that subroutines that do not take any args *can* have trailing declarator doc after the opening { 12:56
but subroutines that *do* take arguments can not, as they potentially would apply to the parameter
so I'm thinking of simply disallowing any trailing declarator docs on blocky things 12:58
13:13 rakkable left, rakkable joined
lizmat rakkable: eco-pr ^#= 13:13
rakkable lizmat, Running: eco-provides ^#=, please be patient!
13:13 rakkable left 13:14 rakkable joined 13:22 Altai-man joined 13:24 sena_kun left 13:25 guifa joined
lizmat just finds 4 community modules that use declarator docs incorrectly *sigh* 13:29
nine lizmat: As its name says VarDeclaration::Simple is so complicated that I do not dare touch it unless I absolutely must 13:48
After all a "simple" var declaration can be a lexical, a parameter, an object attribute or a class attribute or a dynamic variable 13:50
Geth rakudo/main: 8bdbc9f8d9 | (Elizabeth Mattijsen)++ | src/Raku/Actions.nqp
RakuAST: only set declarand for attributes

Setting declarator docs on variables in general is currently impossible without a significant overhaul of the way declarator docs are being handled: currently, object types that support declarator docs have a
  $!why attribute, which is usually not used. An approach with mixing
in a $!why attribute on demand on Scalar containers proved to be a failure.
So all variable declarations (apart from attributes) are now ignored.
17:01
lizmat 1342
roast: 63732f8490 | (Elizabeth Mattijsen)++ | S26-documentation/why-trailing.t
Put trailing declarator doc at right position

In RakuDoc this is a lot more strict than in the legacy grammar
17:06
lizmat 1343
Geth roast: 66b5f51a26 | (Elizabeth Mattijsen)++ | S26-documentation/why-both.t
Put trailing declarator doc at right position

In RakuDoc this is a lot more strict than in the legacy grammar
17:08
lizmat 1344
17:27 finanalyst joined
lizmat nine: looks like t/spec/S26-documentation/block-xxx is blocking on #( ) constructs not working 17:49
which appears to be related to quibble handling
Geth roast: ef16fc6c67 | (Elizabeth Mattijsen)++ | S26-documentation/block-trailing.t
Put trailing declarator doc at right position

In RakuDoc this is a lot more strict than in the legacy grammar
18:42
[Coke] nine++ 18:53
lizmat++
by my count, that leaves 6 spectests? 18:54
(many of which nine listed above as needing attention)
amazing work. 18:55
Geth roast: caf6dd4137 | (Elizabeth Mattijsen)++ | 2 files
Declarator doc #| and #= *must* have a whitespace following

Maybe we can relax that at a later point, but the RakuDoc definition states there must be whitespace. So enforce that in the tests
18:57
rakudo/main: 7b0f03ea70 | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: must have whitespace after #| and #=

As stated in the RakuDoc v2.0 definition
18:59
lizmat 136
1346 I mean :-)
[Coke] looks like we lost some make test - 26 failures now. 19:10
lizmat yeah :-)
[Coke] down to 140 passing make test. will see if I can golf some of them.
lizmat you mean without RAKUDO_RAKUAST=1 ? 19:11
[Coke] oh, 6 of the are macros, which I think are a very likely cut.
lizmat: no, with that
we were passing 145/166, now at 140
lizmat hmmm... will look at that tomorrow probably :-) 19:12
[Coke] ok. 19:15
oh - outside of a release, I just did a make spectest which said inline::perl5 isn't installed, so I ran that zef command it suggested, and then ran spectest again ... still get the "not installed" message. so I am wondering if the issue is NOT with the Akefile. 19:19
lizmat it probably isn't... I noticed that just now myself 19:32
afk& 19:42
[Coke] spectest isn't clean here. 20:17
[Coke] updates github.com/rakudo/rakudo/issues/5841 20:20
20:23 codesections joined 20:25 codesections left 21:54 finanalyst left 22:25 guifa left 22:39 guifa joined 22:43 Altai-man left