🦋 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
releasable6_ Next release in ≈1 day and ≈15 hours. GitHub is down. There are no known blockers. Please log your changes in the ChangeLog: github.com/rakudo/rakudo/wiki/ChangeLog-Draft 03:00
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
06:00 reportable6 left 06:01 reportable6 joined
Geth nqp/r5486: e88e23a227 | ab5tract++ | src/QRegex/Cursor.nqp
Add lookup for translating General_Category longnames

Also fix broken shortnames "L", "M", "N", "P", "S", "Z", and "C".
This fixes R#5486 and R#5372.
07:51
linkable6 R#5486 [open]: github.com/rakudo/rakudo/issues/5486 [Unicode] Test for Unicode `General_Category` does not work with `L`
R#5372 [open]: github.com/rakudo/rakudo/issues/5372 Test for Unicode `General_Category` does not work with long forms.
Geth nqp: ab5tract++ created pull request #820:
Add lookup for translating General_Category longnames
07:52
07:52 linkable6_ left
Geth nqp/r5486: cb4c8d3466 | ab5tract++ | src/QRegex/Cursor.nqp
Add lookup for translating General_Category longnames

Also fix broken shortnames "L", "M", "N", "P", "S", "Z", and "C".
This fixes R#5486 and R#5372.
07:54
linkable6 R#5486 [open]: github.com/rakudo/rakudo/issues/5486 [Unicode] Test for Unicode `General_Category` does not work with `L`
R#5372 [open]: github.com/rakudo/rakudo/issues/5372 Test for Unicode `General_Category` does not work with long forms.
07:55 linkable6_ joined
ab5tract Feedback welcome. The use of lookup hashes is hopefully mitigated by having them be `my` scoped in the Cursor class.. I am under the impression that this means that we only pay the memory penalty once, and not for every cursor 07:56
08:46 sena_kun joined
Geth nqp/r5486: 07a7a103f9 | ab5tract++ | src/QRegex/Cursor.nqp
Add lookup for translating General_Category longnames

Also fix broken shortnames "L", "M", "N", "P", "S", "Z", and "C".
This fixes R#5486 and R#5372.
08:46
linkable6 R#5486 [open]: github.com/rakudo/rakudo/issues/5486 [Unicode] Test for Unicode `General_Category` does not work with `L` 08:47
R#5372 [open]: github.com/rakudo/rakudo/issues/5372 Test for Unicode `General_Category` does not work with long forms.
08:47 linkable6_ left 08:48 linkable6_ joined
Geth rakudo/main: 604663a3c4 | (Stefan Seifert)++ | src/Raku/ast/scoping.rakumod
RakuAST: report line number of call to unknown routine
09:16
rakudo/main: c118661d0f | (Stefan Seifert)++ | src/Raku/ast/expressions.rakumod
RakuAST: fix compilation errors when using meta-ops

So far we did well with simple meta-ops like X+ but failed when multiple meta-ops were stacked like ZX+. Fix by pushing in a layer of abstraction so we can deal with infixes and meta-infixes.
rakudo/main: b899592bd4 | (Stefan Seifert)++ | 3 files
RakuAST: support calling meta-ops as functions without &-prefix

infix:<X+>((1,), (2,)) is just as valid as &infix:<X+>((1,), (2,)) but parses totally differently. Add the same handling to this other code path.
nine 1057
09:16 sena_kun left
lizmat confirmed :-) 09:28
ab5tract do I remember correctly that t/spec/S32-io/IO-Socket-Async.t is known to be problematic (at least on macOS)? 10:34
lizmat not for a while afaik, at least not on Apple silicon 10:53
ab5tract hmm.. I thought it was a flapper for some reason. it's failing here for some reason, but can't really see how it could be connected to the General_Category work 11:13
lizmat what's the flap rate you're seeing? 11:15
ab5tract gist.github.com/ab5tract/bf578c070...209b44260f 11:21
it's self-explanatory in that the address is likely already in use because test 2 didn't break the promise as expected 11:22
lizmat This is not the web page you are looking for ? 11:23
ab5tract weird, try again? 11:41
lizmat now it works :-) 11:43
doesn't look familiar to me, that error message 11:44
ab5tract hmm 11:45
thanks for checking :)
lizmat added the output that I see
12:00 reportable6 left, reportable6 joined
Geth roast: 8fe5a2f2a8 | (Stefan Seifert)++ | S03-metaops/cross.t
Fix unrelated error in error checking test

A better compiler will not only detect the invalid X. meta operator but also that the "foo" routine is not defined. Thus we would get an X::Comp::Group exception containing exceptions for both errors and the test would incorrectly fail.
12:05
rakudo/main: eb1069aca0 | (Stefan Seifert)++ | src/Raku/ast/expressions.rakumod
RakuAST: fix unknown method errors in some meta-op related situations
12:12
rakudo/main: 7de8258573 | (Stefan Seifert)++ | src/Raku/ast/expressions.rakumod
RakuAST: fix CannotMeta checks looking at the wrong operator

The properties of the to-be-metad infix are deciding while we looked at the meta-operator instead.
ab5tract interesting.. so t/spec/S32-io/IO-Socket-Async.t fails for me with current HEAD 13:24
happy it's not related to my uniprop fix, and if it has been failing for a while it would explain why I was under the impression that it is supposed to.. 13:25
not so happy to have a headscratcher :)
nine lizmat: 16:18 -!- Irssi: lizmat has closed the connection to you 14:18
14:18 lizmat left 14:19 lizmat joined
lizmat nine: weird, on my end all seemed ok 14:19
nine: could it be that your end is forcing OTR ? 14:20
Geth rakudo/r5486: 57efd00287 | ab5tract++ | 3 files
Add several symbols to hllsym lookup

These are used by QRegex::Cursor in order to disambiguate between the variety of inputs that it receives.
Part of addressing R#5486 and R#5372, which relate to uses of General_Category in regexes like:
   '$' ~~ /<:General_Category<Currency_Symbol>>/
   'a' ~~ /<:General_Category("Lowercase_Letter")>/
   '9' ~~ /<:General_Category("Number")>/
16:14
linkable6 R#5486 [open]: github.com/rakudo/rakudo/issues/5486 [Unicode] Test for Unicode `General_Category` does not work with `L`
linkable6 R#5372 [open]: github.com/rakudo/rakudo/issues/5372 Test for Unicode `General_Category` does not work with long forms.
16:15 linkable6_ left 16:17 linkable6_ joined
Geth nqp/r5486: 8d1a480a32 | ab5tract++ | src/QRegex/Cursor.nqp
Add lookup for translating General_Category longnames

Also fix broken shortnames "L", "M", "N", "P", "S", "Z", and "C".
This fixes R#5486 and R#5372.
The problem this addresses is three-fold: ... (26 more lines)
16:17
linkable6 R#5486 [open]: github.com/rakudo/rakudo/issues/5486 [Unicode] Test for Unicode `General_Category` does not work with `L`
linkable6 R#5372 [open]: github.com/rakudo/rakudo/issues/5372 Test for Unicode `General_Category` does not work with long forms.
16:18 linkable6_ left
ab5tract lizmat: regarding not fixing bugs in Rakudo because NQP might one day be used somewhere else ... 16:19
16:20 linkable6_ joined
ab5tract I don't really know how to express my reaction to this at the moment, so I'll just leave it at: I strongly disagree 16:23
besides, if it can't find those symbols, it will just fall back to the behavior it already had 16:24
s/will/can be made to/ 16:25
lizmat heh.. well, the only raku strings I can find in NQP are on the JS backend, and for handling ED phasers 16:26
*END
to me it feels a bit like home squatting 16:27
ab5tract to me it feels like making perfect the enemy of good 16:28
and it's extremely demotivating
but I'm also a fair bit upset by it, so I will go afk for a while to cool down
lizmat sorry, didn't mean to de-motivate: I'm definitely in favour of fixing issues, and they don't have to be perfect 16:34
nine ab5tract: it's not so much about NQP being used by something else. That would be the Parrot trap all over again. It's more about proper layering and lower layers not knowing intimate details of higher layers. Sometimes it cannot be avoided, but we should keep the number of these holes at a practical minimum. 16:35
So the question is always: is this one of those rare cases where it's the only sensible option?
What is that check for explicit type Str for? I have not understood that yet 16:39
ab5tract that's to account for other ACCEPTS-y `$obj` such as numbers and ranges. it's mostly a performance optimization to avoid those having to fall through the additional lookups and makes those checks safe to use `iseq_s` 16:44
lizmat: regarding the JVM concerns -- `Unicode property pairs NYI on jvm backend` 16:46
lizmat ab5tract: ok, so you're saying it would never pass there on the JVM backend 16:47
then the "unguarded" nqp::istype is ok
it's just that I've borked the JVM backend too may times that way
as MasterDuke17 can attest to 16:48
nine What is self for a type in that code? Is it a QRegex::Cursor or is it a Match or even some Raku class?
Geth nqp/r5486: 7b84b2c10a | ab5tract++ | src/QRegex/Cursor.nqp
Add lookup for translating General_Category longnames

Also fix broken shortnames "L", "M", "N", "P", "S", "Z", and "C".
This fixes R#5486 and R#5372.
The problem this addresses is three-fold: ... (26 more lines)
16:49
linkable6 R#5486 [open]: github.com/rakudo/rakudo/issues/5486 [Unicode] Test for Unicode `General_Category` does not work with `L`
linkable6 R#5372 [open]: github.com/rakudo/rakudo/issues/5372 Test for Unicode `General_Category` does not work with long forms.
16:50 linkable6_ left
ab5tract just pushed changes to account for the JVM eventuality but also to address keeping the code workable without the Raku hllsyms 16:50
16:51 linkable6_ joined
ab5tract nine: that's a good question.. 16:51
this code is in NQPMatchRole, but checking what that might actually be mixed into 16:54
`we are WHAT: Match` 16:56
hmm... does that mean a Raku `Match`? the debug statement is `say("we are WHAT: " ~ self.WHAT.raku)` 16:57
lizmat you can override NQPMatchRole methods in the Match class in Raku 16:58
ab5tract yeah, I could see where you were pointing :) 17:00
I wasn't sure if this `Match` meant a Raku `Match` but I guess that's answered by it responding to Raku 17:01
;) 17:02
s/Raku/.raku/ # though the sentence parses the same either way 17:03
lizmat++ nine++
next time I'm in the guts of an NQPRole I'll be sure to print out some details about what `self` actually is! 17:04
does it make sense to keep the lookups as NQP hashes in the Raku implementation? (for size or speed considerations?) 17:05
lizmat yes 17:09
nqp::atkey is at least one magnitude faster than .AT-KEY
ab5tract ack 17:12
17:17 squashable6 left 17:20 squashable6 joined 17:41 sena_kun joined 17:45 squashable6 left 17:47 squashable6 joined
ab5tract weird, the overidden `Match!DELEGATE_ACCEPTS` doesn't get called :( 17:52
[Coke] ab5tract++ btw. 17:58
18:00 reportable6 left 18:01 reportable6 joined
ab5tract thanks [Coke] :) 18:22
findings: 1) Defining `method !DELEGATE_ACCEPTS($obj, $arg) {...}` in Match.rakumod does not override that method in NQPMatchRole 19:14
2) naming it Match!DELEGATE-ACCEPTS and calling `self."!DELEGATE-ACCEPTS"($obj, $arg)` from NQPMatchRole doesn't work (`No such method '!DELEGATE-ACCEPTS' for invocant of type 'Match'`) ... neither does using nqp::callmethod 19:17
3) Defining `!DELEGATE_ACCEPTS` for Match in BOOTSTRAP.nqp doesn't override (and naming it `!DELEGATE-ACCEPTS` doesn't make it callable) 19:19
nine What about a non-private method? 19:20
ab5tract 4) non-private works :) 19:24
sorry, forgot to mention that 19:25
so would a regular method marked with `is implementation-detail` be the way to go then? 19:27
nine I think so 19:30
ab5tract any known and relevant performance difference between nqp::findmethod($?CLASS, 'foo') vs nqp::findmethod(self, 'foo')? 19:39
if all things are equal, I'll go with `$?CLASS` since it has no dependency on an instance 19:48
lizmat yup, that sounds ok 19:52
ab5tract: private methods in NQP don't exist as such, they're normal methods of which the name starts with !
in Raku however, private methods are a different beast altogether 19:53
they're kept separate from normal methods
and are more akin to subs, except that they always have at least one positional arg, and that's "self"
ab5tract that explains why the overriding doesn't work :) 19:56
lizmat you could make it work with .add_method("!DELEGATE_ACCEPTS", ... )
probably :-) 19:57
Geth rakudo/r5486: 026b6e3c96 | ab5tract++ | src/core.c/Match.rakumod
Add lookup for translating General_Category longnames

Also fix broken shortnames "L", "M", "N", "P", "S", "Z", and "C".
This fixes R#5486 and R#5372.
The problem this addresses is three-fold: ... (26 more lines)
linkable6 R#5486 [open]: github.com/rakudo/rakudo/issues/5486 [Unicode] Test for Unicode `General_Category` does not work with `L`
linkable6 R#5372 [open]: github.com/rakudo/rakudo/issues/5372 Test for Unicode `General_Category` does not work with long forms.
19:58 linkable6_ left 20:00 linkable6_ joined
[Coke] in commit messages, #id is preferred over R#id (they get auto-linked by github then) 20:04
Nifty commit!
(and it links the commit to the ticket) 20:05
Geth nqp/r5486: ad84f4ceb6 | ab5tract++ | src/QRegex/Cursor.nqp
Add dispatching logic for an HLL override

NQPMatchRole's `!DELEGATE_ACCEPTS` is not robust enough to handle the complexity of inputs that Raku gives it. So, offer the opportunity to override the behavior via a `DELEGATE-ACCEPTS` method defined in a consuming class/role.
This is part of addressing Rakudo Issues #5486 and #5372
20:07
rakudo/r5486: ba98824a8e | ab5tract++ | src/core.c/Match.rakumod
Add lookup for translating General_Category longnames

Also fix broken shortnames "L", "M", "N", "P", "S", "Z", and "C".
This fixes #5486 and #5372.
The problem this addresses is three-fold: ... (26 more lines)
ab5tract [Coke] made me do it :)
re: "you could make it work with .add_method("!DELEGATE_ACCEPTS", ... )" ... not sure about that, it wasn't working when I tried it in BOOTSTRAP.nqp but I may have been holding something wrong 20:09
Geth rakudo: ab5tract++ created pull request #5555:
Add lookup for translating General_Category longnames
20:10
rakudo/r5486: c0ca6caa2f | ab5tract++ | src/core.c/Match.rakumod
Add lookup for translating General_Category longnames

Also fix broken shortnames "L", "M", "N", "P", "S", "Z", and "C".
This fixes #5486 and #5372.
The problem this addresses is three-fold: ... (23 more lines)
20:11
ab5tract ooo, #5555! and at $day-job I pulled MR #555 on a project today too 20:12
lizmat :-) 20:13
nine This looks much nicer now :) 20:24
ab5tract Agreed! thank you both for your help and guidance 20:26
22:25 kjp left 22:47 sena_kun left
releasable6_ Next release in ≈19 hours. GitHub is down. There are no known blockers. Please log your changes in the ChangeLog: github.com/rakudo/rakudo/wiki/ChangeLog-Draft 23:00
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