00:06 melezhik_ joined 00:08 melezhik_ left 00:39 melezhik_ joined 00:41 melezhik_ left 01:07 melezhik_ joined 01:10 melezhik_ left
[Coke] bad module might be "Russian", it's up to 88G virtual 01:46
running t/01-basic.t 01:47
also wondering why it isn't using L10N 01:48
01:48 melezhik_ joined 01:50 melezhik_ left
[Coke] seems to also hang and start chewing memory locally too. 01:51
Geth Blin: 178e61fcbd | (Will Coleda)++ | bin/blin.p6
Avoid testing Russian
01:53
[Coke] only happened to notice because I have htop running on that box and I wasn't afk. :) 01:54
02:09 melezhik_ joined 02:11 melezhik_ left
ugexe That’s one of the AI generated modules from that person who was submitted a bunch 02:28
and ye olde `use lib` in tests 03:01
03:10 melezhik_ joined 03:12 melezhik_ left 04:11 melezhik_ joined 04:13 melezhik_ left 04:50 melezhik_ joined 04:59 melezhik_ left, melezhik_ joined 05:05 melezhik_ left 05:06 melezhik_ joined 05:17 melezhik_ left, melezhik_ joined 05:29 melezhik_ left, melezhik_ joined 05:35 melezhik_ left, melezhik_ joined 05:41 melezhik_ left, melezhik_ joined 05:47 melezhik_ left 06:08 melezhik_ joined 06:13 melezhik_ left, melezhik_ joined 06:15 evalable6 left 06:18 melezhik_ left, melezhik_ joined 06:26 melezhik_ left 06:56 Pixi left 07:01 Pixi joined 07:41 melezhik_ joined 07:47 melezhik_ left, melezhik_ joined
melezhik_ . 07:52
tellable6 2025-11-11T20:47:41Z #raku-dev <ab5tract> melezhik_: I think it would be worth it. Usually when I want to run a blin, it's before a PR merge
melezhik_ I hit a weird bug when running zef on my container 07:53
whatever I try to install ( say `zef install Kind` ) I get "Must specify a non-empty string" as a path error
I tried to grep this message in zef source code and did not find anything 07:54
.tell ab5tract: yeah, this is almost done, will let you know, so you will be able to run brownie against Rakudo installed from PR's commits
tellable6 melezhik_, I'll pass your message to ab5tract
07:56 melezhik_ left, melezhik_ joined
ab5tract melezhik_: let's make sure to use Blin's exclusion list 08:08
tellable6 2025-11-12T07:54:56Z #raku-dev <melezhik_> ab5tract: yeah, this is almost done, will let you know, so you will be able to run brownie against Rakudo installed from PR's commits
ab5tract [Coke]: any particular reason why you are using blin on a paid VM when you can use my (and your) cores with brownie for free? :) 08:09
(my guess is that it's because brownie isn't quite finished, which is of course perfectly fine) 08:17
melezhik_ found. the issue `ZEF_INSTALL_TO=` was set to none 08:22
it'd be cool to reference this var in the error message or at least to give some sort of hint 08:23
it took me while to figure this our
out
08:30 melezhik_ left, melezhik_ joined 08:35 melezhik_ left, melezhik_ joined
melezhik_ ab5tract: compile from PR's commit is ready, now we can test your commit 08:49
pasteboard.co/N36fJOlEzTjt.jpg
I just run 100 modules
Geth ¦ rakudo: ab5tract self-assigned role-constrained variable does not accept derived role defined inline github.com/rakudo/rakudo/issues/5317
melezhik_ if you want to add your agent please result from the latest commit
result -> rebuild 08:52
ab5tract melezhik_: got it. firing up the agent now 08:58
well, technically an agent is already running
let me rebuild and restart
melezhik_ sure 08:59
and by the way when installing rakudo from source code commit, we are free to run agents on ANY arch 09:00
we are not limited to x86_64
09:10 melezhik_ left, melezhik_ joined
melezhik_ ping from agent: secret-agent-60471428, version: 0.0.14, jobs-run-cnt: 2, max-threads: 4 09:10
ab5tract: did you limit to 4 threads now?
use all 4 cores right now anyway - ping from agent: secret-agent-60471428, version: 0.0.14, jobs-run-cnt: 4, max-threads: 4 09:11
ab5tract huh, max should be 7 09:12
wait, no, I see that I set the default to 4 09:13
in the compose file generator
melezhik_ yep, 09:14
ab5tract BRW_AGENT_MAX_THREADS is the envvar, right?
melezhik_ yes 09:15
ab5tract okay somehow the generator isn't even setting that right now. I guess I've been patching it manually
anyway, let's see how this run does and I can fix it later 09:16
melezhik_ yeah, I also run my agent on laptop , in 7 threads 09:18
and btw I added skip list from blin
github.com/melezhik/brownie/blob/m...onfig.raku 09:19
09:33 melezhik_ left 09:35 melezhik_ joined 09:38 melezhik_ left 09:42 melezhik_ joined 09:52 melezhik_ left 10:18 melezhik_ joined
melezhik_ ab5tract: looks like your agent has got wrong Raku env, can you please result agent from the latest commit and run it again? Thanks. I added debug info 10:25
10:30 melezhik_ left
releasable6 Next release in ≈3 days and ≈7 hours. There are no known blockers. Please log your changes in the ChangeLog: github.com/rakudo/rakudo/wiki/ChangeLog-Draft 11:00
12:28 melezhik_ joined 12:30 melezhik_ left
Geth rakudo/main: c1d8805e98 | (Elizabeth Mattijsen)++ | 2 files
RakuAST: don't allow :{ } if it's a block

Addresses github.com/rakudo/rakudo/issues/1559 in RakuAST.
This removes the RakuAST::Block.block-or-hash method, and re-instates that as a "block-or-hash" sub in the Actions (where it should have been in the first place, as this has nothing to do with artificially ... (5 more lines)
12:43
12:45 finanalyst joined
[Coke] Well, not done yet, but it's at 95% (blin) 12:53
brownie isn't proven out, ab5tract 12:54
and trying to get it just right days before a release isn't a good use of my stress. I'll pay the 15-20 bucks, no worries. 12:55
ab5tract Sure man, I was trying to be playful but also to gauge what’s missing for you
Definitely not worth any stress 12:56
[Coke] Perhaps I should make a cup of caffeine before trying to read irc. :) 12:57
ab5tract :) 12:58
13:15 melezhik_ joined
melezhik_ . 13:17
13:22 melezhik_ left
[Coke] ⏳ 2343 out of 2385 modules processed (98.23%) 13:35
13:41 finanalyst left 13:44 melezhik joined
melezhik ab5tract: can you please update agent from the last commit and run it? Thanks . I try to debug Raku env related issues 13:46
[Coke] opens github.com/raku-multilingual/raku-...n/issues/1 13:48
Geth rakudo/main: dd78e653d5 | (Elizabeth Mattijsen)++ | src/Raku/Actions.nqp
RakuAST: don't allow &( ) contextualizer

Before, it would treat it as $( ), which is wrong.
13:51
rakudo/main: 0121b33861 | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp
RakuAST: recognized =numtable as a type of =table

Also, rename $*IN_TABLE to the more appropriate $*IN-TABLE.
Fixes #6015
14:14
lizmat [Coke]: that concludes my work on core before the next release 14:18
ugexe melezhik: if you want more info on a *rakudo* error you can use --ll-exception 14:27
m: say "".IO
camelia Must specify a non-empty string as a path
in block <unit> at <tmp> line 1
ugexe i mean i guess that works for any error, but none-the-less you are talking about a rakudo error 14:28
[Coke] Blin: Service runtime: 12h 1min 29.999s Memory peak: 49.1G 14:29
melezhik Ok, can zef convert such an error into more human readable format, by adding helpful message , hint? 14:32
ugexe it is human readable. rakudo explicitly tries to make its error human readable 14:33
m: sub MAIN(IO() $foo where *.chars) { }; @*ARGS = "" 14:36
camelia Must specify a non-empty string as a path
in block <unit> at <tmp> line 1
melezhik For example if zef check the value of ZEF_INSTALL_TO env var and then warn something “it should none empty if set” .., and yes sorry imho I don’t find the error helpful ( human readable in that sense ) 14:37
ugexe that doesn't really fit with the design of MAIN validation 14:38
m: BEGIN %*ENV<ZEF_INSTALL_TO> = ""; sub MAIN(IO() $foo = %*ENV<ZEF_INSTALL_TO>) { }() 14:39
camelia Must specify a non-empty string as a path
in sub MAIN at <tmp> line 1
in block <unit> at <tmp> line 1
ugexe pre-validating the data before using it as values in main parameters is redundant 14:40
imo MAIN should mention more information about the error, something like `Must specify a non-empty string as a path for argument --foo` 14:41
melezhik “5:39 PM <ugexe> m: BEGIN %*ENV<ZEF_INSTALL_TO> = ""; sub MAIN(IO() $foo = %*ENV<ZEF_INSTALL_TO>) { }()” this exactly what I am saying what if ZEF_INSTALL_TO gets sanitized / verified before passing to main ?
ugexe i dont want to sanitize/verify all of those values. that is why i use MAIN with types in the first place
if the error coming out of main isn't satisfactory then there is probably improvements to be made in rakudo over its MAIN error messages 14:42
timo does "will complain" help here?
or is this more about changing rakudo's default / builtin behaviour?
ugexe m: sub MAIN(IO() $foo) {}; @*ARGS = "" 14:43
camelia Must specify a non-empty string as a path
in sub MAIN at <tmp> line 1
in block <unit> at <tmp> line 1
ugexe its a rakudo issue
timo m: my IO() $foo = ""; 14:44
camelia Must specify a non-empty string as a path
in block <unit> at <tmp> line 1
melezhik “5:41 PM <ugexe> imo MAIN should mention more information about the error, something like `Must specify a non-empty string as a path for argument --foo`” from end user point of view it literally took me halve an hour to realized it was the incorrect value of env var, nothing in the message said that, stack trace would be helpful ad well but there were no stack trace , error message also is not greppable in zef source
code, so no hints nor clues
ugexe i told you to use --ll-exception for a trace
[Coke] ] [Cro::FCGI – Fail, Bisected: 6a9e284 14:46
except that bisect is me merging the release branch last time.
so, clean blin run?
gist.github.com/coke/0a5f70703ba4f...fd8de8332d 14:47
ugexe m: sub MAIN(Int $foo) {}; @*ARGS = "" 14:57
camelia ( no output )
ugexe m: sub MAIN(Int $foo) { say $foo.raku }; @*ARGS = ""
camelia IntStr.new(0, "")
ugexe that doesn't seem right either
timo interesting
lizmat my %*SUB-MAIN-OPTS = :coerce-allomorphs-to(Int) # perhaps ? 15:00
[Coke] whoops, not the release branch, but a branch about releng stuff only.
ugexe i dont see why any option should be needed
lizmat m: dd Int ~~ IntStr
camelia Bool::False
lizmat m: dd IntStr ~~ Int
camelia Bool::True
lizmat m: dd Int.ACCEPTS(IntStr)
camelia Bool::True
lizmat that's what the binder does, and since it is acceptable, you wind up with an IntStr in $foo 15:01
ugexe "" is not an Int, that is wrong
lizmat aah... ok, misread
na, I think that's right 15:02
m: dd "".Int
camelia 0
ugexe that also seems wrong 15:03
like crazy wrong
lizmat m: dd infix:<+>("") 15:04
camelia 0
15:04 melezhik_ joined
lizmat m: dd prefix:<+>("") 15:04
camelia 0
lizmat m: dd +"" 15:05
camelia 0
ugexe ouch, that is really a bad look for us
Geth nqp/main: 335b29197c | (Will Coleda)++ | tools/templates/MOAR_REVISION
Grab last MoarVM commits before release
15:06
ugexe m: dd " ".Int 15:07
camelia 0
ugexe insane
Geth rakudo/main: 7106759ed6 | (Will Coleda)++ | tools/templates/NQP_REVISION
Pull in last NQP/MoarVM pre-release
15:08
[Coke] c: 7106759ed 1.put
committable6 [Coke], ¦7106759: «Cannot find this revision (did you mean “7e106c5”?)»
[Coke] lizmat, I just bumped moarvm/nqp
15:09 melezhik_ left
[Coke] We are probably fine with the one blin run, but I am going to kick off another with those few minor changes. 15:15
This is an informational run. A problem occurred reaching Could not get the latest source version for repository Raku/nqp hosted on https, which prevents Azure Pipelines from determining if the pipeline should run. If you expected this pipeline to run, please try again later. Could not get the latest source version for repository Raku/nqp hosted on https error: //github.com/ using ref 15:18
335b29197c3112f618d54aac4a1ba64030049e6c. GitHub reported the error, "Not Found"
patrickb ^^ 15:19
15:20 melezhik_ joined 15:24 melezhik_ left 15:25 melezhik_ joined
melezhik_ . 15:27
nick - I asked not how to debug the issue, but how to improve the error message , which may spare other who encounter the error for the first time from ( time consuming ) debugging 15:30
I this could be improved on zef side, that'd be awesome 15:31
ugexe it would be awesome to fix it in rakudo 15:33
fixing it in zef is working around an issue, that isn't really awesome thats unfortunate 15:34
ab5tract uff, that MAIN code is not the easiest code path to perform surgery on
otoh, maybe it would could be reasonably improved by migrating logic to RakuAST 15:35
timo is there any guidance on whether coercer methods are meant to throw exceptions or return Failure objects? 15:36
ab5tract timo: good question. now you have me wondering whether core is even aligned to one or the other 15:37
timo m: say "whoa".Int.raku 15:38
camelia Failure.new(exception => X::Str::Numeric.new(source => "whoa", pos => 0, reason => "base-10 number must begin with valid digits or '.'"), backtrace => Backtrace.new)
timo m: say "whoa".Num.raku; say "whoa".Complex.raku; say "test".Hash.raku
camelia Failure.new(exception => X::Str::Numeric.new(source => "whoa", pos => 0, reason => "base-10 number must begin with valid digits or '.'"), backtrace => Backtrace.new)
Odd number of elements found where hash initializer expected:
Only saw: "test"
timo so the .Hash method does die 15:39
ab5tract feels like failures are the "right" choice 15:43
but that's just a gut feeling on my part
ugexe for this specific instance in zef i think we can just change `%*ENV<ZEF_INSTALL_TO> // $CONFIG<DefaultCUR>` to `%*ENV<ZEF_INSTALL_TO> // $CONFIG<DefaultCUR>` 15:45
er, to `%*ENV<ZEF_INSTALL_TO> || $CONFIG<DefaultCUR>` 15:46
there would be no error, but it'd do what you probably expect 15:47
ab5tract ugexe: I was picturing that this was the case 15:48
I think this might be the more correct way of handling environment variables 15:49
as setting a env var to "null" is relatively common practice 15:50
timo m: sub MAIN(Int() $foo) { }; MAIN("test")
camelia Usage:
<tmp> <foo>
timo ah, right 15:51
m: sub MAIN(Int() $foo) { }; @*ARGS = "test"
camelia ( no output )
timo m: sub MAIN(Int() $foo) { say $foo.raku }; @*ARGS = "test"
camelia Failure.new(exception => X::Str::Numeric.new(source => "test", pos => 0, reason => "base-10 number must begin with valid digits or '.'"), backtrace => Backtrace.new)
timo hm.
ab5tract oh, interesting 15:54
so maybe the answer is to fatalize? 15:55
timo so, presumably, you'd use the value soon, so the failure would be thrown and you will get a traceback into the sub that was chosen and the place where the value is attempted to be used
m: multi sub MAIN(Int() $foo) { say "foo was int-coerced"; say $foo.raku }; multi sub MAIN($bar) { say "argument matched nothing" }; @*ARGS = "test" 15:56
camelia Ambiguous call to 'MAIN(Str)'; these signatures all match:
(Int(Any) $foo) from <tmp> line 1
($bar) from <tmp> line 1
in block <unit> at <tmp> line 1
ugexe yeah that isn't great. like if I were reading docs for a language and saw "If you use coercing make sure you use the parameter asap to explode any failure" it probably would make me think twice about using it at all 15:58
code gets moved around after the fact, often years later and by other people
16:03 melezhik_ left, melezhik_ joined 16:10 melezhik_ left, melezhik_ joined
ab5tract maybe death is indeed preferable to this 16:13
timo i seem to be holding the "handle" op wrong ... 16:14
ab5tract the handles trait-y thing?
timo nah, QAST::Op.new( :op('handle'), [...] ) is how we handle exceptions in qast land 16:15
i'm trying to catch the "die" from IO::Path's constructor 16:16
ab5tract ugexe: I expect that any overall software design will evolve more robustly (edge cases accounted for in multi sigs, type-dependent code paths, etc) if coercion fatals are fatal 16:17
ugexe agreed 16:18
ab5tract maybe it's worth a problem solving ticket?
"fatals are fatal" <-- a casualty of misspeech
lizmat m: dd "".Int # I think that logic falls out of "".Bool (which is False), and False.Int being 0 ugexe ab5tract 16:22
camelia 0
lizmat m: dd " ".Int # I would expect to fail
camelia 0
lizmat he 16:23
m: dd " ".Bool
camelia Bool::True
ab5tract oh wow
lizmat ab5tract what wow?
timo nonempty strings truify, yeah
ab5tract real False but True in the codebase
usually .Int.Bool on an object will match .Bool 16:24
timo for containers like arrays or hashes maybe 16:25
ab5tract so this one was worthy of a little mouth gaping :)
timo: for most things that coerce to Int, I would expect 16:26
I'm not saying its impossible or wrong, just an unusual beast
timo m: my $specimen = 0.123; say $specimen.Bool; say $specimen.Int.Bool # :)
camelia True
False
ab5tract especiallybah
bah! great point :) 16:27
melezhik_ ab5tract: pinging you on upgrade of agent )) thanks 🙏
timo oh there's a more obvious place to put a try/catch that will have the great added benefit of not increasing the code size of all methods that take a coercive parameter 16:28
lizmat github.com/rakudo/rakudo/blob/main...#L820-L821 # the place where " ".Int becomes 0 16:31
I guess we also need to check for the number of characters parsed
16:32 melezhik_ left
ab5tract timo: are you moving towards having all coercions be failures? 16:34
*being
ugh. all coercion failures being Failures
timo for now i'm trying to catch exceptions from coercer method calls and turning them into Failure to see what it does
ab5tract because I think ugexe made a really good point that it should really be the opposite 16:35
lizmat fwiw, I think "".Int giving 0 is correct (the "".Bool.Int argument) 16:36
however, " ".Int being 0 is a bug imo
ugexe i dont find the "".Bool.Int argument satisfactory 16:39
m: say "123".Bool.Int
camelia 1
ugexe you wouldnt expect "123".Int to return 1
if someone wants to turn a bool into a int that is one thing, but using the bool value of a string to determine the int is another 16:40
timo so what i've been trying so far was to put a CATCH and creation of a Failure object in coerce-by-type-method in src/vm/moar/dispatchers.nqp line 4430, but the last attempt was wrong and resulted in an NQPMu making it to the next check and causing !invalid_coercion to be called, which wasn't what i wanted 16:55
i have to go rest up, if anyone else wants to pick this up ... 16:56
17:09 librasteve_ joined 17:52 melezhik_ joined 18:12 melezhik_ left 18:23 melezhik_ joined 18:28 melezhik_ left 18:40 melezhik_ joined
ugexe melezhik_: github.com/ugexe/zef/pull/595 while i disagreed about improving the error message, we can ultimately avoid the error message altogether 18:56
melezhik_ ugexe: ++ 19:08
[Coke] Folks, please consider any cleanups to github.com/rakudo/rakudo/wiki/ChangeLog-Draft 19:47
releasable6: next
releasable6 [Coke], Next release in ≈2 days and ≈23 hours. There are no known blockers. 31 out of 34 commits logged
[Coke], Details: gist.github.com/b6917d1c3d804209c4...abfb10505c
lizmat [Coke]: am editing now
[Coke] ... I just snuck in an edit, sorry 19:48
lizmat grrrrr :-)
[Coke] feel free to throw mine away, I can always readd
lizmat it did not give me that option 19:50
but no worries, I'm done :-) 19:51
[Coke] releasable6: next 19:53
releasable6 [Coke], Next release in ≈2 days and ≈23 hours. There are no known blockers. 32 out of 34 commits logged
[Coke], Details: gist.github.com/e5a8f6982cf339c3ff...0e5d3eab08
[Coke] releasable6: next 19:54
releasable6 [Coke], Next release in ≈2 days and ≈23 hours. There are no known blockers. 32 out of 34 commits logged
[Coke], Details: gist.github.com/138d70bff6fcde4b43...608b4d3bac
[Coke] I think those last 2 are fixed now (needed each to be its own [] wrapper 19:55
Thank you, those edits made them much more readable
I've just been using the short messages directly a lot, because I'm lazy
lizmat no worries :-) 19:56
m: my $a ≔ 42 # using 2254 COLON EQUALS ≔ instead of := 19:57
camelia ===SORRY!=== Error while compiling <tmp>
Confused
at <tmp>:1
------> my $a<HERE> ≔ 42 # using 2254 COLON EQUALS ≔
expecting any of:
infix
infix stopper
statement end
statement modifier
lizmat why are we not supporting that ?
19:59 melezhik_ left 20:29 melezhik_ joined 20:33 melezhik_ left
[Coke] never noticed this before, one of the blin tests is prompted for a username for github.com 21:45
one of these, I'm guessing, but I've ruled out a few already. gist.github.com/coke/42299baadcd29...f7b25a8947 21:50
ah, TXN::Remarshal 21:52
Looks like it's not showing on raku.land, and the github repo in the META6.json is gone 21:53
22:07 finanalyst joined
Geth rakudo: patrickbkr++ created pull request #6016:
Install improvements
22:41
patrickb Coke: I can't make sense of the error you posted. I think I might be missing context. Can you provide a link where I can see the error? 22:46
[Coke] it was an email from azdo about the pipeline 22:49
patrickb that'd becnice 22:50
22:54 melezhik left 23:11 finanalyst left
timo lizmat: thanks for checking out my JSON::Fast PR. I think it's fine to have $startpos as a parameter because it's only for the error reporting functions, it doesn't go through a bunch of parser functions 23:14
japhb m: multi f(Int() $bar) { say "int"; dd; dd $bar }; multi f(Str() $bar) { say "str"; dd; dd $bar }; f('abc') 23:58
camelia str
sub f(Str(Any) $bar)
"abc"
japhb But ...
m: multi f(Int() $bar) { say "int"; dd; dd $bar }; f('abc')
camelia int
sub f(Int(Any) $bar)
Failure.new(exception => X::Str::Numeric.new(source => "abc", pos => 0, reason => "base-10 number must begin with valid digits or '.'"))
japhb That doesn't seem right. Why is the bind generating a coerce Failure but the routine is still executing? 23:59