00:03 timo left 00:04 timo joined 00:14 kurahaupo joined 01:30 hulk joined 01:31 kylese left 02:15 hulk left, kylese joined 02:22 Geth joined 03:22 dg left 03:25 dg joined 04:50 kylese left 04:54 kylese joined 05:45 kurahaupo left 06:33 Sgeo left 06:51 perryprog left, perryprog joined
Voldenet eax_: some things are working, but a lot of things quietly fail in unexpected ways 07:19
so you need some extensive testing for a lot of code 07:21
though the compiler is getting better every day 07:22
if it does work however, it compiles so fast that it feels nice to use 07:23
though I can't figure out how to increase runtime performance in rakupp, whatever I do code takes longer to run 07:35
than in usual raku
07:41 belluzj joined
Voldenet though my knowledge is around week old, so it's ancient already :> 07:43
07:52 belluzj left 09:26 sp1983 joined
sp1983 Voldenet: with the help of GitHub copilot I've ported rakupp GitHub actions pipeline to dsci - github.com/melezhik/rakupp-dsci , this is just a concept but copilot surprisingly well did migration and one can see some advantages dsci has over gh actions 09:27
09:35 sp1983 left 09:46 wayland76 left, wayland76 joined
Voldenet well ofc, code in yaml is essentially esolang 09:52
you kinda need special editor to even edit it
ugexe People will be more interested in hearing about the advantages than that copilot did something 09:53
Voldenet heh, I've mentally skipped the part about copilot 09:54
marketing teams trained me to ignore it
melezhik. Never copilot )) the reason I mentioned it is I see this as advantage that my tool is LLMable ) 09:55
In a sense I can easily generate / migrate dsci pipelines with LLM 09:56
But LLM itself is not a point here
Voldenet being llmable actually doesn't say anything
you could ask LLM to convert yaml CI to one big C file and it would probably work 09:57
melezhik. For example see how elegantly all job are separated by folders , cs dozens on context switching in YAML
Voldenet but it would be poor experience for maintainers :D
melezhik. One big file is anti pattern in a sense of dsci design
I mean that 09:58
github.com/melezhik/rakupp-dsci/tr....dsci/jobs
Isolation and decomposition 09:59
Also smooth switching between bash and Powershell where it is required
Like here github.com/melezhik/rakupp-dsci/tr...ndows-msvc 10:00
One just need to chose to name a task as task.ps1 instead of task.bash , and SDK is always guaranteed 10:01
Voldenet hm, decomposition can get a little verbose with number of one-line files – maybe jobs should be able to define tasks without files somehow
melezhik. Like config helper for example
$NAME = & config NAME
github.com/melezhik/rakupp-dsci/bl...ask.ps1#L4
But you can always combine small tasks into bigger ones , and just get less run_task calls inside job file 10:02
Voldenet on powershell I'd expect something like Get-DsciVar btw 10:03
melezhik. Yes they can , it’s called single task job , just drop task.$ext into jobs folder no need to have job.ext with tasks/ sub folder and tasks in it 10:04
In SDK this is called config function
github.com/melezhik/DSCI/blob/main...parameters 10:05
Voldenet what I meant would be defining job.ps1 with multiple functions
melezhik. Yes this is also possible
Voldenet but would CI catch that as separate step? 10:06
melezhik. You can put anything you want inside job.ps1
Not just run_task calls
Voldenet but CI would see that as just one large task 10:07
so… you don't see how long every task took and can't really code it
melezhik. For dsci elementary unit of execution is job actually , for user ( developer ) there is emulation of streps with tasks/ and run_task inside jib file , but technically underneath is just a single Sparrow scenario executed 10:08
Voldenet ah, I see, so there's not much difference
melezhik. Yep
Dsci is built on top of Sparrow in the end of the day 10:09
Voldenet it'd be probably nice to see details of timing ootb, that's a thing I'm really missing in build systems
melezhik. And in Sparriw there is sparrow scenario which is just a single unit
Voldenet timings, dependencies, etc.
also, `Write-Host "smoke_e_windows_pwsh (windows-msvc job)"` that is kinda awkward and could be probably constructed automatically
somehow
so run_task knows what's being done 10:10
melezhik. It’s easy to add timing per every ( sub) tasks/ or single task without subtasks. Dsci reports indeed already have time stamps per every task or sub task
That’s generated by copilot actually 10:11
Just a debug message
Voldenet oh, does dsci report every run_task call?
melezhik. I am going probably to ask it to refactor debug messsges
Yes it does ) 10:12
Voldenet if so, then probably it's a mistake, heh :D
llm mistake*
melezhik. Yes . LLMs still do a lot of unnecessary things
Voldenet I'm mentioning the timings as important thing, because a lot of times I hit that wall when the build takes a lot longer than it should
melezhik. But again I just did not have time / was lazy to port rakupp pipeline to dsci manually 10:13
Voldenet and CI systems are not that flexible for timing things, unfortunately, e.g. build processes can't really report progress or internal timings, so you have to refactor things into jobs
melezhik. So, yeah timing is already hear, maybe just need some formatting ( like showing time elapsed instead of just time stamps ) 10:14
Hear -> here
But one thing I really like about dsci it allows you to create extremely hackable and simple code where one is in control of every but, and if one day I need to add few more option to say cmake build command I just need edit my task.bash no magic is required 10:16
Voldenet basically what I'd love to use is `run_task` with calculated jobs tree, timings and parallel tasks support somehow
I could use & and fg but that feels hacky, CI may not be able to track it, so you'll end up reading 1000 lines log again 10:17
melezhik. Instead of going trough gh actions plugin documentation/ source code doing reverse engineering
Voldenet yeah in the end it looks so simple that it's hard to believe it's actually CI 10:18
I'm just throwing ideas of various CI pains
melezhik. Right now run_task are sequential, after all job file is just regular programming language be it bash, Raku or Powershell
Absolutely, that’s the idea behind of dsci 10:19
And btw it still allows to package reparable tasks into plugins
Voldenet in fact, timings and tasks running tracking could be in the end just especially formatted logs
melezhik. And distribute them across community 10:20
and dsci/shared/tasks is for local repeatable tasks
github.com/melezhik/rakupp-dsci/tr...ared/tasks 10:21
Voldenet e.g. `DSCI subtask_start/subtask_end/subtask_fail` something like that
I'd say something about dependencies but idk if having build system inside CI is a good idea, it sounds like overengineering 10:23
melezhik. This is example of job with two tasks ( every log block stat starts with task run: task.bash - . ) 10:32
And here is the job - forgejo.sparrowhub.io/demo/demo-rak...i/job.raku
And here is the job tasks - forgejo.sparrowhub.io/demo/demo-rak...dsci/tasks 10:33
Again job is just a Raku file
With 2 run_task class
Calls
11:54 abbe left 11:55 abbe joined 12:18 wayland joined, wayland76 left 12:23 spa1983 joined
spa1983 promised report (lost accidentally ) - dsci-runner.sparrowhub.io/report/ui...njvl.18120 12:23
with two tasks
12:25 spa1983 left 12:28 lizmat_ left, lizmat joined
lizmat weekly: github.com/Raku/problem-solving/issues/525 13:28
notable6 lizmat, Noted! (weekly)
13:55 sorenson left 13:58 sorenson joined 14:26 wayland left 14:27 wayland joined 14:46 merpp left 14:53 sp1983 joined
sp1983 Voldanet: pass all parameters as job input parameters - github.com/melezhik/rakupp-dsci/bl.../jobs.yaml 14:53
cc/ccx/mingw/
14:53 Sgeo joined 14:59 sp1983 left
xinming Is there an operator to do .DEFINITE test? 15:09
15:09 merp joined
xinming I know $x.DEFINITE will do, But don't know if there is operator for this 15:09
'if $x.DEFINITE' <--- I mean some prefix for this 15:10
15:15 sp1983 joined
sp1983 Voldanet: I think maybe take some simple pipelines , say for some Raku modules and try to convert to dsci and see what I get 15:16
antononcube But that is the point of the "LLM-able" claim -- how high that probability is? 15:24
With proper prompting and post-processing they do not. 🙂
weekly: rakuforprediction.wordpress.com/20...ss-to-xai/ 15:25
notable6 antononcube, Noted! (weekly)
Voldenet the report output is not bad, just that any sort of debugging or guessing how long things take is non-trivial 15:27
sp1983 yeah, but we at least can show elapsed time for every finished task post fact 15:31
antononcube: github.com/melezhik/Raku-Jupyter-Chatbook-dsci 15:34
Raku-Jupyter-Chatbook )))
that's simple one, however migration done by copilot is decent ) 15:35
I like Benefits of this migration: part haha ))
15:36 sp1983 left
antononcube @sp1983 15:37
cdn.discordapp.com/attachments/633...fc976&
For for the non-Russian speakers: 15:44
cdn.discordapp.com/attachments/633...8f56f&
melezhik. Anton: I am please 🙏))) 15:48
pleased
xinming Hi, today, when I read the Proc::Async doc, I saw there is a way to get the exit code of the process, I need to do something like 'my $exit-code; react whenever $proc.start { $exit-code = .exitcode; };' Isn't there other way to do this? 16:41
Do we have to use react whenever block here?
16:47 wayland left, wayland joined
xinming And I tried to read Proc::Async src/core.c/Proc/Async.rakumod, I saw it is a $!exit_promise internally. 16:48
hmm, ignore me, figured out myself 16:51
m: { my $p = Proc::Async.new("/usr/bin/false"); my $x = await $p.start; CATCH { "e1".say; }; "here1".say; }; { my $p = Proc::Async.new("/usr/bin/false"); await $p.start; CATCH { "e2".say; }; "here2".raku.say; } 17:21
camelia here1
The spawned command '/usr/bin/false' exited unsuccessfully (exit code: 1, signal: 0)
in block <unit> at <tmp> line 1

e2
17:58 acidsys left 18:13 acidsys joined
melezhik. Gemini take on converting gh actions pipeline to dsci - share.gemini.google/jrFcsEfOSeYA 19:05
19:32 wayland left, wayland joined
Voldenet xinming: you can use promise-based interface to it, eg `say await $proc.start.then({ $_.result.exitcode });` 19:56
ooor `await $proc.start andthen say .exitcode` 19:57
promises is probably the sanest approach: say await $proc.start.then({ $_.status ~~ Broken ?? 42 !! $_.result.exitcode }); 20:03
since you can handle errors with it
or gobble them up if you prefer 20:04
in your example `await $p.start` sinks the promise, that's where it gets the error 20:07
m: { my $p = Proc::Async.new("/usr/bin/false"); try sink await $p.start; "here1".say; }; { my $p = Proc::Async.new("/usr/bin/false"); await $p.start; "here2".raku.say; } #eg 20:08
camelia here1
The spawned command '/usr/bin/false' exited unsuccessfully (exit code: 1, signal: 0)
in block <unit> at <tmp> line 1
20:20 JRaspass left, JRaspass joined 20:37 jast left, jast joined 21:52 thaewrapt left 21:53 thaewrapt joined, thaewrapt left, thaewrapt joined 22:07 timo left 22:08 timo joined 23:39 kurahaupo joined 23:57 wayland left