🦋 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: ... | log inspection situation still under development | For MoarVM see #moarvm
Set by lizmat on 22 May 2021.
00:02 reportable6 left 00:04 reportable6 joined 01:29 evalable6 left, linkable6 left 01:30 evalable6 joined 01:31 linkable6 joined 02:32 evalable6 left, linkable6 left, linkable6 joined 02:34 evalable6 joined
releasable6 Next release in ≈1 day and ≈15 hours. 1 blocker. Please log your changes in the ChangeLog: github.com/rakudo/rakudo/wiki/ChangeLog-Draft 03:00
03:34 linkable6 left, evalable6 left 03:35 evalable6 joined, linkable6 joined 06:02 reportable6 left 06:03 reportable6 joined
[TuxCM] Rakudo v2021.05-23-g4f61a108b (v6.d) on MoarVM 2021.05-14-g0a62f0c6a
csv-ip5xs0.871 - 0.880
csv-ip5xs-209.443 - 10.743
csv-parser29.307 - 31.988
csv-test-xs-200.370 - 0.373
test7.960 - 8.182
test-t2.070 - 2.090
test-t --race0.927 - 0.959
test-t-2037.307 - 37.493
test-t-20 --race10.539 - 10.541
06:54
Geth rakudo/fix_race_condition_in_supplier: 4953a29997 | (Stefan Seifert)++ | src/core.c/Supplier.pm6
Fix bogus "emit without supply or react" in Supplier's TapList

Avoid auto-vivification of the Scalar container for the $!tappers attribute when reading. That could lead to a Mu overwriting the list in $!tappers after we've already set $added to True in method tap, causing us to blow up when we try to call .emit on that Mu.
Fixes GH #4410
07:09
rakudo: niner++ created pull request #4414:
Fix bogus "emit without supply or react" in Supplier's TapList
rakudo: a9510b8d37 | (Daniel Green)++ | 2 files
Try to rename precomp files multiple times on Windows

File renaming can easily race and fail on Windows. There's no great solution, so instead just try 10 times catching a failure (and returning out of the loop and method if it succeeds), and if it hasn't succeeded after that, try one more time without catching a failure.
07:42
rakudo: 7dfed29c76 | (Daniel Green)++ | src/core.c/CompUnit/PrecompilationStore/File.pm6
Pull repeated code to try something a number of...

of times into a sub.
rakudo: 292e8c86d2 | MasterDuke17++ (committed using GitHub Web editor) | 2 files
Merge pull request #4411 from MasterDuke17/try_renaming_precomp_files_multiples_times_on_windows
moon-child oh my
MasterDuke ? 07:43
moon-child 'file renaming can easily race and fail on windows' 07:44
MasterDuke yeah. it's annoying
moon-child some aspects of windows's design are clearly superior to unix. Some are just--wtf 07:45
08:25 frost joined
Geth rakudo/done-with-value: 9a6ee54a49 | (Elizabeth Mattijsen)++ | 2 files
Simplify by jnthn++'s suggestion
09:13
rakudo: 452e92ed63 | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | src/core.c/control.pm6
Introduce "done foo" as shortcut for "emit foo; done" (#4412)

As discussed in github.com/Raku/problem-solving/issues/249
This makes the "done" sub a multi and adds a candidate that does an `emit` of the value, before actually doing a `done`.
09:34
09:35 linkable6 left 09:37 linkable6 joined
Geth nqp: 535a65d6ee | (Daniel Green)++ | tools/templates/MOAR_REVISION
Bump MoarVM for include paths in config data
09:48
rakudo: 2c3a1a04d9 | (Daniel Green)++ | tools/templates/NQP_REVISION
Bump NQP...

For include paths in config data from MoarVM and removing a JVM workaround in NQP.
09:59
MasterDuke vrurg: ^^^ now nqp and rakudo can get the include path information from the 'moar::hllincludes' key in the --show-config data 10:00
nine lizmat: has Mu $!tappers is built(False) is built(:bind) = Mu; looks interesting. I just don't understand it :D. But then, I'm quite ironically actually not that good a Raku programmer. I tend to write kind of baby Raku 10:21
lizmat well... actually it's a roundabout way to abuse the standard object build process
I was just realizing that perhaps for that class, we shouldn't be using the standard object build process at all 10:22
am in the middle of implementing "last foo" now
we can accept the PR at least for this release anyway
m: my @a = ^10; dd @a.nodemap({ dd $_; last if $_ > 5 } # last in nodemap is broken 11:12
camelia 5===SORRY!5=== Error while compiling <tmp>
Unable to parse expression in argument list; couldn't find final ')' (corresponding starter was at line 1)
at <tmp>:1
------> 3f $_ > 5 } # last in nodemap is broken7⏏5<EOL>
lizmat m: my @a = ^10; dd @a.nodemap({ dd $_; last if $_ > 5 }) # last in nodemap is broken
camelia Int @a = 0
Int @a = 1
Int @a = 2
Int @a = 3
Int @a = 4
Int @a = 5
Int @a = 6
Int @a = 7
Int @a = 8
Int @a = 9
(Empty, Empty, Empty, Empty, Empty, Empty)
11:12 frost left
lizmat m: my @a = ^10; dd @a.nodemap({ $_ == 5 ?? (last) !! $_ }) # perhaps clearer 11:15
camelia (0, 1, 2, 3, 4, 6, 7, 8, 9)
lizmat m: my @a = ^10; dd @a.deepmap({ dd $_; last if $_ > 5 } # also in deepmap :-( 11:21
camelia 5===SORRY!5=== Error while compiling <tmp>
Unable to parse expression in argument list; couldn't find final ')' (corresponding starter was at line 1)
at <tmp>:1
------> 3last if $_ > 5 } # also in deepmap :-(7⏏5<EOL>
lizmat m: my @a = ^10; dd @a.deepmap({ dd $_; last if $_ > 5 } ) # also in deepmap :-(
camelia Int @a = 0
Int @a = 1
Int @a = 2
Int @a = 3
Int @a = 4
Int @a = 5
Int @a = 6
Int @a = 7
Int @a = 8
Int @a = 9
Array element = []
lizmat m: my @a = ^10; dd @a.deepmap({ $_ == 5 ?? (last) !! $_ } ) # also in deepmap :-(
camelia Array element = [0, 1, 2, 3, 4, 6, 7, 8, 9]
lizmat both to be fixed in upcoming PR to make "last foo" possible 11:22
Geth rakudo: 4953a29997 | (Stefan Seifert)++ | src/core.c/Supplier.pm6
Fix bogus "emit without supply or react" in Supplier's TapList

Avoid auto-vivification of the Scalar container for the $!tappers attribute when reading. That could lead to a Mu overwriting the list in $!tappers after we've already set $added to True in method tap, causing us to blow up when we try to call .emit on that Mu.
Fixes GH #4410
11:30
rakudo: ca8dea277a | niner++ (committed using GitHub Web editor) | src/core.c/Supplier.pm6
Merge pull request #4414 from rakudo/fix_race_condition_in_supplier

Fix bogus "emit without supply or react" in Supplier's TapList
11:31 linkable6 left 11:34 linkable6 joined
lizmat $ r 'my @a = ^10; dd @a.grep({ $_ > 5 ?? (last 42) !! True })' 11:48
(0, 1, 2, 3, 4, 5, 42).Seq
meh after making "last foo" work on for loops and the mapxxx variants, this is now what .grep does 11:49
feels like a major rewrite of .grep will be needed, which may not be a bad thing, but still 11:50
Altai-man lizmat, hmm, is it a regression or? 11:55
lizmat no
Altai-man good
lizmat "last 42" is not supported on master just yet :-)
Altai-man I see
releasable6, status
releasable6 Altai-man, Next release in ≈1 day and ≈7 hours. There are no known blockers. 1 out of 37 commits logged 11:56
Altai-man, Details: gist.github.com/b35306c931d29cbc93...77472636b0
Geth rakudo/last-with-value: ce66f1e7f3 | (Elizabeth Mattijsen)++ | 2 files
Introduce "last foo" to end loops *and* return a value

  *and* FIX nodemap / deepmap / duckmap's handling of "last".
This adds the exception checking logic to all of the standard .map functions. Basically, three cases where to be checked:
... (16 more lines)
12:02 reportable6 left 12:03 squashable6 left, reportable6 joined 12:05 squashable6 joined
[Coke] for the 10x retry on windows - do we need to care about the return value? (original happened to return a value, if it works early, we get a bare return) 12:05
MasterDuke rename always returns True 12:06
but it didn't look like it was being used anywhere
12:12 Xliff joined
[Coke] That 12:15
's fine, I only saw the change in there, didn't look at calling code. Thans.
*Thanks.
Geth rakudo/rakuast: 804a0def65 | (Jonathan Worthington)++ | 4 files
RakuAST node for postfix hyper meta-op

And implement compilation of the most common cases of it, for `>>++` (a simple postfix) and `>>.meth` (a simple method call). There are various other less common cases that shall need attention. Unlike the current compiler frontend, we give each kind of postfix the ability to decide how it compiles into a hyper op, rather than just compiling it and then ... (5 more lines)
13:13
roast: fd078f9c6d | (Nguyễn Gia Phong)++ | S32-io/mkdir_rmdir.t
Retire mkdir tests before it creates parents

Currently mkdir would create parent directories if necessary.
13:29
roast: 155f0fe7e1 | (Nguyễn Gia Phong)++ | S32-io/mkdir_rmdir.t
Test mkdir on existing file
roast: 379aca1ede | (Vadim Belman)++ (committed using GitHub Web editor) | S32-io/mkdir_rmdir.t
Merge pull request #736 from McSinyx/mkdir

Test cases where mkdir should fail
13:52 [Coke] left, [Coke] joined
Geth roast: a23d30d6a3 | (Vadim Belman)++ | S32-io/mkdir_rmdir.t
Mark a new test as todo

Until MoarVM/MoarVM#1507 is merged
13:56
13:57 linkable6 left, linkable6 joined 13:58 vrurg left 14:05 Kaiepi left 14:13 Kaiepi joined
Geth rakudo/rakuast: 50802db20f | (Jonathan Worthington)++ | 3 files
RakuAST node for prefix hyper ops
14:14
14:21 vrurg joined
lizmat m: dd ^10 .grep: -> \x, \y { x == 4 ?? (last) !! True } 14:46
camelia ((0, 1), (2, 3)).Seq
lizmat sorry for the noise, but camelia still doesn't allow m: in privmsg ? 14:47
AlexDaniel Camelia always did, I thought? 14:48
Evalable didn't 14:49
lizmat camelia used to
AlexDaniel Hmmm
Welcome to #whateverable then to spam the bots
Not just Camelia 😌 14:50
Xliff Alexdaniel: \o 14:51
tellable6 2021-06-16T19:21:27Z #raku-dev <timo> Xliff yeah that does look like a bug
Xliff m: use NativeCall; class A is repr<CStruct> { HAS @.array[30] is CArray }; my $a = A.new; $a[0] = 1; $a.elems.say; 14:54
camelia Cannot modify an immutable A (A.new(array => Nativ...)
in block <unit> at <tmp> line 1
Xliff m: use NativeCall; class A is repr<CStruct> { HAS @.array[30] is CArray }; my $a = A.new; $a.array[0] = 1; $a.array.elems.say;
camelia CArray cannot be used without a type
in method AT-POS at /home/camelia/rakudo-m-inst-1/share/perl6/core/sources/8660F65A7B3492675BB3B2058DB30E411A4C4E54 (NativeCall::Types) line 93
in block <unit> at <tmp> line 1
Xliff m: use NativeCall; class A is repr<CStruct> { HAS int8 @.array[30] is CArray }; my $a = A.new; $a.array[0] = 1; $a.array.elems.say; 14:55
camelia 1
Xliff m: use NativeCall; class A is repr<CStruct> { HAS int8 @.array[30] is CArray }; my $a = A.new; $a.array.elems.say;
camelia 0
Geth rakudo/last-with-value: db91a7f9de | (Elizabeth Mattijsen)++ | src/core.c/Any-iterable-methods.pm6
Also make "last foo" work on .grep

If "foo" is true, then that value will be passed through and the iteration will be terminated. If the "foo" is false, then it will just terminate the iteration.
14:57
rakudo: lizmat++ created pull request #4415:
Last with value
15:02
rakudo/rakuast: d7c0557a1a | (Jonathan Worthington)++ | src/Raku/ast/expressions.rakumod
Don't make infix meta-ops be lookups

While they do use something lexical from the setting, that's a pure implementation detail.
15:05
rakudo/rakuast: 710febfab4 | (Jonathan Worthington)++ | 3 files
RakuAST node for infix hyper ops
lizmat m: my $i; dd do while ++$i < 10 { dd $i; last if $i == 5 } 15:10
camelia Int $i = 1
Int $i = 2
Int $i = 3
Int $i = 4
Int $i = 5
().Seq
lizmat m: dd do for ^10 { last if $_ == 5 } 15:12
camelia ()
Geth rakudo/rakuast: a67b41d6b5 | (Jonathan Worthington)++ | 3 files
RakuAST for bracketed infixes, infixed functions
15:41
rakudo/last-with-value: 9a426135dc | (Elizabeth Mattijsen)++ | src/core.c/Rakudo/Iterator.pm6
Make various other loop constructs sensitive to "last foo"
15:48
nine Odd. camelia actually executes the commands in priv msgs. But it doesn't answer 16:10
Oh, camelia does try to answer! But on libera.chat users seem to have mode +R by default which prohibits private messages from unregistered users 16:13
lizmat: "/mode lizmat -R", then you can talk to camelia in private 16:14
lizmat nine++ 16:15
but I'm registered ?
16:16 lizmat left, lizmat joined
lizmat weird 16:17
nine You are, but camelia isn't
lizmat aha... ok
17:10 cognominal left 18:02 reportable6 left
lucs camelia needs to be registered, but also it needs to 'identify' itself when it comes on, else no dice. 18:02
s/camelia/all the bots that we want to interact with in /msg when we have +R/ 18:03
18:03 reportable6 joined
Geth rakudo/last-with-value: 5429d909c2 | (Elizabeth Mattijsen)++ | src/core.c/Any-iterable-methods.pm6
Fix issue with grep when storing result in array

Basically, the grep wrapper was only working correctly if the iterator was just being called with "pull-one", but would fail to end if the
  "push-all" method was called on the iterator (my @a = foo.grep...).
The fix was to have the LAST handler in the grep wrapper for Callables throw another "last" with the correct value to be handled by the outer handler.
18:11
19:01 b2gills left 19:02 b2gills joined 19:03 gfldex left 19:30 gfldex joined
Altai-man releasable6, status 22:15
releasable6 Altai-man, Next release in ≈20 hours. There are no known blockers. 1 out of 37 commits logged
Altai-man, Details: gist.github.com/1b5946e82b9ad5bbb8...220a581292
22:37 melezhik joined
melezhik releasable6: status 22:37
releasable6 melezhik, Next release in ≈20 hours. There are no known blockers. 1 out of 37 commits logged
melezhik, Details: gist.github.com/6d08f4cd80355e6b8f...93ebe7eb87
22:44 [Coke] left, [Coke] joined
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
23:33 linkable6 left 23:36 linkable6 joined