|
00:10
soverysour joined,
soverysour left,
soverysour joined
00:14
lichtkind__ left
00:17
eseyman left
00:18
eseyman joined
00:31
soverysour left
00:48
gabiruh left,
gabiruh joined
00:58
soverysour joined,
soverysour left,
soverysour joined
|
|||
| ugexe | m: my $p = Promise.new; my $then-p = $p.then(sub ($r) { die "error" }); try { $p.keep(42) }; say $!; say "Original: {$p.status}"; say "Then: {$then-p.status}"; | 00:58 | |
| evalable6 | (Any) Original: Kept Then: Planned |
||
| ugexe | m: my $p = Promise.new; my $then-p = $p.then(sub ($r) { die "error" }, :synchronous); try { $p.keep(42) }; say $!; say "Original: {$p.status}"; say "Then: {$then-p.status}"; | 00:59 | |
| evalable6 | Too few positionals passed; expected 1 argument but got 0 in sub at /tmp/hR8tMb0Ugj line 1 in block <unit> at /tmp/hR8tMb0Ugj line 1 Original: Kept Then: Planned |
||
| ugexe | using :synchronous causes that error here: github.com/rakudo/rakudo/blob/f1c1...kumod#L184 because it isn't passing | 01:01 | |
| but then other issue is it says Then: Planned which means it will never transition out of that state | 01:02 | ||
| and another one: | 01:03 | ||
| m: my $p = Promise.kept(42); my $result = $p.then({ .result + 1 }, :synchronous); say $result.^name; say $result ~~ Promise; | |||
| evalable6 | Int False |
||
| ugexe | .then(:synchronous) on a already kept promise returns raw value instead of Promise | 01:04 | |
| m: my $p = Promise.new; my $result = $p.then({ .result + 1 }, :synchronous); say $result.^name; say $result ~~ Promise; # when using a promise that isnt already kept | 01:05 | ||
| evalable6 | Promise True |
||
|
01:07
soverysour left
|
|||
| ugexe | it seems like .andthen(:synchronous) and .orelse(:synchronous) have teh same issues | 01:08 | |
|
01:29
topnep left
01:30
topnep joined
01:54
soverysour joined
02:00
kylese left,
hulk joined
02:12
soverysour left
02:15
hulk left,
kylese joined
02:29
soverysour joined,
soverysour left,
soverysour joined
02:33
soverysour left
|
|||
| Voldenet | ugexe: I remember there's PR for improving these methods github.com/rakudo/rakudo/pull/5917 (though I don't think that PLANNED-THEN was changed anyhow there) | 02:45 | |
| in fact, .then(:synchronous) is not documented either ā I'm not sure what's it for | 02:46 | ||
| .then and similar are kinda forgotten api, I've thought of this improvement too - github.com/rakudo/rakudo/issues/5919 | 02:49 | ||
| either way, .then(ā¦, :synchronous) seems like a very weird way to say `then(ā¦).&await` | 02:54 | ||
| but in a way that lets the caller do `if we already have the result, we don't await` | 02:56 | ||
| nobody left docs for it so I have no idea what did it originally do | 02:58 | ||
| apogee_ntv | raku.land/zef:apogee/Template::Jinja2 Going to bed now. :D | 03:20 | |
|
03:34
topnep left
03:36
topnep joined
03:41
annamalai joined
|
|||
| ugexe | github.com/ugexe/rakudo/commit/6fe...a1486bc764 | 03:46 | |
| patrickb dunno if those bugs are interesting to you or not | |||
| maybe :synchronous wasn't meant to be a public api | 03:47 | ||
|
04:16
Aedil joined
|
|||
| Voldenet | ah, the whole api is the result of deadlocking internals, I'd consider separate method, SYNC-THEN maybe | 05:25 | |
| patrickb | I added :synchronous out of the need to solve a race condition in Lock::Async. I think without a good external use case it should stay an internal feature. | ||
| Voldenet | so .andthen and .orelse don't really need :synchronous probably | 05:27 | |
| and this PR can be simplified github.com/rakudo/rakudo/pull/5917 | 05:29 | ||
| (it adds auto-awaiting to `andthen/orelse` -> `if-kept/if-broken`) | 05:31 | ||
|
05:33
soverysour joined,
soverysour left,
soverysour joined
|
|||
| patrickb | m: my $p = Promise.new; my $then-p = $p.then(sub ($r) { die "error" }); try { $p.keep(42) }; say $!; say "Original: {$p.status}"; say "Then: {$then-p.status}"; | 05:36 | |
| evalable6 | (Any) Original: Kept Then: Planned |
||
| patrickb | why doesn't the then promise trigger? | ||
| is that expected? | 05:37 | ||
|
05:37
soverysour left
|
|||
| Voldenet | I think promises are not expected to evaluate in any specific order or on a specific thread | 05:41 | |
| m: my $p = Promise.new; my $then-p = $p.then(sub ($r) { say $*THREAD; die "error" }); try { $p.keep(42) }; say $!; say "Original: {$p.status}"; say $*THREAD; say "Then: {$then-p.status}";' | |||
| evalable6 | (exit code 1) ===SORRY!=== Error while compilin⦠| ||
| Voldenet, Full output: gist.github.com/b6f97b7bb38e601505...928865a897 | |||
| Voldenet | m: my $p = Promise.new; my $then-p = $p.then(sub ($r) { say $*THREAD; die "error" }); try { $p.keep(42) }; say $!; say "Original: {$p.status}"; say $*THREAD; say "Then: {$then-p.status}"; | ||
| evalable6 | (Any) Original: Kept Thread #4 (GeneralWorker) Immortal Thread #1 (Initial thread) Then: Planned |
||
| Voldenet | expecting anything else will introduce subtle bugs | 05:42 | |
| I wouldn't even expect promise being kept synchronously in this case ā it seems to be, but it just happens to be implemented that way | 05:49 | ||
| so the result could be any of: `(Any)ā¤Original: Plannedā¤Then: Plannedā¤` `(Any)ā¤Original: Keptā¤Then: Plannedā¤` `(Any)ā¤Original: Keptā¤Then: Brokenā¤` | 05:52 | ||
| oh, and there's no need to `try { $p.keep(42) }` - it should never normally fail | 05:55 | ||
| C# has various options in TaskCreationOptions that can influence where, when and in what order the task will be executed ā in the past synchronous execution could lead to deadlocks, so RunContinuationsAsynchronously was added | 06:03 | ||
| but currently it's hard to force .net core to execute such code on the same thread | 06:05 | ||
|
06:10
soverysour joined,
soverysour left,
soverysour joined
|
|||
| Voldenet | so I'm suspecting that every sane programmer will reach the same conclusion eventually ā it's hard to prevent deadlocks when anything is done synchronously in Promises | 06:11 | |
|
06:15
soverysour left
06:19
soverysour joined,
soverysour left,
soverysour joined
06:26
soverysour left
06:31
annamalai left
|
|||
| patrickb | ah, the reason the `then` isn't run is because the program ends before it has a chance to do so. So when the program would continue running, the `then` would eventually be executed? | 06:34 | |
| I can dig into the synchronous thing and ponder it a bit. But I'd be grateful for any feedback if that functionality is considered to have any value apart from that internal usage I initially added it for. | 06:36 | ||
|
06:42
abraxxa joined
06:47
abraxxa left
06:48
abraxxa joined
06:52
sibl joined
|
|||
| Voldenet | oh, I forgot | 07:03 | |
| m: my $*SCHEDULER = CurrentThreadScheduler; my $p = Promise.new; my $then-p = $p.then(sub ($r) { die "error" }); try { $p.keep(42) }; say $!; say "Original: {$p.status}"; say "Then: {$then-p.status}"; # you can enforce this | |||
| evalable6 | (Any) Original: Kept Then: Broken |
||
| Voldenet | patrickb: I'm not fully sure if simply changing the scheduler wouldn't work here | 07:08 | |
|
07:11
abraxxa left
|
|||
| Voldenet | nevermind, it won't work | 07:11 | |
| because scheduler is a property of a promise, so then it'd force the whole protect-or-queue-on-recursion to be synchronous :( | 07:13 | ||
|
07:13
abraxxa joined
07:20
abraxxa left
07:21
abraxxa joined
07:25
soverysour joined
07:29
abraxxa left
07:35
abraxxa joined,
Sgeo left
07:40
abraxxa left
07:41
abraxxa joined
07:44
soverysour left
07:45
topnep left
07:46
soverysour joined,
topnep joined
07:54
sibl left
08:16
dakkar joined
08:21
annamalai joined
08:25
abraxxa left
08:28
abraxxa joined
08:35
abraxxa left,
abraxxa joined
09:10
soverysour left
09:25
sibl joined
09:48
sibl left
09:49
sibl joined
09:50
topnep left
09:51
topnep joined
09:55
soverysour joined,
soverysour left,
soverysour joined
10:02
sibl left
11:06
abraxxa left
11:08
abraxxa joined
11:13
librasteve_ left,
abraxxa left
11:15
abraxxa joined
11:21
sibl joined
11:35
sibl left
12:38
sibl joined
13:42
soverysour left
|
|||
| [Coke] | ended up following ugexe's suggestion and made github.com/coke/task-raku-dev# and updated my local script to install from that. | 13:46 | |
| This should save me tens of seconds! :) | |||
| ugexe | patrickb: i think the exception thing would be an issue even for internal use | 13:53 | |
| m: my $p = Promise.new; my $then-p = $p.then(sub ($r) { die "error" }, :synchronous); try { $p.keep(42) }; say $!; say "Original: {$p.status}"; say "Then: {$then-p.status}"; | |||
| evalable6 | Too few positionals passed; expected 1 argument but got 0 in sub at /tmp/c6r9DhKP_u line 1 in block <unit> at /tmp/c6r9DhKP_u line 1 Original: Kept Then: Planned |
||
| ugexe | the catch handler expects 1 argument here: github.com/rakudo/rakudo/blob/f1c1...kumod#L228 | ||
| but we don't pass an argument here: github.com/rakudo/rakudo/blob/f1c1...kumod#L184 | 13:54 | ||
|
14:00
topnep left
14:01
topnep joined
14:32
atcroft left
14:34
patrickb left,
greenfork left,
ab5tract left,
skaji__ left,
SmokeMachine left,
nicole left,
zostay left,
thowe left,
tbrowder left
14:36
thowe joined
14:39
sibl left
15:25
patrickb joined,
greenfork joined,
ab5tract joined,
skaji__ joined,
SmokeMachine joined,
nicole joined,
zostay joined,
tbrowder joined
15:35
patrickb left,
greenfork left,
ab5tract left,
skaji__ left,
SmokeMachine left,
nicole left,
zostay left,
tbrowder left,
nicole joined,
greenfork joined,
skaji__ joined,
patrickb joined,
zostay joined,
SmokeMachine joined,
tbrowder joined,
ab5tract joined
15:38
sibl joined
15:48
sibl left
16:05
topnep left
16:06
topnep joined
16:20
erooke_ left,
erooke joined
|
|||
| tonyo | tbrowder++ | 16:29 | |
| much appreciated, man | |||
|
16:35
dakkar left
|
|||
| [Coke] | antoncube - LLM::Functions fails its tests on win | 16:49 | |
| once I install all the other stuff, will open a bug. | 16:51 | ||
| apparently in my little subset of things I'm installing for zef, I have one requirement for HTTP::Tiny 0.2.5, and one for 0.2.6. :P | 17:01 | ||
| s/for/with/ | |||
| apogee_ntv | github.com/Raku/tap-harness6/issues/64 | 17:07 | |
| Found an issue in TAP that breaks prove6 on escape sequences leaking. This affects mi6 and zef install specifically. Perl5 prove works. | 17:08 | ||
|
17:11
soverysour joined,
soverysour left,
soverysour joined
|
|||
| timo | is there a TAP spec that rigidly defines what should happen when there's unrecognized stuff of any kind in the TAP stream? | 17:12 | |
| apogee_ntv | Don't know but it breaks any tests that need terminal raw mode and emit escape seqs. | 17:14 | |
|
17:15
soverysour left
|
|||
| apogee_ntv | github.com/m-doughty/Notcurses-Native - Example (see the t/ and xt/ split and the nasty helper function I had to make to get xt/ to pass at all). | 17:21 | |
| [Coke] | Data::Dump *still* broken on windows, it's been over a year. | ||
| tonyo: ^^ | 17:22 | ||
| added some more details, let me know if there's some other thing I can run to give data. | |||
| tonyo | i thought that issue was resolved? | ||
| i'll take a look but don't have a way to test | |||
| [Coke] | the original one might, but the ticket was still open - just tested it again, failed, pasted in the error from this time. | 17:24 | |
| one of the dumps is giving `undefined` instead of `(Nil)` | 17:25 | ||
| and, it seems, throwing an exception while it's doing it. (only running 1 test of 3) | |||
| tonyo | i'm removing that now | ||
| [Coke] | If you want to put diagnostic output in a branch or something, I can run it on windows and give you the output. | ||
| tonyo | do you have the repo locally? | ||
| [Coke] | yes | ||
| tonyo | alright give me a minute and i'll push directly so you can pull | ||
| apogee_ntv | raku.land/zef:apogee/Notcurses::Native Anyway got this uploaded, it's only low level bindings but if anyone wants to build TUI stuff :D | 17:26 | |
| tonyo | can you run t/08 ? that should have output prior to dying | ||
| apogee_ntv | Probably wont work on Windows without a lot of faff, notcurses on Windows is notorious. | 17:27 | |
| [Coke] | commented on issue | ||
| tonyo | ahh i see | 17:31 | |
| give me a second to rework these | |||
| tyty | |||
| what is $*KERNEL.Str on win? | 17:33 | ||
| [Coke] | win32 | 17:37 | |
| tonyo | can you do a pull and run the tests again? | 17:45 | |
| should account for any diff across platforms | |||
| [Coke] | main? | 17:46 | |
| may "Dubious, test returned 255", followed by "all x subtests passed" | 17:48 | ||
| *many | |||
| if I try to run 08 again by hand, I get "Cannot resolve caller min(Any:U: ); none of ... | |||
| tonyo | let me see if it's easy for me to get a windows vm so i don't need to keep bugging you | 17:49 | |
| sorry about that, kind of assumed the core fix would fix the rest of the issue | 17:50 | ||
| [Coke] | I can hook you up with one in azure if you need. | ||
| ... but that might be a problem for future me. | 17:51 | ||
| I'm going to go take a nap or something. cheers. Thanks for trying to dig in! | |||
| tonyo | np, i should have it working shortly. i think i see what's happening | 18:13 | |
|
18:23
annamalai left,
soverysour joined,
soverysour left,
soverysour joined
18:24
annamalai joined
|
|||
| tonyo | m: my $d; say Nil|Any ~~ $d.WHAT | 18:49 | |
| evalable6 | True | 18:50 | |
| tonyo | on windows: PS C:\Users\tonyo\Documents\dd> raku -e 'my $d; say Nil|Any ~~ $d.WHAT;' => False | ||
| [Coke]: when you're feeling fresh again can you pull & give it a go? not sure what to make of the CORE emissions but it should pass/work | 19:01 | ||
| and then if that passes for you too then i'll bump v and pub | |||
| ugexe | that cannot resolve caller error might be a precomp error | 19:09 | |
| ah i guess not. sometimes stale precomp files result in cannot resolve errors which is why i mentioned that | 19:11 | ||
|
19:14
[Coke] left
19:25
abraxxa1 joined
20:39
soverysour left
|
|||
| patrickb | ugexe: Thanks for the investigation and ping! I'll definitely look into this. | 20:41 | |
|
20:55
kylese left
20:56
kylese joined
21:10
[Coke] joined
|
|||
| [Coke] | back online for a bit, going to check... | 21:19 | |
| tonyo: HEAD works now on windows! | 21:22 | ||
| ... wait | 21:23 | ||
| 'zef test .' worked. 'zef install .' gave me "cannot unbox a type object (Str) to a str" | |||
| same issue with 'zef install <git repo url>' | 21:28 | ||
| lizmat | tonyo: are we sure that's the same version of Rakudo ? | 21:50 | |
|
22:00
abraxxa left
22:01
abraxxa1 left
22:11
soverysour joined
22:15
soverysour left
|
|||
| [Coke] | oh, very likely not. let me upgrade my rakudo | 22:32 | |
| my windows is at 2025.10 | |||
| now zef test . passes but is very noisy | 22:35 | ||
| type Any, type Mu uninit warnings | |||
| same warnings on install, but install is successful. | |||
| wonder what changed. | |||
|
22:48
simcop2387 left
|
|||
| [Coke] | does 'zef install --serial' stop after *any* module fails to install? (I've run it a few times and it I think it's got some randomization, and so I've had two different failures running it twice. (I kind of want it to install *everything it can*, even if something fails, if there's another thing that doesn't depend on it, it should install that too) | 23:06 | |
| (this is especially helpful on windows where I'm not sure if a module on my huge list of dev modules will work) | |||
| tonyo | i tested on 2026.03 | 23:07 | |
| [Coke]: you want i should pub as is to at least get you going or should i try to reduce noise first? | |||
| yeh, same version of raku - behaves differently on windows than on linux for that specific comparison | 23:10 | ||
| [Coke] | I'm installed from git at the moment. | 23:12 | |
| If you want to take some time and clean things up, I'm fine with that. | 23:13 | ||
|
23:15
simcop2387 joined
|
|||
| tonyo | i'll give it a go tonight but it didn't seem easy, i wonder if reversing the check so it doesn't go through the linux check first is as easy as it is | 23:16 | |
| ugexe | [Coke]: --serial makes more sense when zef does not use staging repos because it prevents extra modules from being installed. when zef does use staging repos if a test fails then none of the modules are installed so there isn't really a reason to use --serial | 23:22 | |
| but yeah --serial is basically a no-op when installing to a staging repo, i.e. any of the default repos | 23:23 | ||
| installing *with* a staging repo rather | |||
| [Coke] | ugexe: is there an option for my use case here (which I admit is rare) - install everything possible from the deps list, omitting only those that fail tests and have no failing deps? | 23:39 | |
|
23:40
Aedil left
|
|||
| [Coke] | (I basically want it to get down to a "here are the modules you want to use that fail on windows" without having to go through one a time. | 23:40 | |
| ugexe | no | 23:48 | |
| personally i wouldnt worry much about the "and have no failing deps" part. i'd run something like `zef install Whatever --debug --force-test` and grep for [FAIL] or just feed all the output to an llm and ask it what failed | 23:54 | ||