ugexe dev.azure.com/Rakudo/rakudo/_build...f7aca1e5fb 00:10
we are barely running and of the spectests. for example nothing from S16-* is shown
s/and/any/
lizmat Files=122, Tests=23900 00:12
ugexe at $work we have a CI test that fails of the number of successful tests is reduced by some large percentage
lizmat should be: Files=1359, Tests=119769 00:13
I wonder whether the fudging messes up ?
ugexe dev.azure.com/Rakudo/rakudo/_build...b&l=47 00:14
echo "making spectest.data smaller" 00:15
cp t/spec/spectest.data t/spec/spectest.data.backup
head -n 150 t/spec/spectest.data.backup > t/spec/spectest.data
lizmat wtf ?
timo haha, that's a fun thing to leave in there 00:16
presumably a left-over from redeveloping the CI
so that it finishes faster while you're still making tens of changes per day
lizmat heh
sleep&
Geth rakudo/ugexe-patch-2: a47c630618 | (Nick Logan)++ (committed using GitHub Web editor) | azure-pipelines.yml
Run full spectest in CI
00:21
rakudo/main: ebecbeafa0 | (Nick Logan)++ (committed using GitHub Web editor) | azure-pipelines.yml
Run full spectest in CI (#5747)
00:51
rakudo/ugexe/deprecate-multi-file-operations: 4 commits pushed by (Nick Logan)++, ab5tract++ 00:53
timo ugexe++ well spotted 01:04
01:16 finanalyst left 01:44 guifa joined
SmokeMachine I wasnā€™t able to continue trying to fix the cromponent roblem todayā€¦ :( 01:52
timo last code block of docs.raku.org/language/modules#is_export shows a Rainbow bug again i think. the `sub foo() is export(:foo :s2 :net) {}` line has :s2 highlighted as REGEX_DELIMITER and the stuff after that, including the following line, as REGEX_LITERAL and REGEX_SPECIAL, and then somehow the end of the code block is interpreted as REGEX_DELIMITER, STRING, and REGEX_DELIMITER 01:58
ab5tract SmokeMachine: me either :( 02:46
guifa Ugh, looks like I'll really need to make that two exta args for handling multicast 05:36
source-specific host, and interface (though I was loathe to do that, there's no way to specify an interface with a hostname, only for IPv6 literals) 05:37
default will be 0 which is (afaict) perfectly cromulent on all systems except Mac .... my dev system :)
06:05 guifa left 06:42 samebchase joined
Geth rakudo/main: e7f9223c59 | (Christian BartolomƤus)++ (committed using GitHub Web editor) | src/core.c/stubs.rakumod
[JVM] Add extra check for GLOBAL being null (#5710)

This fixes a NullPointerException on the JVM backend for code like
   use v6.c.UNKNOWN
That code does not blow up on MoarVM, which handles calling "WHO" on a null object gracefully.
07:56
08:52 sena_kun joined 09:05 Xliff left
patrickb ugexe, timo: The CI spec test mess up is on me. I was the one trying to take the PR from in dev to prod. Sorry for that... 09:59
timo I'm not angry or anything 11:24
i'm still very happy about the improvements of the CI stuff
do you think it's worth trying to split the spectest.data into two, three, or four parts / slices / partitions and run multiple jobs in parallel on azure? the test results should be merged together by the "publish test results" task i imagine, and it would possibly get us from commit to spec test results quicker? even if it will probably make newer commits have to wait a little longer for the 11:27
simultaneous job limit to allow more to happen
lizmat doesn't it already run with TEST_JOBS=number of CPUS - 1 ? 11:28
timo yeah but the VMs our stuff runs in doesn't have many CPUs ... not sure if it has more than one
patrickb: can i consider the report of the Rainbow bug from ~12 hours ago "delivered" / "received"? 12:02
patrickb did not see yet
timo here in irc
> "last code block of docs.raku.org/language/modules#is_export shows [...]" 12:03
patrickb timo: Got it. Thanks! (I created todo.sr.ht/~patrickb/Rainbow/5) 12:07
timo ladies and gentlemen ... this is rainbow number five! 12:08
lizmat
.oO( next to cloud #9 )
and yet another Rakudo Weekly News hits the Net: rakudoweekly.blog/2024/12/30/2024-...ate-rings/ 12:38
14:21 finanalyst joined
timo i think we have multiple cases in the docs where we have both four space indentation and also =code mixed together, which the rendering makes into a block nested inside a block, which we probably don't want in almost all cases? 15:04
do we have like a trivial way to run a .grep or .map over all the RakuDoc that makes up the docs.raku.org data? 15:05
finanalyst timo: is this an issue with the current renderer, or the new Rakuast one? 15:07
care needs to be taken as the new AST parser is deceptively neutral about leading whitespace 15:09
if the Rakudoc source has space and / or tab in the leading white space, the AST parser includes them as is 15:10
so its possible to get problems when both are used to imply a code block. Is this the issue you mean? 15:11
.tell leont I solved my module inside prove6 problem. Turns out it was a path spelling error on my part. Everything fine now 15:12
tellable6 finanalyst, I'll pass your message to leont
timo that sounds kind of like what i mean yeah 15:15
just the other day i pushed a commit that fixes such a situation
maybe the patch wasn't correct and instead the rakudoc parser wants a change instead?
docs.raku.org/language/regexes#Alternation:_|| don't have a screenshot of what it was before 15:17
i think a search for \s+ followed by =code should find most examples of what i mean though 15:18
no need to go at the rakudoc data structures necessarily
finanalyst timo: it is not the rakudoc parser but the Rakudo parser. I asked lizmat about this and the problem is there is a fierce difference of opinion about whether or not and how much a tab is worth in spaces 15:31
so the rakudo parser does not take a stance. But if your editor gives you four spaces to a tab, then you may not see it. 15:32
Also leading whitespace in rakudoc is important, and this issue is mentioned. see raku.github.io/rakudoc for a much fuller explanation of indent 15:33
but the thing you are suggesting is for there to be a check of all RakuDoc sources to find errors 15:34
Geth roast: 0905a199d0 | (Christian BartolomƤus)++ | integration/error-reporting.t
[JVM] Unfudge passing test

Fixed with github.com/rakudo/rakudo/commit/e7f9223c59.
16:30
18:08 finanalyst left 18:09 Altai-man joined 18:11 bartolin left 18:12 bartolin joined, sena_kun left, [Tux] left, rypervenche left 18:13 rypervenche joined 18:26 [Tux] joined
SmokeMachine I was simplitying the code to try to figure out the problem and got a different error, have anyone seen this one? 19:29
www.irccloud.com/pastebin/eOcTo3Fc/
timo looks like you're leaking some object that has a condition variable in it that goes into a serialization somewhere 19:40
SmokeMachine it seems to be related to Cro::WebApp::Template::ASTBuilder 19:43
timo probably a "monitor" class?
SmokeMachine not sure: github.com/croservices/cro-webapp/...rakumod#L3 19:45
timo a Promise might have a CondVar in it? 19:47
SmokeMachine I'll try to search for it... 19:51
I created a new branch whith the minimal code to replicate it...
20:00 Altai-man left 20:03 sena_kun joined
SmokeMachine with this github.com/FCO/Cromponent/blob/min...nt.rakumod and this github.com/FCO/Cromponent/blob/min...t.rakumod, if I run: `raku -Ilib -Ibin/lib -MSimpleTest -e'say SimpleTest.new.Str'` I get: usercontent.irccloud-cdn.com/file/.../image.png 20:08
and if I comment this line (github.com/FCO/Cromponent/blob/min...kumod#L19) it "works": usercontent.irccloud-cdn.com/file/.../image.png 20:09
And if I add a cal to `$ast.compile`, it gives the original error... www.irccloud.com/pastebin/Ugluln8p/diff.diff 20:15
usercontent.irccloud-cdn.com/file/.../image.png 20:16
the odd thing is that without the `$ast.compile` it returns from the function,prints the `%compiled` and just then dies... 20:19
I suppose that dies when the role ends being composed...
just to point out that if I remove everything related to Cro templates, it works correctly... www.irccloud.com/pastebin/WKfuAYTU/diff.diff 20:21
usercontent.irccloud-cdn.com/file/.../image.png 20:22
timo ah, the block in the map you're returning is closing over these lexicals 20:36
try moving that outside, or all the cro template stuff into its own block 20:37
it could be the condvar comes from the template repository 20:39
... hmm ... class Cro::Template::Repository is impossible-to-serialize { ... } 20:44
21:20 guifa joined
SmokeMachine timo: but it is inside its own block (the sub compile-cromponent, no?) 21:21
timo but that's the outer of the sub that you're returning 21:24
closures close over all their outers, that's how that captures these variables 21:27
SmokeMachine do you mean something like this? www.irccloud.com/pastebin/deeaFhZ0/ 21:29
timo there the repository is still being closed over by the renderer sub 21:31
SmokeMachine sorry, I don't get it... :( 22:07
timo try moving the `sub (|) { return 42 }` all the way to the top of the code and make sure it doesn't have any Very Special things in the same block / scope it's in 22:08
SmokeMachine but on the real code that will not exist... it should return the return of $ast.compile... 22:10
timo right, then make something silly like 22:11
sub make-returner($value) { return sub (|) { $value } }
that would then go all the way outside
SmokeMachine but the $ast.compile already returns a func... :( 22:13
timo oh, ok 22:15
but does doing that make the error about CondVar being serialized go away though?
SmokeMachine you mean something like this? this still gives the same error www.irccloud.com/pastebin/EUESSTaT/a.raku 22:17
this too: www.irccloud.com/pastebin/gPSG2CCe/a.raku 22:18
timo ok, if i want to run your code, i just need to zef install Cro::WebApp::Template ? 22:21
SmokeMachine yes, I think so...
timo Missing or wrong version of dependency 'EVAL_0' (from '/var/home/timo/raku/ecosystem/bughunt/cromponent/bin/lib/SimpleTest.rakumod (SimpleTest)') 22:26
:D
SmokeMachine šŸ‘
timo right now i have the two files from your message ~2.5h ago 22:27
SmokeMachine would you like if I commit my current files?
timo i'm not sure. the error i'm getting, that's not the error you were getting, right? 22:29
SmokeMachine that's one of them... 22:30
I pushed the current one... 22:31
running : `raku -I. -Ibin/lib -MSimpleTest -e'say SimpleTest.new.Str'` gives this: 22:32
www.irccloud.com/pastebin/LtERpdHz/
timo ok good i now get the "cannot invoke" error 22:33
SmokeMachine the intention here is to have a role that when added to a Class it will run the method RENDER from that class, compile it as a cro template (that returns a sub) and add that sub as a method to the class. That method receives the object it self as the only parameter and it is used as the data on the template... and I'm adding that with .^add_method to that exist inside the class itself and not have to compile it every call 22:38
timo ok, so the explosion happens in a spot where we're trying to call &DYNAMIC with '$*TEMPLATE-REPOSITORY', that makes the "can't invoke an object belonging to blah blah" 22:40
the attempt to get &DYNAMIC returns a null 22:41
SmokeMachine how did you find it?
timo the magic of rr 22:42
SmokeMachine rr? 22:43
timo record and reply, from the mozilla project
replay*
i recorded the execution that exploded with "rr record raku -I blabla", then i grabbed the right PID and event number before the explosion with "rr replay -a -M" and jumped into a gdb nearby with "rr replay -f the-pid -g the-event" 22:44
then i set up a breakpoint in MVM_exception_throw_adhoc and let it run
from there i could just get the currently-being-executed bytecode with MVM_dump_bytecode(tc) and the values in the registers in question from tc->cur_frame->work[3].o and ->work[4].o 22:45
one of them was a Str object, so i took the contents with MVM_repr_get_str(tc, $bla) and MVM_string_utf8_encode_C_string(tc, $blubb)
the other was just a VMNull
SmokeMachine great, thank you very much! 22:46
timo you need linux for rr :| 22:47
SmokeMachine I'll try to findout that DYNAMIC
22:48 finanalyst joined
timo i'm not sure why it's not able to find the TEMPLATE-REPOSITORY dynamic variable. i thought it would first try to getdynlex and only if that doesn't work even try to call DYNAMIC 22:51
22:53 sena_kun left
timo gist.github.com/timo/3972f33fe9683...c317f0627c this is a full backtrace 22:54
guifa SWEET
finally have it working
multicast via syscal
timo it could very well be that one of the frames in the middle between compile-cromponent and the corresponding statement_prefix:sym<BEGIN> is acting as a wall through which no dynamic variables can go 22:55
guifa method bind-udp(IO::Socket::Async:U: Str() $host, Int() $port where Port-Number, :$broadcast, :$multicast, Int() :$interface = 0, Str() :$only-from, :$loop-back, :$enc = 'utf-8', :$scheduler = $*SCHEDULER) { ... } is the final signature in Raku 22:56
SmokeMachine oh! it's trying to get $*TEMPLATE-REPOSITORY
timo i'm also not 100% sure it's necessary to have a BEGIN in between for the case when you're already at begin time because you're running code in role composition, but that might just not be possible to skip without changes to Cro::WebApp::Template? 22:57
guifa: that's cool :)
congrats on the breakthrough 22:58
guifa I still don't like that some of the options are ... less relevant when combined
maybe it would be opportune on the Raku side to have bind-udp-multicast and bind-udp-broadcast 22:59
timo could having a bunch of multi candidates be an option?
guifa yeah 23:00
multi method bind-udp( .... :$broadcast);
multi method bind-udp( ... , :$multicast!, Str() :$only-from, :$loop-back, :$interface ) 23:01
actually could make the broadcast one separate too. it doesn't require anything handled diffferently on the backend really, but its IP should always be 255.255.255.255 23:05
would also automagically take care of the :broadcast, :multicast by tossing a no matching signature error 23:07
lizmat timo: re i thought it would first try to getdynlex and only if that doesn't work even try to call DYNAMIC 23:46
no, that's incorrect
$*FOO is codegenned as &DYNAMIC('$*FOO')