🦋 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
Geth JSON-Unmarshal/main: e3bcdb6e39 | (Vadim Belman)++ | lib/JSON/Unmarshal.rakumod
Remove extra 'l' from $*JSON-UNMARSHALL-PARAMS and UnmarshallParams

It was there by mistake.
03:30 reportable6 joined 04:59 quotable6 left, tellable6 left, shareable6 left, benchable6 left, releasable6 left, linkable6 left, evalable6 left, committable6 left, squashable6 left, greppable6 left, nativecallable6 left, bisectable6 left, statisfiable6 left, notable6 left, coverable6 left, sourceable6 left, unicodable6 left, reportable6 left, shareable6 joined 05:00 bisectable6 joined, nativecallable6 joined, greppable6 joined, linkable6 joined 05:01 statisfiable6 joined, notable6 joined, squashable6 joined 05:02 unicodable6 joined, releasable6 joined, evalable6 joined, reportable6 joined, tellable6 joined 05:25 squashable6 left 05:27 squashable6 joined 06:00 reportable6 left 06:02 reportable6 joined 06:03 committable6 joined 06:10 coverable6 joined 07:10 reportable6 left, coverable6 left, greppable6 left, bisectable6 left, linkable6 left, committable6 left, nativecallable6 left, notable6 left, statisfiable6 left, releasable6 left, shareable6 left, bisectable6 joined, releasable6 joined, notable6 joined, statisfiable6 joined 07:11 reportable6 joined, nativecallable6 joined 07:12 shareable6 joined 07:32 RakuIRCLogger joined 07:43 sourceable6 joined 08:12 greppable6 joined, linkable6 joined 08:15 coverable6 joined 08:53 benchable6 joined 08:59 rypervenche left, rypervenche joined
Geth rakudo/main: 5fe1bd8266 | ab5tract++ (committed using GitHub Web editor) | 3 files
RakuAST: Add currently supported feed operators (#5374)
lizmat 951! +3 ab5tract++ 09:18
ab5tract lizmat: so, what's next? ;) 09:35
lizmat my proto token foo {*} 09:36
that doesn't parse atm, it loses the name
ab5tract oh, weird
I'll take a look 09:37
lizmat also: @5341 #5342 #5343
#5341 rather :-)
ab5tract duh, I forgot about the issues.. thanks! 09:47
hmm, for the issue on once blocks, I see different behavior. the first time through it does give 42. 09:55
m: my $content = 'sub a() { once my $i = 42; ++$i }; dd a() xx 5'; shell Q:scalar<RAKUDO_RAKUAST=1 $*EXECUTABLE -e '$content'> 09:56
camelia (1, 1, 1, 1, 1).Seq
ab5tract m: my $content = 'sub a() { once my $i = 42; dd $i++ }; a() xx 5'; shell Q:scalar<RAKUDO_RAKUAST=1 $*EXECUTABLE -e '$content'>
camelia 0
lizmat fwiw: Q|foo|.AST.EVAL does the same 09:57
m: Q|sub a() { once my $i = 42; dd $i++ }; a() xx 5|.AST.EVAL 09:58
camelia 0
ab5tract I thought there was an easier way!
m: sub a() { once my $i = 42; dd $i++ }; a() xx 5 09:59
camelia 42
ab5tract so that's different from what the ticket says we should expect
lizmat m: sub a() { once my $i = 42; dd $i++ }; a() for ^5 10:02
camelia 42
lizmat hmmm
ab5tract your point still holds
m: my $i = 0; sub a() { once $i = 42; dd $i++ }; a() xx 2
camelia 42
ab5tract m: Q| my $i = 0; sub a() { once $i = 42; dd $i++ }; a() xx 2 |.AST.EVAL 10:03
camelia 0
lizmat right
ab5tract now this is a real mystery.. all the QAST seems to be in place :) 10:07
how important is the :cuid flag ? 10:08
lizmat I haz no idea 10:11
ab5tract well, the QAST does differentiate in that the old frontend produces a call to p6assign, whereas RakuAST refers to calling infix:<=> 10:20
10:21 notna joined
lizmat well, that's probably the case for any assignment atm ? 10:21
ab5tract yeah, it shouldn't be an issue
seems to be working well 10:22
hmmm.... could it be that 'p6stateinit' is never true in RakuAST? naively removing the QAST if check for 'p6stateinit' at leasts runs the once block (even if it fails spectacularly immediately thereafter 10:45
lizmat could be, but that should also affect state variables
I mean, a once block is basically a block that gets called when a hidden state variable isn't set yet 10:46
ab5tract yeah, that seems to be the case 10:49
lizmat at least, that's what I remembered from implementing "once" about 10 years ago 10:50
ab5tract m: Q| sub a() { state $a = 42; $a++ }; dd a() xx 3 | . AST.EVAL
camelia (42, 43, 44).Seq
ab5tract it calls the block at state init and then stores that in a lowered param (your hidden state var) 10:51
Geth rakudo/main: 70944f73ca | (Elizabeth Mattijsen)++ | 2 files
Fix setting properties of operators with ":" in their name

E.g. =:=
ab5tract ah, it seems that there should be a container for the state var declared .. 11:25
lizmat ++ab5tract
11:27 committable6 joined
ab5tract if I'm a subclass of Foo, do I need to include children of Foo in a visit-children method? 11:32
seems likely 11:33
lizmat yeah, that's why almost each class has a visit-children metho 11:34
Geth rakudo/main: ee170b9f4a | (Elizabeth Mattijsen)++ | src/Raku/ast/operator-properties.rakumod
RakuAST: add "not-reducable" convenience method

Returns whether these properties indicate that the associated operator is *not* reducable.
rakudo/main: 5841afb2a3 | (Elizabeth Mattijsen)++ | 2 files
RakuAST: add operator applicability tests to classes

Whether an operator can be reduced, or used in a specific meta operator, is logic that needs to live in the RakuAST classes, since we want the same checks there that the Raku grammar is currently doing.
rakudo/main: 1626cbfb59 | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: remove grammar tests for reducability / meta

These tests are now handled in the RakuAST:: classes. Also remove now no longer needed helper methods.
ab5tract ++++ 11:48
11:49 quotable6 joined
Geth rakudo/main: 76ad99d45c | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: remove the %additive hash
rakudo/main: 6da14defad | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: remove the %additive_iffy hash
11:58 sjn left, sjn joined 12:00 reportable6 left
Geth rakudo/main: e337c82350 | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: remove the %exponentiation hash
12:03 reportable6 joined
Geth rakudo/main: e026c1b05e | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: remove the %symbolic_unary hash
rakudo/main: 65789659d1 | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: remove the %dotty_infix hash
rakudo/main: 6fa642c676 | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: remove the %multiplicative hash
rakudo/main: c19e7a1c9a | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: remove the %multiplicative_iffy hash
rakudo/main: 4b09c649e2 | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: remove the %replication(_xx) hashes
ab5tract so it seemed to me like the reasonable approach to getting that state container declared was to do a PERFORM-BEGIN that adds a VarDeclaration::Simple via $resolver.current-scope.add-generated-lexical-declaration 12:32
but it barfs unintelligibly (to me)
Geth rakudo/main: c821ffebdc | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: remove the %concatenation hash
rakudo/main: 5e10f29564 | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: remove the %junctive_and(_iffy) hashes
rakudo/main: b60812ea0f | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: remove the %junctive_or(_iffy) hashes
rakudo/main: 6807083550 | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: remove the %named_unary hash
rakudo/main: 84419efb92 | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: remove the %structural hash
rakudo/main: c978bf2130 | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: remove %chaining hash
ab5tract "bindpos_o requires a concrete object (got a VMNull type object instead)" <-- this implies that an argument to a subroutine is undefined, right? 12:58
lizmat it implies the bindpos_o was tried on a VMNull object 12:59
which could be a class not resolved 13:00
generally, but probably not in this case
Geth rakudo/main: 8ec9ae8bfb | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: remove the %tight_xxx hash family
rakudo/main: e0864b19bb | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: remove the %ternary hash
lizmat afk for a few hours&
ab5tract lizmat: enjoy your afternoon! 13:11
I'm about to step into the sunshine myself
Just cracked the once issue :D
13:17 notna left
jdv [Coke]: do you believe the jvm build will work before 9/21? 13:37
ab5tract: wut tz r u? 13:38
ab5tract I'm still in Amsterdam 13:49
Geth rakudo: ab5tract++ created pull request #5375:
RakuAST: Get 'once' statement prefix fully working
ab5tract jdv: what about you? 14:00
14:14 codesections joined
jdv et 14:17
14:59 codesections left
Geth roast: usev6++ created pull request #838:
Teach test_summary about #rakuast fudging
15:49 guifa joined
Geth roast: c17f954da4 | (Christian Bartolomäus)++ (committed using GitHub Web editor) | test_summary
Teach test_summary about #rakuast fudging (#838)

This is similar to what was done in
16:37 linkable6 left
Geth rakudo/main: 5667eaa784 | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: remove %conditional_ff hash
16:40 linkable6 joined
Geth rakudo/main: 700e52485e | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: remove %item_assignment hash
rakudo/main: 8ed9f68110 | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: remove %adverb hash
rakudo/main: ec4d75ca6d | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: remove %list_assignmenrt hash
rakudo/main: 628c71bdac | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: remove the %loose_xxx hashes
rakudo/main: 44ba063696 | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: remove %comma hash
rakudo/main: 5881f0b960 | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: remove %list_infix hash
rakudo/main: 577498bcb5 | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: remove %sequencer hash

and the %list_assignment hash which apparently wasn't being used anymore. This was the final %prec hash! Whee!
rakudo/main: 8631e3ab0b | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: don't use hashes in prefix/postfix checking

Another step towards not using hashes for EXPR parsing
18:00 reportable6 left
Geth rakudo/main: 3a70184aa1 | (Elizabeth Mattijsen)++ | 2 files
RakuAST: conform to the use of "chain"

Instead of "chaining". Originally I thought to de-huffmanize
  "chain", but then I realized it was not being used as a verb,
but more as an adjective. Anyways, this is closer to the legacy wording, so less chance of weird problems occurring in the future.
ab5tract lizmat: should I re-work the PR to fix @compstuff bindpos_o failure to ensure that the local @compstuff gets saved back into the Code object? 18:44
lizmat yes, I think the problem is there: Code.@!compstuff perhaps *should* have been initialized already ? 18:47
it feels like covering up a bug, rather than fixing one
19:02 lizmat_ joined 19:06 lizmat left, kjp left, reportable6 joined 19:09 lizmat_ left 19:10 lizmat joined 19:14 MasterDuke left
ab5tract I see: so IMPL-STUB-CODE is not already called in this codepath, which is where @!compstuff gets set. 19:31
lizmat aha! 20:05
lizmat is starting to wonder whether it would make sense to do the unicode property database in Raku 20:06
nemokosch how can I inspect a whateverstar in vanilla Raku without whatever-currying constantly getting in the way? 20:36
okay, this is really funny 20:37
if I store it into a scalar variable, that's gonna protect from this behavior
but apparently, at least in the REPL because I'm getting paranoid now, a sigilless "variable" won't protect you
m: my \wut = *; dd wut ~~ Whatever 20:38
Raku eval Bool::True
nemokosch okay, then it's another REPL weirdness
quite unexpected
japhb lizmat: My only concern with Unicode property DB being lifted into Raku is performance, because my terminal code needs to do a LOT of unicode property examination (multiple per codepoint) in order to lay out strings properly. So I tend to be hitting that code pretty hard. 20:51
21:03 NemokoschKiwi joined
NemokoschKiwi bisectable: say -Inf .. 'Z' 21:03
bisectable6 NemokoschKiwi, Will bisect the whole range automagically because no endpoints were provided, hang tight
NemokoschKiwi, Output on all releases: gist.github.com/60f50328714ae4de1e...70ea4beabe 21:04
NemokoschKiwi, Bisecting by output (old=2017.05 new=2017.06) because on both starting points the exit code is 1
NemokoschKiwi, bisect log: gist.github.com/144e805ea5dad36e95...8ec2f6c472
NemokoschKiwi, (2017-06-07) github.com/rakudo/rakudo/commit/e5...30bd74d765
NemokoschKiwi, Output on all releases and bisected commits: gist.github.com/0b114c05ad22f31348...297cbc811b
NemokoschKiwi Hm, interesting, I expected a change somewhere on the way 21:05
21:06 NemokoschKiwi left
lizmat japhb: "multiple per codepoint" that feels like currently multiple hash lookups, that maybe could be done smarter 21:45
japhb lizmat: I'd love something smarter! 21:55
See github.com/japhb/Text-MiscUtils/bl...od#L22-L40 for one example routine that itself is used as a primitive by a lot of other routines. 21:56
I guess these days %ignore should be a constant
lizmat yes, and actually I would make it a Map 21:58
Sets, by design, are keyed on the .WHICH, so that's relatively a lot of work
japhb Ooh, that could be a quick win right off. I wrote this code quite a while ago, so hadn't even been thinking about that bit. 21:59
Still, my original point was that even nerfing the handling of %ignore, that code is really painfully expensive.
lizmat my %ignore is Map = < Mn Mc Me Cc Cf Cs Co Cn > Z=> 1 xx *
japhb Where I can get away with the cache not ballooning out of control, I wrap duospace-width in a cache that I can ensure isn't being used concurrently in the calling code. 22:00
Because otherwise this one routine becomes pretty much a bottleneck for the entire layout stack.
lizmat also: you can combine the grep and the map into a single map
.map({ .uniprop('East_Asian_Width') unless %ignore{.uniprop} 22:01
japhb I always forget about that ability to fold away in map. Any relative expected performance difference between grep+map and map...unless? 22:02
lizmat really depends on how expensive .uniprop is 22:03
since it is not very (I think), it could be quite significant
and now I'm going to be to think about it some more :-) 22:04
japhb :-D
\o/ Successful nerd snipe!
22:21 kjp joined
japhb Annoyingly, can't declare a constant and use `is Map` at the same time. :-P 22:24
nemokosch constants default to Maps 22:25
just read that a couple of minutes ago haha
huh, really? Does Inf..'Z' produce a decent error only because the body of the Range constructor tries to retrieve the coerced value? ... 22:29
japhb m: my constant %foo = < a b c > Z=> 1 xx *; dd %foo; 22:30
camelia Map.new((:a(1),:b(1),:c(1)))
japhb HUH
I'll be darned.
nemokosch github.com/rakudo/rakudo/blob/3a70...akumod#L13 22:52
here, would it be okay to replace the sigilless and nqp::decont to a $variable?
gfldex `constant` declares a `term:<%foo>` and binds to it. 22:58
ab5tract m: my constant %foo = <a b c> X=> 1; dd %foo 23:01
camelia Map.new((:a(1),:b(1),:c(1)))
ab5tract X=> is one of my absolute favorites
gfldex m: my constant %foo = <a b c> »=>» 1; dd %foo 23:03
camelia Map.new((:a(1),:b(1),:c(1)))
gfldex I always have to think when I see X. A hyper fits better into my brain. 23:04
Geth rakudo: ab5tract++ created pull request #5376:
RakuAST: Fix once blorst not running
ab5tract gfldex: I've got to figure out how to easily type those quote marks, then I might use them a bit more often :) 23:17
gfldex I had the same issue until I made them easy to type. :) 23:18
nemokosch >>=>>> actually works here xD 23:22
23:24 nine left, nine joined
Ouch. The way -Inf..'Z' fails is indeed dependent on the internal logic of the range constructor 23:25
when I added the type check for *..'Z', it constructed a grotesque range that ends with a Failure instance 23:26
however, when passed the maximum value as $max > 0 ?? $max !! $max instead of just $max, suddenly I got the same behavior
gfldex I'm using xcompose and the following script to keep Linux and Windows in sync. The both can't agree on how keys should be called (hence the script). codeberg.org/gfldex/raku-xcompose/...mpose.raku 23:31
Geth File-Find/main: afb86c0405 | (Joseph Brenner)++ | 2 files
Allow junctions with name and exclude (Fixes #36)
File-Find/main: 9948fd63c1 | (Márton Polgár)++ (committed using GitHub Web editor) | 2 files
Merge pull request #37 from doomvox/junction_arguments

Allow junctions with name and exclude