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') |