🦋 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, reportable6 joined
Nemokosch I wish it ran that fast, haha 00:22
didn't know this TEST_JOBS env though 00:23
can I get a commit bit to rakudo?
00:31 dogbert17 joined 00:33 dogbert11 left
Geth rakudo: 2colours++ created pull request #5169:
Fix for storing parameterised hashes as items
01:33 evalable6 left 01:35 evalable6 joined 02:56 MasterDuke joined 03:29 dogbert11 joined 03:30 dogbert17 left 03:34 dogbert17 joined 03:36 dogbert11 left 03:42 dogbert17 left 03:46 dogbert17 joined 04:00 dogbert11 joined 04:02 dogbert17 left 04:06 dogbert11 left 04:07 dogbert11 joined 04:10 dogbert17 joined 04:13 dogbert11 left 04:14 dogbert11 joined 04:16 dogbert17 left 04:21 dogbert17 joined 04:23 dogbert11 left 04:28 dogbert11 joined 04:30 dogbert17 left 05:06 dogbert17 joined 05:08 dogbert11 left 05:10 dogbert17 left 05:11 dogbert11 joined 05:20 dogbert17 joined 05:23 dogbert11 left 06:00 reportable6 left 06:02 reportable6 joined 08:22 Nemokosch joined
Nemokosch bisectable6: say Dateish ~~ Cool 08:22
bisectable6 Nemokosch, Will bisect the whole range automagically because no endpoints were provided, hang tight
Nemokosch, ¦6c (66 commits): «True␤» 08:23
Nemokosch, Nothing to bisect!
Nemokosch why are (apparently) all roles Cool? xD 08:24
Nemokosch let's do one more 08:28
08:28 dogbert17 left
Nemokosch bisectable6: say PositionalBindFailover ~~ Cool 08:28
bisectable6 Nemokosch, Will bisect the whole range automagically because no endpoints were provided, hang tight
Nemokosch, ¦6c (66 commits): «True␤»
Nemokosch, Nothing to bisect!
nine Bootstrap says: Perl6::Metamodel::ParametricRoleHOW.pretend_to_be([Cool, Any, Mu]); 08:30
Nemokosch hm, you are right. Do you know what purpose that serves? Why do all roles need to pretend to be Cool for type checking? 08:34
nine The commit message that introduced this says "Roles should be narrower than Cool/Any/Mu." and it fixed "multis don't distinguish Positional" 08:37
Nemokosch gotcha github.com/rakudo/rakudo/commit/00...070b30077f 08:42
but this doesn't give a lot of insights about Cool in particular
08:46 dogbert17 joined 08:52 Nemokosch left 09:02 dogbert11 joined 09:03 dogbert17 left 09:04 dogbert17 left 09:08 dogbert11 left 09:11 dogbert11 joined 09:17 dogbert17 joined 09:20 dogbert11 left 09:31 dogbert17 left
lizmat nine: looking at the implementation of PRE / POST phasers, and they get a lot of QAST inserted into their bodies 10:42
so rather than inserting the qast with all its complications, I'm considering adapting the RakuAST blorst instead 10:43
which would make it much more high level, and potentially more flexible
opinions ?
specifically translating World line 4460 and following 10:47
10:53 dogbert17 joined 11:12 MasterDuke left 11:15 dogbert17 left 11:19 dogbert17 joined 11:23 dogbert17 left 12:00 reportable6 left 12:02 reportable6 joined
lizmat nine: Cannot find method 'apply-sink' on object of type NQPMu does that ring a bell ? 12:29
nine not in general 12:31
lizmat too bad :-) 12:33
12:35 ab5tract joined
lizmat nine: do you see something inherently wrong in gist.github.com/lizmat/136cee1a104...f528ac95c6 ? 12:36
it basically turns the blorst into X::Phaser::PrePost.new(:phaser<PRE>, :condition($blorst.DEPARSE)).throw 12:37
X::Phaser::PrePost.new(:phaser<PRE>, :condition($blorst.DEPARSE)).throw unless $blorst 12:38
Geth nqp/main: d7e8161577 | (Christian Bartolomäus)++ (committed using GitHub Web editor) | src/vm/jvm/QAST/Compiler.nqp
[JVM] Add some constants DISP_* (#794)

At least DISP_ONLYSTAR is referenced by Rakudo, so it makes sense to define them similarly to src/vm/moar/QAST/QASTOperationsMAST.nqp.
nine lizmat: well I don't understand what PRE and POST phasers are even supposed to do. 12:49
lizmat m: { PRE say "foo" }()'
camelia ===SORRY!=== Error while compiling <tmp>
Two terms in a row
at <tmp>:1
------> { PRE say "foo" }()⏏'
expecting any of:
infix stopper
statement end
statement modifier
lizmat m: { PRE say "foo" }()
camelia foo
lizmat m: { PRE !say "foo" }()
camelia foo
Precondition '!say "foo"' failed
in block at <tmp> line 1
in block <unit> at <tmp> line 1
lizmat PRE phaser is supposed to throw if it returns something falsy 12:50
it is called before any other block phaser in a block
rather than messing with QAST, I thought RakuAST would provide a more HLLy approach 12:51
nine Looks ok then 12:52
lizmat could it be that the NQPMu is caused by something not being serialized ?
aahhh... ok, looks like a missing "postfix" 12:54
nine nine's debug lemma #1: the bug is _always_ in your own code. 12:56
lizmat Oh, I had no doubt about that :-)
Nemokosch Especially when your own code is a runtime 13:04
lizmat :-)
13:21 ab5tract left 13:32 ab5tract joined 13:39 Xliff joined 13:47 ab5tract left
lizmat some progress, another weird error now: 14:21
No such method 'IMPL-WRAP-QAST' for invocant of type
nine: ring a bell ?
nine You have an expression somewhere where there should be a statement modifier 14:22
lizmat aaahhh ok 14:26
14:38 dogbert17 joined
lizmat meh... looks like NQPMu is truthy in Raku land :-( 14:47
nine Always better to be explicit 14:57
Nemokosch As a type object? 15:01
15:14 dogbert17 left 15:22 ab5tract joined
lizmat ok, got the PRE phaser passing now, if the condition is true 15:32
if it is false, then it show a specific error, not: No exception handler located for catch
so I guess there's still something going wrong when throwing the exception 15:33
vrurg Is "no exception handler" specced??? 15:38
15:40 ab5tract left
lizmat ir's one of those "this shouldn't happen" things 15:41
vrurg That's what I mean. Hopefully, it not a part of the specs. :)
lizmat it's not 15:44
15:56 dogbert17 joined 16:06 squashable6 left 16:08 squashable6 joined 16:43 dogbert17 left
nine waaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaah 17:02
lizmat my feelings entirely 17:04
is something a lot simpler all of a sudden? or a lot more difficult ? 17:05
please don't keep us in suspense! :-) 17:06
nine It seems to never end... Trying to get whatever currying fully implemented. 17:07
lizmat aah... yeah, that: another piece of magic :-(
nine I got it down to generating perfectly working code. Except...that the meta object is wrong. It gets created too early, so it thinks the WhateverCode would have only one parameter.
17:10 gfldex left
lizmat so I guess the parameter info needs to be cached first :-( 17:11
nine Problem is that there is no way to know when exactly it would be ok to run IMPL-CHECK on the thunk (thereby creating the meta object), because a node only knows its descendants. But a parent may also be an ApplyInfix and steal our curry.
lizmat and you don't know the parent anyway, right ? 17:12
nine I don't
lizmat in better news: I got the PRE phaser working :-) 17:13
nine lizmat++ 17:16
Geth rakudo/main: bc7189cc82 | (Elizabeth Mattijsen)++ | 6 files
Add complete support for PRE phasers

  - Grammar / Actions added
  - RakuAST::StatementPrefix::Phaser::Pre classes added
  - Deparsing added
  - Tests added
This one turned out to be a bit more difficult, but in the end simpler because the QAST-twiddling in World from before, has been replaced by generating code using RakuAST classes. Only tricky bit was to hide this extra code from deparsing, to allow roundtripping.
lizmat onto POST!
17:44 dogbert17 joined 18:00 reportable6 left
Geth rakudo/main: 73839db27f | (Stefan Seifert)++ | 2 files
RakuAST: fix "lexical already declared" when placeholder is used multiple times
rakudo/main: 28cb8cc2d0 | (Stefan Seifert)++ | 3 files
RakuAST: fully implement whatever currying of infixes

With this * * * + * * * results in a callable taking 4 args and returning the sum of two products.
The difficulty here is that each tree node only knows its children but not its parent. Thus a node cannot know whether there is a parent infix ... (6 more lines)
nine 109 and 641!
18:01 reportable6 joined 18:39 melezhik joined 18:40 melezhik left 18:51 ab5tract joined 18:57 melezhik joined 19:02 melezhik left 19:04 melezhik joined, melezhik left 19:22 gfldex joined 19:54 epony joined 20:54 nine left, nine joined 21:28 NemokoschKiwi joined 23:04 ab5tract left 23:43 epony left
NemokoschKiwi do `is` calls all count as tests with regards to the argument of `plan`? 23:50
i.e if I write a block in roast with two is'es, does that increment that number by two? 23:51
23:57 NemokoschKiwi left