🦋 Welcome to the MAIN() IRC channel of the Raku Programming Language (raku.org). Log available at irclogs.raku.org/raku/live.html . If you're a beginner, you can also check out the #raku-beginner channel! Set by lizmat on 6 September 2022. |
|||
00:52
jpn joined
00:57
jpn left
01:14
hulk joined,
kylese left
01:18
derpydoo joined
02:05
jpn joined
02:10
jpn left
02:15
hulk left,
kylese joined
02:51
human-blip left
03:54
jpn joined
03:59
jpn left
04:30
kylese left
04:32
kylese joined
04:46
human-blip joined
05:01
yeahitsme joined,
jpn joined
05:06
jpn left
05:29
Sgeo left
05:30
kylese left
05:31
kylese joined
05:39
Aedil joined
06:02
floyza left
06:17
jpn joined
06:22
jpn left
|
|||
antononcube | Here uploaded the first version of “WWW::YouTube” : raku.land/zef:antononcube/WWW::YouTube | 07:02 | |
07:17
jpn joined
07:21
jpn left
07:58
dakkar joined
08:05
lichtkind joined
09:20
wayland76 joined
09:24
jpn joined
|
|||
grondilu | m: proto foo($) { gather {*} }; multi foo(Int $x) { take $x + 1 }; multi foo(Str $x) { take $x.flip }; foo(35) | 09:39 | |
camelia | ( no output ) | ||
grondilu | ^didn't this use to work? | ||
factorising the gather in the proto, that is | 09:40 | ||
Voldenet | bisect: proto foo($) { gather {*} }; multi foo(Int $x) { take $x + 1 }; multi foo(Str $x) { take $x.flip }; foo(35) | 09:41 | |
bisectable6 | Voldenet, Will bisect the whole range automagically because no endpoints were provided, hang tight | ||
Voldenet | we can see if that used to work | ||
bisectable6 | Voldenet, ¦6c (90 commits): «» | 09:42 | |
Voldenet, Nothing to bisect! | |||
Voldenet | right | 09:44 | |
bisect: proto foo($) { gather {*} }; multi foo(Int $x) { take $x + 1 }; multi foo(Str $x) { take $x.flip }; .say for foo(35) | |||
bisectable6 | Voldenet, Will bisect the whole range automagically because no endpoints were provided, hang tight | ||
wayland76 | I ran some code in a container on github, and it said: Function 'Resource::Distribution' needs parens to avoid gobbling block (or perhaps it's a class that's not declared or available in this scope?) | ||
bisectable6 | Voldenet, ¦6c (90 commits): «» | 09:45 | |
Voldenet, Nothing to bisect! | |||
wayland76 | So I tried "use Resource::Distribution", and it said: Could not find Resource::Distribution in | ||
Then I tried zef install Resource::Distribution, and it said: Could not find Resource::Distribution in: | 09:46 | ||
Any ideas? | |||
Voldenet | grondilu: doesn't seem that it used to work ever, but I see no reason why it shouldn't | 09:51 | |
m: proto foo($) { CATCH { default { say 'foo'; }}; {*} }; multi foo(Int $x) { die; }; foo(42) | 09:53 | ||
camelia | foo | ||
grondilu | it was at least discussed few years ago. Can't recall if it worked at the time but I lean towards stating it did. | 10:02 | |
10:02
derpydoo left
|
|||
grondilu | I think it was used somewhere on rosettacode | 10:03 | |
10:05
jpn left
|
|||
Voldenet | m: proto foo($) { gather { take 1; {*}; take 5 }; }; multi foo(Int $x) { take $x + 1 }; multi foo(Str $x) { take $x.flip }; .say for foo(35) | 10:11 | |
camelia | 1 5 |
||
Voldenet | m: proto foo($) { gather { take 1; take {*}; take 5 }; }; multi foo(Int $x) { $x + 1 }; multi foo(Str $x) { take $x.flip }; .say for foo(35) | 10:13 | |
camelia | 1 Nil 5 |
||
Voldenet | m: proto foo($) { my $n = {*}; gather { take 1; take $n; take 5 }; }; multi foo(Int $x) { $x + 1 }; multi foo(Str $x) { take $x.flip }; .say for foo(35) | ||
camelia | 1 36 5 |
||
Voldenet | so it seems that {*} doesn't work within gather at all | 10:14 | |
m: proto foo($) { gather { take 1; take {*}; take 5 }; }; multi foo(Int $x) { say "called foo(Int)"; $x + 1 }; multi foo(Str $x) { take $x.flip }; .say for foo(35) | |||
camelia | 1 Nil 5 |
||
Voldenet | m: proto foo($) { my $n = {*}; gather { take 1; take $n; take 5 }; }; multi foo(Int $x) { say "called foo(Int)"; $x + 1 }; multi foo(Str $x) { take $x.flip }; .say for foo(35) | 10:15 | |
camelia | called foo(Int) 1 36 5 |
||
Voldenet | eh, so, it isn't even called | ||
10:18
jpn joined
|
|||
wayland76 | To answer my question: It's Distribution::Resource, not Resource::Distribution :p | 10:22 | |
10:26
jpn left
10:43
jpn joined
10:51
jpn left
10:52
jpn joined
11:33
jpn left
11:52
jpn joined
11:57
jpn left
12:26
wayland joined
|
|||
lizmat | and yet another Rakudo Weekly News hits the Net: rakudoweekly.blog/2025/04/22/2025-...ompletion/ | 12:26 | |
12:26
wayland76 left
12:42
jpn joined
13:08
jpn left
13:12
jpn joined
13:16
jpn left
13:20
human-blip left,
human-blip joined
13:22
jpn joined
|
|||
tbrowder | lizmat++ | 13:24 | |
note the reddit comment about raku having great regexes, and the perl person said perl has it now. but they didn't give any time comparisons. | 13:27 | ||
13:27
jpn left
|
|||
timo | do you mean in terms of performance? | 13:30 | |
antononcube | "JSON::Fast" cannot parse this: from-json('[23, 32, 31.]') . Is there a workaround? | 13:35 | |
I will file an issue soon... | |||
13:36
jpn joined
|
|||
timo | oh, are floating points without a digit after the . allowed? | 13:38 | |
do you happen to have a link to the spec on hand? | |||
antononcube | @timo Yeah, I should have clarified more. | 13:40 | |
tbrowder | yes, i've just seen comps on debian which may not have latest perl with raku regexes | ||
antononcube | @timo Wolfram Language (aka Mathematica) parses that JSON string. R and Python do not. | ||
timo | JSON::Fast does have some standards-nonconformant options already, for NaN and Inf and -Inf IIRC | 13:41 | |
antononcube | @timo LLM services (e.g. Google's Gemini) occasionally return JSON vectors that that floating point without following digit. | 13:42 | |
tbrowder | m: perl | 13:43 | |
camelia | ===SORRY!=== Error while compiling <tmp> Undeclared routine: perl used at line 1 |
||
antononcube | I can replaces those with some regex matching/substitution, but then that has to be in done in all LLM packages. (Just in case...) | ||
13:43
jpn left
|
|||
Voldenet | > '[23, 32, 31.]' | 13:45 | |
this is not proper json | |||
antononcube | Ok. I still need it to be parsed. (Because LLMs return results in that form.) | 13:46 | |
tbrowder | latest perl is 5.40.2; my deb has perl 5.32.1 | ||
:( | |||
Voldenet | it is proper javascript | 13:47 | |
is there Inline::Javascript? | 13:48 | ||
eh, nope :( | |||
tbrowder | erg, latest is 5.41.12 per perl.org | 13:51 | |
Voldenet | `JSON.stringify([23, 32, 31.])` would solve the problem if you can get away with using nodejs | ||
dakkar | m: '[10,12.4,13.]'.subst(/(\d+)\.<!before \d>/, {"{$0}.0"}, :g) | ||
camelia | ( no output ) | ||
tbrowder | nope, 5.40.2 | ||
dakkar | m: say '[10,12.4,13.]'.subst(/(\d+)\.<!before \d>/, {"{$0}.0"}, :g) | ||
camelia | [10,12.4,13.0] | 13:52 | |
Voldenet | m: say (run <nodejs -e>, "console.log(JSON.stringify([23, 32, 31.]))", :out).out.slurp | ||
camelia | |||
Voldenet | yeah of course, there's no nodejs | ||
dakkar | (it's not a real solution, but then you're getting random strings out of an LLM…) | ||
antononcube | @dakkar Yes, that kind of solution I was going to put in the package for the most frequent offender. (Gemini.) | 13:53 | |
LLM embeddings, though, are not random strings. They are supposed to reliably give vectors (in whatever format.) | 13:54 | ||
14:48
jpn joined
14:57
jpn left
15:12
jpn joined
15:18
jpn left
15:22
jpn joined
15:27
jpn left
|
|||
grondilu | m: my Set[Int] %stuff{Rat}; %stuff{355/113} (-)= Set[Int].new: 32; | 15:30 | |
camelia | Type check failed in assignment to element of %stuff; expected Set[Int] but got Set (set()) in block <unit> at <tmp> line 1 |
||
grondilu | ^what's wrong with the above? | 15:31 | |
m: my Set[Int] %stuff{Rat}; %stuff{355/113} = Set[Int].new: 32; | |||
camelia | ( no output ) | ||
grondilu | m: my Set[Int] %stuff{Rat}; %stuff{355/113} (|)= Set[Int].new: 32; | ||
camelia | ( no output ) | ||
15:31
jpn joined
|
|||
grondilu | is the empty set loosing its constraints or something? | 15:31 | |
m: my Set[Int] %stuff{Rat}; %stuff{355/113} (|)= Set[Int].new: 32; %stuff{355/113} (-)= Set[Int].new: 32; | 15:32 | ||
camelia | ( no output ) | ||
grondilu | m: my Set[Int] %stuff{Rat}; %stuff{355/113}.=new; %stuff{355/113} (|)= Set[Int].new: 32; | 15:33 | |
camelia | ( no output ) | ||
grondilu | hum... so I needed to instantiate it first | ||
kind of annoying, but ok | 15:34 | ||
FWIW I'm planning to use `has Set[square] %!pieces{Piece}` in my chess module to keep track of the location of various types of pieces. | 15:35 | ||
(hopefully improving moves generation speed) | 15:36 | ||
wow, trying to parse a bunch of games with this new addition I got: | 15:37 | ||
MoarVM panic: Internal error: zeroed target thread ID in work pass | |||
it seemed to fare well for a few dozen games until that happened. | 15:38 | ||
that's not going to be easy to debug lol | 15:39 | ||
15:42
jpn left
16:08
human-blip left
16:09
human-blip joined
|
|||
grondilu | hard to reproduce too. I've just tried again and this time it went through. | 16:22 | |
librasteve | i occasionally get the same MoarVM error in the Air project | 16:23 | |
grondilu | you can't reliably reproduce it either? | 16:26 | |
16:40
human-blip left
16:42
human-blip joined
16:48
dakkar left
|
|||
timo | it's an error that usually happens when you do stuff from multiple threads that's not thread-safe, or if you're somehow corrupting the memory of the process. or there's a moarvm bug, of course, always possible | 16:54 | |
16:54
human-blip left
|
|||
timo | i can whole-heartedly recommend recording execution of your program with rr and its "chaos mode" because even if you catch it in GDB with a breakpoint in MVM_oops or MVM_panic, it's extremely difficult to figure out from the end state what actually caused the issue | 16:55 | |
16:55
human-blip joined
|
|||
timo | grondilu: i can try to assist | 16:56 | |
grondilu | what's rr? | 16:59 | |
timo | mozilla's rr "record and replay" | ||
fast lightweight multi-process recording and forwards and backwards debugging | |||
grondilu | I'm pretty sure this part of the code I was running was not multithreaded, though maybe rakudo creates threads automatically? | 17:00 | |
timo | there are cases, like using Proc::Async or asynchronous I/O in general, but that usually doesn't cause this particular problem | ||
i think precompilation might start threads | 17:01 | ||
anything involving NativeCall? | 17:02 | ||
grondilu | nope | 17:03 | |
I've had this failure after trying to implement the mixed representation of the board. I can't quite push right now, but here is the relevant part for that mixed representation: gist.github.com/grondilu/851c09ba5...3c76c93ee4 | 17:05 | ||
it's all the Set stufu | |||
*stuff | |||
timo | are the chess games that you are parsing easy to download as well? | 17:07 | |
17:07
[Coke] left
|
|||
grondilu | www.pgnmentor.com/files.html | 17:08 | |
also they are in the resources dir of my repo | |||
timo | cool | 17:09 | |
grondilu | just tried again, got 'MoarVM panic: Internal error: invalid thread ID -1241305976 in GC work pass' this time | 17:11 | |
timo | great, a repro! | ||
grondilu | but it's always happening at a different game | 17:12 | |
and sometimes not happening at all | 17:13 | ||
timo | right, as long as it does happen some high amount of the time it'll be useful | ||
that error happens when we encounter invalid data in memory during a run of the GC | |||
timing of GC runs can depend on different factors | |||
grondilu | do you want me to push what I have now, even though it's quite messy? | ||
timo | yeah, you can just put it in a throw-away branch | 17:14 | |
grondilu | I suck at dealing with git branches | ||
timo | i can do it together with you | ||
grondilu | rn I just have a master branch | ||
should I create a moarvm-error? | 17:15 | ||
timo | for example, yeah. you can `git switch -c moarvm-error` to create a new branch of that name | ||
after switching you can then make your commit just like you're used to | 17:16 | ||
grondilu | ok | ||
timo | we can later go back to master and put all the changes from the commit into your working copy, so it will be as if you never committed | ||
grondilu | how do I push to github, though? | 17:17 | |
timo | ok first of all you'll want to use `git push -n ...` for "dry-run" which will show you what it would do but doesn't do it, so you can be sure you got the command right | ||
it should be fine to just `git push origin moarvm-error` | |||
grondilu | so first I try `git push -n origin moarvm-error`? | 17:18 | |
timo | yup | ||
i'd also like to have your exact `rakudo --version` just in case i can't reproduce it on my currently built version | |||
grondilu | seems like the push went well | 17:19 | |
Welcome to Rakudo™ v2025.03-242-ge494d4d80. | |||
Implementing the Raku® Programming Language v6.d. | |||
Built on MoarVM version 2025.03-13-gb405e940e. | |||
stand by for the command that produced the error | 17:20 | ||
timo | ok cool i see a bunch of changes from the commit | ||
grondilu | raku -Ilib -MChess{,::Games} -e 'say .moves>>.LAN for Chess::Games::load slurp' < resources/masters/Morphy.pgn | ||
timo | wonderful, i get the crash | 17:21 | |
grondilu | cool, I hope that'll help | ||
timo | i do have to go AFK for a bit before i can really get started | 17:22 | |
grondilu | no-worry | ||
17:27
[Coke] joined
17:50
eseyman left
18:12
abraxxa-home joined
18:15
PipStuart left
18:18
abraxxa-home left
18:34
abraxxa-home joined,
abraxxa-home left
18:36
abraxxa-home joined
19:14
yeahitsme left
|
|||
timo | grondilu: i think i have a patch for moarvm that fixes the bug you found | 19:30 | |
congrats, that was a well hidden one :D | |||
librasteve | timo ++ | 19:31 | |
timo | can't come up with a short reproducer of the bug off hand | 20:00 | |
20:00
abraxxa-home left
20:32
jpn joined
20:36
jpn left
20:37
jpn joined
21:04
manu_ joined,
manu_ is now known as eseyman
21:12
jpn left
21:22
jpn joined
21:32
Aedil left
22:04
tobs left
22:05
tobs joined
22:08
human-blip left
22:11
human-blip joined
22:12
jpn left
|
|||
wayland | m: 3 + 2 :{ 4 + 5 } | 22:33 | |
camelia | ===SORRY!=== Error while compiling <tmp> You can't adverb :{ 4 + 5 } at <tmp>:1 ------> 3 + 2 :{ 4 + 5 }<HERE><EOL> |
||
wayland | m: 3 + 2 :asdf | 22:39 | |
camelia | Cannot resolve caller infix:<+>(Int:D, Int:D, :asdf); none of these signatures matches: ( --> 0) ($x) (\a, \b) (Real $a, Real $b) (Int:D $a, Int:D $b --> Int:D) (int $a, int $b --> int) (uint $a, uint $b --> u… |
||
wayland | I was hoping to be able to adverb a block, and pass it into the operator as a third parameter. | 22:40 | |
m: 3 + 2 :s{ 4 + 5 } | 22:44 | ||
camelia | Cannot resolve caller infix:<+>(Int:D, Int:D, :s(Block)); none of these signatures matches: ( --> 0) ($x) (\a, \b) (Real $a, Real $b) (Int:D $a, Int:D $b --> Int:D) (int $a, int $b --> int) (uint $a, uint $b -… |
||
wayland | Hmm. Might be able to use less slang than I thought for the block operators. Like, it's not amazing, but it could work. | ||
22:47
Sgeo joined
22:56
wayland left
22:57
jpn joined
23:01
jpn left
|
|||
grondilu | timo: really cool. It's not pushed yet though, is it? | 23:06 |