🦋 Welcome to the IRC channel of the core developers of the Raku Programming Language (raku.org #rakulang). This channel is logged for the purpose of history keeping about its development | evalbot usage: 'm: say 3;' or /msg camelia m: ... | log inspection situation still under development | For MoarVM see #moarvm Set by lizmat on 22 May 2021. |
|||
00:02
reportable6 left
00:03
reportable6 left
01:04
reportable6 joined
|
|||
Geth | rakudo: 08f5448de0 | (Vadim Belman)++ | src/Perl6/Metamodel/ClassHOW.nqp Fix a race in ClassHOW new_type Anonymous class ID is storead in a class `my` variable and was incremented by `new_type` method without a lock protection. In my testing the probablity of creating a clashing name was ~0.25% for concurrently invoked `new_type` methods. |
01:52 | |
rakudo: 83b0bca78a | (Vadim Belman)++ | src/Perl6/Metamodel/ClassHOW.nqp Narrow the lock protected code down to the increment only Minor performance improvement. Especially for cases where class name is provided. |
|||
rakudo: b7f088b5a1 | (Vadim Belman)++ (committed using GitHub Web editor) | src/Perl6/Metamodel/ClassHOW.nqp Merge pull request #4482 from vrurg/fix-class-id-race Fix a race in ClassHOW new_type |
|||
02:04
linkable6 left,
evalable6 left
02:05
linkable6 joined
02:06
evalable6 joined
|
|||
japhb | vrurg: Any particular reason not to just make $anon_id an atomicint? | 02:13 | |
vrurg | japhb: Aha, the simplest one: NQP doesn't do atomics. :D | 02:14 | |
Perhaps it's possible to declare an int with appropriate representation, but JVM would need a lock anyway. | 02:17 | ||
japhb | nodndo, makes sense | 02:25 | |
*nodnod | |||
moon-child | java doesn't have atomics??? | 02:42 | |
I knew they were focused on doing concurrency well...how can they not have atomics? | |||
[Coke] | I assumed they meant nqp atomics. | 02:49 | |
Java does have an AtomicInteger | 02:50 | ||
japhb | moon-child: [Coke] was reading (my side at least) correctly. The JVM port doesn't have enough active contributors right now to keep up with MoarVM improvements, so there are often deep things that we conditionally compile differently on MoarVM and JVM (and JS) backends, or that are only fully supported on MoarVM. | 04:22 | |
moon-child | got it | 04:33 | |
04:44
linkable6 left,
evalable6 left
04:47
linkable6 joined
05:46
evalable6 joined
06:04
reportable6 left
06:06
reportable6 joined
|
|||
Xliff | Is it possible for a raku script to start a stay-resident subroutine and return control to the executing shell? | 08:09 | |
Something like daemonize, but in pure | 08:10 | ||
Raku? | |||
Altai-man | Xliff, "pure Raku" includes NativeCall or? | 08:24 | |
Xliff | Sure! Why not? | 08:29 | |
Altai-man | Xliff, if NativeCall is allowed you can look at github.com/hipek8/p6-UNIX-Daemonize if it's of any help. | 08:33 | |
Or other solutions I can think of are based on unix daemonize, which is C and so NativeCall. | |||
Xliff, ah, except the tickets say it's broken, but with your experience you can bitrot it maybe? | 08:34 | ||
oops, *de-bitrot | |||
lizmat | Xliff: maybe this is a simpler way: | 08:39 | |
m: sub daemonize(&code) { Thread.new(:&code).run }; daemonize { say "sleeping at {time}"; sleep 5; say "done at {time}" } | |||
camelia | sleeping at 1627634384 done at 1627634389 |
||
lizmat | in combination with closing STDIN/STDOUT and such | 08:40 | |
moon-child | lizmat: that's not really a daemon, though. You can't close the terminal and have that code continue to run | 08:43 | |
lizmat | not even after closing STDIN/STDOUT/STDERR ? | 08:44 | |
moon-child | afaik once the main thread returns from main, the c runtime (at least on linux) will call exit_group(), which kills all threads | 08:47 | |
lizmat | indeed :-( | 08:49 | |
moon-child | depends on how 'pure' pure raku is, maybe Proc::Async.new: 'raku', 'myscript.raku', '--doitforreal' would work | 08:51 | |
lizmat | I think Cro does it somehow, for production purposes? | 08:52 | |
maybe #cro would be a good place to ask? | |||
moon-child | yeah, Proc::Async seems to work | 08:54 | |
Xliff: ix.io/3usR | 08:58 | ||
Xliff | Heh --doitforreal | ||
moon-child | I don't think it's going to get much better than that. C has to fork, and you can't really fork in raku | ||
08:59
linkable6 left,
evalable6 left
|
|||
Xliff | moon-child: Thanks! | 08:59 | |
moon-child | alternative to closing in/out/error might be handling sighup and closing them only once you get that. Then you can post status messages until the terminal is closed | ||
09:01
evalable6 joined
|
|||
MasterDuke | there is actually an nqp::fork, but it isn't used/exposed in rakudo | 09:04 | |
moon-child | yeah, but mvm makes threads, and you can't really use fork together with threads | 09:06 | |
MasterDuke | brrt figured something out, i think there was some relatively recent posix addition to handle threads better than before | 09:07 | |
moon-child | ooh, really? Cool | 09:08 | |
(I mean, death to fork; but still that's cool) | 09:09 | ||
09:32
patrickb joined
10:00
linkable6 joined
10:30
sena_kun joined
|
|||
Geth | nqp/new-disp: 3c39060361 | Altai-man++ (committed using GitHub Web editor) | tools/templates/MOAR_REVISION Bump MoarVM to new-disp This fixes building of nqp with --gen-moar option and partially unblocks Blin. |
10:49 | |
rakudo/new-disp: 2491851012 | Altai-man++ (committed using GitHub Web editor) | tools/templates/NQP_REVISION Bump NQP to new-disp This fixes building of rakudo with --gen-moar --gen-nqp options and unblocks Blin. |
10:51 | ||
nine | moon-child: actually, you can fork in Raku. As long as you've never started any worker threads | 11:10 | |
brrt++ implemented support for fork | 11:11 | ||
lizmat | but is it exposed? | 11:26 | |
nine | I don't know | 11:36 | |
12:02
reportable6 left
12:05
reportable6 joined
|
|||
ugexe | i would think you couldnt have started any libuv based threads | 12:50 | |
leont | Yeah, threads and forking don't really work well together. | 12:52 | |
Or to be precise, after forking a multi-threaded program you're limited to async-signal-safe functions, unless special precautions have been taken. | 12:53 | ||
Precautions can be taken with help of pthread_at_fork; ironically making fork no longer async-signal-safe | 12:54 | ||
13:22
[Coke]_ joined
13:24
raydiak_ joined
13:25
sjn_ joined
13:34
sjn left,
raydiak left
15:24
sjn_ is now known as sjn
|
|||
Geth | nqp/new-disp: a258a33671 | (Jonathan Worthington)++ | src/core/dispatchers.nqp Handle call sites megamorphic in method name Build a lookup table and use it at such callsites, rather than blowing up the inline cache with a ton of entries. |
16:12 | |
nqp/new-disp: 2e107b0de9 | (Jonathan Worthington)++ | src/core/NQPMu.nqp Avoid a slurp/flatten in NQP object creation Borrow a trick from Rakudo, except we can also assume that nobody will override bless in NQP. |
|||
rakudo/new-disp: 123046c75d | (Jonathan Worthington)++ | 13 files Adapt to NQP API change |
|||
16:55
melezhik joined
|
|||
melezhik | the latest rakudo version (2021.07) started to produce `Please use exitcode and/or signal methods (status is to be removed in 2022.06) instead.` warning on my code | 16:56 | |
gist.github.com/melezhik/95b0778bd...edb7cde5a3 | |||
I wonder if this line of code confuses Rakudo? github.com/melezhik/Sparrow6/blob/...l.pm6#L143 | 16:57 | ||
my impression complain caused by method is named `foo-status`? | 16:58 | ||
`handle-hook-status` status actually ... | |||
sena_kun | melezhik, can you please show the code? | ||
m: sub foo-status {}; foo-status; | |||
camelia | ( no output ) | ||
melezhik | already did - github.com/melezhik/Sparrow6/blob/...l.pm6#L143 | ||
oh, looks like it is here - github.com/melezhik/Sparrow6/blob/...n.pm6#L211 | 16:59 | ||
it's just trace from Rakudo does not show that ... | |||
sena_kun | melezhik, the name is kinda similar, so that's it confusing. the call to `status` you linked to was indeed deprecated | 17:00 | |
melezhik | yeah, I see that now | ||
what I am supposed to use instead? | |||
sena_kun | the exact same formula would be `($cmd.exitcode +< 8) +| $cmd.signal`, that's the implementation of the `status` method. | 17:01 | |
melezhik | looks like in my case it'd be enough to have `.exitcode` instead .. | 17:02 | |
just because I use `status` like that - github.com/melezhik/Sparrow6/blob/...#L211-L213 | 17:03 | ||
sena_kun | melezhik, could be, yes | 17:04 | |
lizmat | I guess the bug is that the deprecation message is showing the wrong line number :-( | 17:06 | |
MasterDuke | Xliff just mentioned getting some wrong line numbers as of recently over in #raku | 17:07 | |
melezhik | lizmat - "I guess the bug is that the deprecation message is showing the wrong line number" that is correct | 17:10 | |
anyway my commit fixes the issue in Sparrow - github.com/melezhik/Sparrow6/commi...a801b467ac | 17:11 | ||
but yeah, I guess if someone call `.status` from method named `foo-bar-status` it will produce wrong line number , and this is a bug | |||
sena_kun | melezhik, is hyphen at github.com/melezhik/Sparrow6/commi...856b86R194 correct? | 17:12 | |
17:17
Xliff left
|
|||
melezhik | upps, it's typo | 17:19 | |
thanks for pointing this out | |||
17:52
sena_kun left
18:02
reportable6 left
18:05
reportable6 joined
18:29
[Coke]_ is now known as [Coke]
18:35
melezhik left
|
|||
lizmat | m: dd %(a => 42, b => 666) | 20:10 | |
camelia | Hash % = {:a(42), :b(666)} | ||
lizmat | so, %() creates a mutable Hash | ||
m: dd @(42,66) | |||
camelia | (42, 66) | ||
lizmat | yet @() creates an immutable list | ||
I feel this is inconsistent: either %() should create a Map, or @() should create an Array | 20:11 | ||
I'm leaning towards %() creating a Map, as we currently do not have syntactic sugar to create Maps and we *do* have { a => 42, b => 666 } to create Hashes | 20:13 | ||
and [42,666] to create Arrays | |||
japhb | lizmat: What exactly is produced by `sub hash`? It's directly handing back the thing that was created by *%h, but what is that? | 20:25 | |
(IIRC it's decontainerized, but I don't know if it's a Hash with every key bound directly to a value, or a Map, or something else entirely.) | 20:26 | ||
Also, it's not clear to me that hash(...named args...) and hash(...mixed positional and named args...) necessarily produce the same type out. | 20:27 | ||
20:29
linkable6 left,
evalable6 left
|
|||
lizmat | looking at the code, it slurps all positionals and all nameds and creates a Hash from that | 20:29 | |
20:31
linkable6 joined
|
|||
lizmat | re deprecation line numbers: yes, they appear meh | 20:36 | |
looks like it cannot handle the "is DEPRECATED" trait on a proto | 20:43 | ||
afk& | 20:47 | ||
21:39
patrickb left
|
|||
Geth | rakudo: 54f1b7a5f2 | (Elizabeth Mattijsen)++ | src/core.c/Proc.pm6 Fix location of Proc.status deprecation message Apparently, putting an "is DEPRECATED" on a proto, breaks things. So move it to the candidates. This will at least fix the issue for now. Would be great if we could make "is DEPRECATED" work on protos as well. |
22:24 | |
roast: 7c13d5d876 | (Elizabeth Mattijsen)++ | S02-types/isDEPRECATED.t Add test for deprecation of Proc.status |
22:35 | ||
22:45
Xliff joined
22:48
casaca joined
23:16
casaca left
23:18
casaca joined
23:26
casaca left
23:27
casaca joined
23:30
evalable6 joined
23:31
casaca left
23:32
Xliff left
|