🦋 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.
releasable6 Next release in ≈1 day and ≈15 hours. There are no known blockers. Please log your changes in the ChangeLog: github.com/rakudo/rakudo/wiki/ChangeLog-Draft 03:00
Geth rakudo/main: dc4e30ce2a | (Stefan Seifert)++ | src/Raku/ast/resolver.rakumod
RakuAST: use type suggestions when reporting undeclared types

No idea why I thought routine suggestions would be of any help here.
Again MasterDuke++ for staying vigilant!
08:25
rakudo/main: 8f268d294e | (Stefan Seifert)++ | 2 files
RakuAST: actually support old EXPORTHOW API

Even though according to a comment, this API should have been removed before "6.0.0" there's at least one spectest still using it.
08:39
nine 1290 by implementing a feature that has been deprecated for more than 10 years 08:40
Intruiging: there are 6 POD related spectest files failing. Of these, 5 fail due to missing support for macros. Who'd have thought that macros play such a large role in documentation? 08:45
On a side note: I'm quite surprised that there are even spectests about macros. Right now the language specification requires an implementation to have an "experimental" support (i.e. even the test files need `use experimental :macros;`). So the specification requires something that by definition is subject to change. 08:46
lizmat update on the remaining blin issue: 09:42
reverting the .assuming work is an option, but would require todoing a lot of spectests 09:43
lizmat nine: just confirmed that the &sub returned by .assuming does not have a serialization context 10:06
nine If assuming is running at BEGIN time it needs to do everything that a BEGIN time EVAL does, i.e. it needs to be running as part of the outer compilation. 10:11
lizmat I understand what you're saying: is that a matter of setting the outer context correctly ? 10:13
in the $ast.EVAL call? 10:15
nine Look at what happens in Actions when outer_ctx is set in the compilation options 10:19
lizmat or some parameter to $compunit.IMPL-TO-QAST-COMP-UNIT ?
lizmat looks 10:25
ok, I'm getting the impression that this is going to be unsolvable until we've merged the bootstrap 10:38
as the legacy grammar doesn't have an $*OUTER-RESOLVER 10:39
lizmat which would be required if a specific context were to be specified in .EVAL 10:39
nine That can very well be the case 10:44
Geth roast: cb93f5abcb | (Elizabeth Mattijsen)++ | 4 files
TODO all test that depend on RakuAST based .assuming

It looks like using a RakuAST-based assuming won't be able to work in pre-compiled modules, at least not until the Raku bootstrap has been merged.
So mark all tests that would fail with the old implementation as TODO, hopefully only for a short time
11:23
rakudo/main: eb2315f1c4 | (Elizabeth Mattijsen)++ | 2 files
Restore the old implementation of .assuming

A blin run made it clear that quite a few modules in the ecosystem depend on .assuming being used in a pre-compiled module environment.
Alas, this appears to be incompatible with the RakuAST based .assuming while running with the legacy system: it looks like it is going to ... (6 more lines)
11:26
nine bootstrap-rakuast is now at 1289, just one test behind main (a Proc::Async test failing because of the POPULATE issue) 11:41
lizmat++
JimmyZhuo nqp::die("RO assignment"); 11:51
$lhs_ast.node.typed_sorry('X::Assignment::RO::Comp',
variable => $lhs_ast.name);
It seems there is no good way to add_sorry here, and Var::Lexical has no attr $!is-parameter, so can't do it at check time?
nine I'm sure it's possible. It's just hard :) 11:56
Var::Lexical has no $!is-parameter, but what about what Var::Lexical resolves to? 11:57
i.e. $left.resolution
You could probably also cheat and in RakuAST::ApplyInfix's PERFORM-CHECK generate the QAST for $left and then check whether that fits the criteria 11:59
So, one of the big breaks from Perl to Raku is sigil invariance, i.e. you always use the same sigil to access some value unlike Perl where you write $a[0] for accessing @a's first element. 12:27
m: class Foo { has $.name; method foo() { say $.name } }.new(:name(me => "you")).foo; 12:28
camelia me => you
nine m: class Foo { has $.name; method foo() { say @.name } }.new(:name(me => "you")).foo;
camelia (me => you)
nine m: class Foo { has $.name; method foo() { say %.name } }.new(:name(me => "you")).foo;
camelia {me => you}
nine So much for that...
lizmat realizes she's badly in need of a vacation 12:35
nine You and me both baby :)
[Coke] I am all for removing :experimental spec tests. Those should probably be in rakudo itself so we don't accidentally break anything, but not roast. 12:38
(Or having them all be TODO?, I guess?) 12:39
nine Test harness complains even about passing TODOs 12:40
JimmyZhuo t/experimental/xxx.t ??
nine Also it's not even a TODO. A TODO would imply "this is what we want but just don't have yet". It's *experimental*. It's "we don't even know what we want". A specification saying "we require you to do....something, we actually don't know what" isn't much of a specification at all. 12:41
[Coke] So let's rip it out, yes. 12:50
Geth rakudo/main: 6c791595e7 | (Stefan Seifert)++ | src/Raku/Actions.nqp
RakuAST: support shorthand syntax for meta method calls

Fixes: $.^name
13:05
nine 1291
JimmyZhuo nine: thanks, looks like I get the way, will try it tomorrow
nine ++JimmyZhuo 13:06
JimmyZhuo: just a heads up. My desktop won't be available over the weekend 13:07
tellable6 nine, I'll pass your message to JimmyZhuo
Geth rakudo/main: 7476648eea | (Stefan Seifert)++ | 2 files
RakuAST: fix $?CLASS not resolved on implicit method signature
13:53
rakudo/main: a4c3ed56c0 | (Stefan Seifert)++ | src/Raku/ast/call.rakumod
RakuAST: prohibit special dispatchers on macroish calls

Calls like .WHAT or .WHO are not really method calls but more akin to macros, only that they are special cased by the compiler itself. Using special dispatchers like .? on them doesn't make sense.
nine 1292
Geth rakudo/main: c19be7eefd | (Stefan Seifert)++ | 2 files
RakuAST: support indirect method calls with multiple arguments

Fixes: foo $o: 1, 2
16:08
nine 1294 by fixing a feature that I'd kill off in an instant 16:09
[Coke] lizmat: can you bump nqp & moar to latest?
(or anyone!) (I am on a train at the moment) 16:11
releasable6: status
releasable6 [Coke], Next release in ≈1 day and ≈2 hours. There are no known blockers. Changelog for this release was not started yet
[Coke], Details: gist.github.com/67a215c33d7dbd55ec...842aff3b3c
[Coke] github.com/rakudo/rakudo/wiki/ChangeLog-Draft 16:14
I have't categorized any yet, looks like a majority of rakuast, which I think we just pull the commit hashs for and add a status report of passing tests. 16:15
nine [Coke]: seems like they are already at the latest 16:18
[Coke] nine++ #thanks for checking! 16:19
Geth rakudo/main: a70fbf6f48 | (Will Coleda)++ | docs/release_guide.pod
This module is explicitly skipped by blin
16:25
[Coke] looks like the only one left on github.com/rakudo/rakudo/issues/5825 is for HTTP::Tiny which lizmat could not reproduce 16:33
... and looking at the "new output" - I don't see a failure. 16:34
I see 3 TODO'd subtests that didn't pass 16:35
ah, a bunch of 503 Service Temporarily Unavailable. 16:36
so that's probably fine. closing blin ticket.
Geth rakudo/main: 8fbe800efd | (Stefan Seifert)++ | 2 files
RakuAST: support hypering of private method calls

Fixes: class Foo { trusts GLOBAL; method !foo { } }; (Foo.new,)>>!Foo::foo
17:07
nine 1295
[Coke] 4ee9503bdcd65d9017f24c5455f297eec7409cc5 17:09
linkable6 (2025-03-07) github.com/rakudo/rakudo/commit/4ee9503bdc Re-imagine .assuming using RakuAST
[Coke] so many rakuast tickets today (cleaning those up in the changelog draft) 17:19
m: say ( 39*7+4) 17:23
camelia 277
[Coke] ^^ # of rakuast commits as of right now for this release
formatting looks off on that draft for rakuast, will investigate later. 17:24
-> afk
nine I don't think that number is gonna change in the next few hours :) Next one is a tricky parsing problem and I have to leave soon 17:25
Geth rakudo/main: f7f670f39d | (Stefan Seifert)++ | 3 files
RakuAST: support $.foo: 1,2 syntax

RakuAST equivalent of commit 4a1323ed262f579abbb69dae5708e9baba2e874d
17:59
nine Ok, I was wrong. 1296 it is
jdv aka the 23cm ham band 18:02
1296mhz;)
lizmat [Coke]: MoarVM and NQP are already up to date on rakudo main 18:16
Geth rakudo/main: 9b95ab96c3 | (Stefan Seifert)++ | 2 files
RakuAST: support quoted private method calls

Fixes: self."!foo"()
18:22
rakudo/main: 915c8defd6 | (Stefan Seifert)++ | src/Raku/ast/call.rakumod
RakuAST: throw appropriate exception class when private method not found at compile time
nine 1297
Huh...a case that fails on RakuAST exactly in the same way that it fails on JVM. 18:30
And when the optimizer is turned off. 18:31
The optimizer optimizes using a raku-meth-call-qualified dispatcher. That's why it fails on JVM. 18:35
lizmat rakkable: eco-pr macro 18:44
rakkable lizmat, Running: eco-provides macro, please be patient!
lizmat, Found 285 lines in 66 files (38 distributions):
lizmat, gist.github.com/ebe9d3bcda51502695...5908f99ae2
lizmat rakkable: eco-pr §macro 18:46
rakkable lizmat, Running: eco-provides §macro, please be patient!
lizmat, Found 107 lines in 37 files (26 distributions):
lizmat, gist.github.com/a4efbbdd1865735d04...344ab6478f
lizmat much better
rakkable: eco-pr 'use experimental :macros' 18:47
rakkable lizmat, Running: eco-provides 'use experimental :macros', please be patient!
lizmat, No occurrences found for: eco-provides 'use experimental :macros'
lizmat rakkable: eco-pr ':macros'
rakkable lizmat, Running: eco-provides ':macros', please be patient!
lizmat, No occurrences found for: eco-provides ':macros'
lizmat rakkable: eco-pr :macros 18:48
rakkable lizmat, Running: eco-provides :macros, please be patient!
lizmat, Found 4 lines in 4 files (4 distributions):
lizmat, gist.github.com/c3ca023eb02f182ffb...791aa2c2a7
lizmat ok, looks like there are only 2 modules that actually use the experimental :macros feature in the ecosystem 18:49
Xliff's GLib::Raw::Macros and OO::Monitors 18:50
the latter now being an ecosystem module, so relatively easy to get fixed :-)
rakkable: eco-pr wait-condition 18:52
rakkable lizmat, Running: eco-provides wait-condition, please be patient!
lizmat, OO::Monitors:ver<1.1.4>:auth<zef:raku-community-modules>/lib/OO/Monitors.rakumod
lizmat, 108:macro wait-condition($cond) is export {
lizmat, 109: my $cond-attr = get-cond-attr($cond, 'wait-condition');
lizmat, That was all!
lizmat rakkable: eco-pr meet-condition
rakkable lizmat, Running: eco-provides meet-condition, please be patient!
lizmat, OO::Monitors:ver<1.1.4>:auth<zef:raku-community-modules>/lib/OO/Monitors.rakumod
lizmat, 113:macro meet-condition($cond) is export {
lizmat, 114: my $cond-attr = get-cond-attr($cond, 'meet-condition');
lizmat, That was all!
lizmat ok, looks like nobody is using the macros exported by OO::Monitors *phew* 18:53
Geth rakudo/main: f3ae9c3876 | (Stefan Seifert)++ | src/Raku/ast/call.rakumod
RakuAST: optimize qualified method calls

This actually fixes a case that would otherwise fail (and still does so on the JVM): class Baz { submethod blarb() { } }; class Grtz is Baz { }; Grtz.new.Baz::blarb
18:55
nine 1298 and that's it for today
Turning computer off now :)
lizmat .tell Xliff: are you using OO::Monitor's wait-condition / need-condition in your code ? 19:02
tellable6 lizmat, I'll pass your message to Xliff
jdv was 1298 a good year? 21:19
releasable6 Next release in ≈19 hours. There are no known blockers. Please log your changes in the ChangeLog: github.com/rakudo/rakudo/wiki/ChangeLog-Draft 23:00