🦋 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
00:56
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.
12:44
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
infix stopper
statement end
statement modifier
st…
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
'RakuAST::Statement::Expression'
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.
17:36
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
18:00
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