🦋 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.
00:00 reportable6 left 00:03 reportable6 joined 01:58 linkable6 left, evalable6 left 01:59 linkable6 joined 02:01 evalable6 joined 02:48 dogbert17 left 03:08 dogbert17 joined 05:59 nativecallable6 left, releasable6 left, quotable6 left, greppable6 left, linkable6 left, notable6 left, unicodable6 left, squashable6 left, bloatable6 left, reportable6 left, coverable6 left, shareable6 left, committable6 left, tellable6 left, benchable6 left, bisectable6 left, evalable6 left, sourceable6 left, statisfiable6 left 06:00 jaguart left, benchable6 joined, committable6 joined, sourceable6 joined, bisectable6 joined, coverable6 joined, linkable6 joined, evalable6 joined, releasable6 joined, jaguart joined 06:01 greppable6 joined, squashable6 joined, reportable6 joined, statisfiable6 joined, quotable6 joined, shareable6 joined 06:02 unicodable6 joined, bloatable6 joined, notable6 joined, nativecallable6 joined, tellable6 joined
Geth rakudo: usev6++ created pull request #5166:
[JVM] Avoid failures caused by missing RakuAST
07:41 bisectable6 left, squashable6 left, greppable6 left, reportable6 left, bloatable6 left, sourceable6 left, tellable6 left, committable6 left, releasable6 left, evalable6 left, shareable6 left, nativecallable6 left, quotable6 left, notable6 left, unicodable6 left, coverable6 left, linkable6 left, statisfiable6 left, greppable6 joined 07:42 evalable6 joined, tellable6 joined, shareable6 joined, linkable6 joined, squashable6 joined 07:43 statisfiable6 joined, releasable6 joined, quotable6 joined, reportable6 joined, nativecallable6 joined 07:44 notable6 joined, committable6 joined, bisectable6 joined, bloatable6 joined, sourceable6 joined, unicodable6 joined, coverable6 joined 07:47 jjatria left 08:00 jjatria joined
Geth rakudo/main: 0049c30153 | (Christian Bartolomäus)++ (committed using GitHub Web editor) | 4 files
[JVM] Avoid failures caused by missing RakuAST (#5166)

Three problems sneaked in that prevented the build for the JVM backend:
  * The operators for atomicints aren't supported yet.
  * The call to nqp::dispatch in src/Raku/ast/code.rakumod didn't
   compile either. I have no idea what it should be replaced with,
   but that could be figured out later on.
  * Run tests from t/12-rakuast on MoarVM only
09:13 Geth left, Geth joined 11:00 linkable6 left, evalable6 left 11:01 linkable6 joined 11:03 evalable6 joined 12:00 reportable6 left 12:03 reportable6 joined
Geth rakudo/main: 14f56a2ca7 | (Elizabeth Mattijsen)++ | 6 files
Implement support for CLOSE and QUIT phasers

  - Grammar / Actions added
  - RakuAST::StatementPrefix::Phaser::... classes added
  - Deparsing added
  - Test added
Note that testing has been done without actually running any supplies, but just by interrogating a block with these phasers and running them manually. As this is what the supplies do as well (no actual code is QASTed for this in the supply handling).
lizmat no files won or lost 12:13
Geth rakudo/main: 4ab4907ab9 | (Elizabeth Mattijsen)++ | src/Raku/ast/statementprefixes.rakumod
Remove dead code

self.allowed-on-for-statement is always True as it inherits it from RakuAST::StatementPrefix
13:12 dogbert11 joined 13:14 kawaii__ joined 13:20 benchable6 left, dogbert17 left, discord-raku-bot left, kawaii_ left, kawaii__ is now known as kawaii_ 13:51 epony left
Geth rakudo/main: 4f207505aa | (Elizabeth Mattijsen)++ | 6 files
Add (almost) complete support for ENTER phaser

  - Grammar / Actions added
  - RakuAST::StatementPrefix::Phaser::Enter class added
  - Deparsing added
  - Tests added
The phaser is installed in the block, and returns its last expression. But the ENTER phaser is not actually called automatically yet, probably because I got the QAST generation wrong somehow. Hopefully
  nine will be able to do some magic in that respect.
lizmat oddly enough, this takes me to 104/139 for make test 13:55
lizmat will hold off implementing PRE / POST / KEEP / UNDO phasers for now, until this is fixed 13:56
13:59 benchable6 joined
Geth rakudo/main: 6 commits pushed by (Vadim Belman)++ 14:12
lizmat brings it up to 108 / 139 and 632 / 1355 for me 14:22
nine lizmat: if you run make test without RAKUDO_RAKUAST=1 first, this will hide any regressions that only affect compilation of modules used in the tests (but not tests directly). I'd therefore consider that bad practice. 14:25
lizmat noted: I used "make test" as a sanity check because of the very strange errors I get every now and then 14:26
Geth rakudo/main: 25d583bfaa | (Stefan Seifert)++ | src/Raku/ast/signature.rakumod
RakuAST: fix bogus worry about is rw on MAIN's parameters

The check forgot to check if the parameter was actually declared is rw.
rakudo/main: bbdaf83259 | (Stefan Seifert)++ | src/Raku/ast/scoping.rakumod
RakuAST: fix scopes adding themselves to themselves as declarations

Nodes that are both scopes and declarations (like subs) added themselves as declarations to their own scope. This was due to self.ast-lexical-declarations including the root node (if itself is a declaration).
rakudo/main: 68f4a96dc4 | (Stefan Seifert)++ | src/Raku/ast/compunit.rakumod
RakuAST: support MAIN subs
nine FWIW if we want to fix those, we'd need the rakudo compiled before and after. At least the CORE.setting.moarvm (as this is where the differences most likely are)
lizmat understood 14:29
nine My count is now 102 and 631
lizmat meanwhile, fixing github.com/rakudo/rakudo/commit/4f207505aa seems to be another way of gaining a few passes 14:30
nine Btw. that's actually a good process to trigger the error: compile rakudo, run something that precompiles a module, then save the generated files, make clean, build again, run the same test again and if it breaks, see where the differences in generated bytecode between now and the backup are 14:31
14:35 epony joined
lizmat nine: using your methodology, I come to 103 / 139 and 630 / 1355 14:36
Geth rakudo/main: c0cee2e5b7 | (Stefan Seifert)++ | 2 files
RakuAST: support phasers on the comp unit itself

During compilation the mainline block does not exist, so instead we need to install mainline phasers on the comp unit and add them to the generated QAST block later.
rakudo/main: bbe447dbb2 | (Stefan Seifert)++ | 2 files
RakuAST: actually install ENTER phasers
rakudo/lizmat-1.log: 0d31a24349 | (Elizabeth Mattijsen)++ | src/core.c/Num.pm6
Make (-1).log mathematically correct

Before, this would return NaN, rather than Complex.new(1.log,pi)
  (which would be more mathematically correct).
This breaks 2 spectests, checking for (-Inf).log basically, and makes one todo test pass.
Inspired by wandering.shop/@colomon/109744612694765045
rakudo: lizmat++ created pull request #5167:
Make (-1).log mathematically correct
lizmat nine++ (fixing ENTER phaser) 15:37
my attempt so close, and yet so far away :-)
guess I'm ready to do PRE POST KEEP UNDO now :-) 15:38
Geth rakudo/main: 49cb197a90 | (Elizabeth Mattijsen)++ | t/12-rakuast/statement-phaser.rakutest
Untodo now passing ENTER phaser tests
16:02 Geth left, Geth joined 16:13 discord-raku-bot joined 16:28 discord-raku-bot left, discord-raku-bot joined
Geth rakudo/main: d8184117b3 | (Elizabeth Mattijsen)++ | 2 files
Add deparsing and tests for RakuAST::StatementPrefix::Phaser::Init
17:22 [Coke] joined
[Coke] . 17:22
Geth rakudo/main: 9fc9b06180 | (Stefan Seifert)++ | 2 files
RakuAST: fix default type of signature declarations to Any

The default value for variables is Any, not Mu. However, we must not set a non-Mu type on array or hash variables as we'd e.g. create an object hash instead of a normal one. So instead of trying to figure out a default type, just don't set any type if we don't have one, but instead create containers for all variables unconditionally.
I don't think this is entirely correct, but with my existing confusion about type, of and default, it's the best I can do and it unlocks a few more tests.
nine 107 and 633!
lizmat whee! 17:40
almost finished with KEEP and UNDO phasers :-)
nine t/08-performance/05-processkeys.t is complaining about a $W, but it doesn't indicate what one should do about it 17:41
18:00 reportable6 left 18:02 reportable6 joined
lizmat could that be something that vrurg introduced ? 18:11
Geth rakudo/main: 91ebaa013f | (Elizabeth Mattijsen)++ | 6 files
Add complete support for KEEP / UNDO phasers

  - Grammar / Actions added
  - RakuAST::StatementPrefix::Phaser::(Keep|Undo) classes added
  - Deparsing added
  - Tests added
This one turns out to be simple: it just needed the exit-handler flag to be set.
rakudo/main: 03b2cf356e | (Elizabeth Mattijsen)++ | 2 files
Fix issue with multiple FIRST phasers

Any additional FIRST phasers would not be called because the "first" flag was already reset. Combine all FIRST phasers into a single statement list if there are more of them
18:56 NemokoschKiwi joined
nine m: my $foo = $*FOO; say PROCESS::.keys 18:58
nine Huh? Will any dynamic variable show up in PROCESS::?
[Coke] *. 18:59
19:00 NemokoschKiwi left
lizmat bisectable6 19:25
bisectable6: old=2020.02 my $foo = $*FOO; say PROCESS::<$FOO>:exists 19:26
bisectable6 lizmat, Bisecting by output (old=2020.02 new=d52342e) because on both starting points the exit code is 0
lizmat, bisect log: gist.github.com/f19bdf1b74aab09604...81e0d35d3e 19:27
lizmat, (2022-03-30) github.com/rakudo/rakudo/commit/e7...f51a6b8746
19:56 ab5tract joined
nine lizmat: apparently you wrote that test for PROCESS keys :) 20:30
20:31 ab5tract left 20:33 [Coke] left
nine Ha! Now I know why they are called "post constraints". Because they have to be processed _after_ binding an argument 21:03
vrurg Wow, Nobel prize for the genius! :D :D :D
vrurg feels like he is gonna be beaten hard today... ;) 21:05
nine Would you have known that the post is about binding? ;) 21:07
21:11 [Coke] joined 21:14 [Coke]_ joined 21:16 [Coke] left
vrurg nine: I've spent enough time around that location in the legacy Actions to knew about it back then. Not sure if I'd recall if asked recently... :) 21:19
Geth rakudo/main: 69fa6bbaf8 | (Stefan Seifert)++ | src/Raku/ast/signature.rakumod
RakuAST: fix parameter where constraints acessing the parameter target

Where constraints on parameters are "post constraints" because they must be evaluated after binding the argument to the paramter target. Fixes sub foo($x where { say $x }) {}
nine 108 and 634 respectively :)
Nemokosch this reminds me of a recent issue 21:25
if you have a coercion of the format Target(SourceSubset), the conditions of the subset will be evaluated after the coercion happens... 21:26
do you know anything about that behavior? 21:27
21:30 [Coke]_ is now known as [Coke]
vrurg The source is checked before, the target – after. Are there any other way? 21:48
Nemokosch That's what I expected, too, but not what I witnessed 21:51
what I witnessed was that the condition of the subset jumped outside and was performed after the coercion
vrurg Actually, it's not impossible. The "post" might play the role. Unfortunately, I don't remember all the details right away. 22:01
Nemokosch Now, I tried to reproduce and failed. Unfortunately I don't have the exact code that led me to this conclusion, it was while working on this github.com/raku-community-modules/...l/67/files 22:03
It could also be that I misunderstood something... I tried to do open-xml more literally, taking the constrained Str and just wrapping it into IO::Path, I don't remember the details 22:04
vrurg As long as I checked the actions, constraint type is checked prior to coercion. So, should be some kind of mistake. 22:10
Nemokosch okay... not quite what I said but this still seems strange: glot.io/snippets/ghlfzwgoss 22:18
22:18 guifa_ left
this doesn't happen if I say of Str:D actually. The Str type object goes in for some reason, and then explodes 22:21
it also doesn't happen for a variable constraint and assignment. Probably there's some interference with multiple dispatch 22:25
the multiple dispatch, the lack of 😄 and the coercion are all needed apparently... 22:26
vrurg Do you know that .IO is a coercion method creating an IO::Path for you? 22:27
Nemokosch yes
it's not a very practical example, although it is inspired by a state that showed up while refactoring the sub 22:28
something tells me, though, that it should have worked. The fact that the absence of the type smiley, the parameter and the coercion together are responsible for this behavior, makes this suspicious 22:30
vrurg Ha, it's the optimizer! Oh, my... It tries to optimize a constant parameter call. 22:32
Nemokosch glot.io/snippets/ghlgf84bly this is more or less a golf I think. One multi candidate, coercion in the parameter, no Str:D. 22:33
vrurg And does it all wrong by typechecking on the subset from argument's type, not value. Actually, it must not optimize over subsets with dynamic constraints at all.
The current situation is such that it is unlikely that the optimizer would get a fix soon. 22:36
Nemokosch There was that benchmark with the "speed regressions", and I started thinking that many of those speed regressions might actually be fixes of broken optimizations 22:37
anyways, it would be good to note this somewhere. Should I open an issue? 22:41