Fork me on GitHub
#missionary
<
2023-09-22
>
leonoel10:09:56

New topic draft, please review - synchronizers https://gorgeous-sorbet-a5a2bf.netlify.app/synchronizers

🎯 1
👍 2
Dustin Getz10:09:57

please can we get the github markdown .css on the page, mobile layout is unworkable

Dustin Getz10:09:26

also the comments need to not exceed 80 char width (iirc, that might not be the magic constant i need to check where we ended up on the electric tutorial)

leonoel15:09:18

can you explain which layout problem is solved by github markdown css

Dustin Getz15:09:47

view it on your mobile

Dustin Getz15:09:53

I DM'ed a screenshot

Dustin Getz15:09:56

I'd like a sentence "A missionary coroutine is .... for example ...."

Dustin Getz15:09:29

I think you mean the three process macros declare missionary coroutines but I'm uncertain if that's what you mean and I had to think about it

Dustin Getz15:09:55

For the three parking/forking operators, I'd like to see simple examples of each of them that demonstrates the difference between ?< and ?> as well as their difference in a few words

Dustin Getz15:09:32

> Multiple threads can successively take ownership of evaluation ... Example : the REPL thread starts the process, a cpu pooled thread finishes it. This is surprising, why is it so?

leonoel16:09:30

> This is surprising, why is it so? the answer probably deserves another topic, but I'm interested to know why you would expect a coroutine execution to be bound to a single thread

Dustin Getz16:09:11

It didn't occur to me to even think about that and the document didn't explain it

Dustin Getz16:09:41

We experienced some confusion in 2020–2022 when a m/ap with say a println and then a println after a sleep caused stdout to different places, because *out* was not redirected to the REPL in the threadpool, or something

Dustin Getz16:09:41

I also don't understand the cost if any of moving data between threads in java

Dustin Getz00:09:05

i imagined m/via gated access to thread pool for heavy things, i didn’t expect the coroutine DSL to even benefit from more threads, i imagined all coordination / control flow would run in main thread like on JS platform. Does this matter in practice? (I think it probably does as I recall seeing electric programs where the electric overhead is the dominant cost) What is the key benefit? Can coroutines evaluate in parallel? Is this even a coherent question? idk

leonoel08:10:44

I pushed an update

xificurC08:10:05

is this look expected?

leonoel08:10:05

do you have dark mode enabled on your browser ?

xificurC08:10:33

not sure what you mean enabling dark mode in my browser, but I see it dark in FF, FF private window, chromium, google chrome (the last 2 with stock config)

leonoel08:10:17

I guess it's a system-wide flag then

xificurC08:10:44

just checked mobile, same

leonoel09:10:24

I forced light mode for now, please retry in a couple of minutes

xificurC09:10:18

indeed, burning my retinas 🙂

leonoel09:10:50

sorry about that 😕

Dustin Getz16:09:07

Missionary one-liner: higher order reactive concurrency combinators

Dustin Getz16:09:16

an example being (defn mix [& flows] (m/ap (m/?> (m/?> (count flows) (m/seed flows)))))

Dustin Getz16:09:41

"concurrency as a value"

metal 3
Ben Sless17:09:47

Is this mix guaranteed to be fair?

leonoel18:09:59

@UK0810AQ2 is this a fair behavior to you ?

(m/? (m/reduce conj
       (mix (m/seed [:a :b :c :d])
         (m/seed [1 2 3 4]))))
=> [1 :a 2 :b 3 :c 4 :d]

Ben Sless19:09:24

And that pretty much answers my question

xificurC08:09:54

I like "asynchronous data structures"