[ANN] Citrus (Scrum) 3.0.0 — State management library for Rum

2017-08-29 Thread Roman Liutikov
Just renaming -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send

Clojure In the UK: Yapster

2017-08-29 Thread Jon Pither
Hi All, Have a read about Clojure being used to build a corporate chat platform and the tech used: https://juxt.pro/blog/posts/clojure-in-yapster.html , Regards, Jon. -- You received this message because you are subscribed to the Goo

Re: Sum types in Clojure? Better to represent as tagged records or as variant vectors?

2017-08-29 Thread Tim Gilbert
I've used tagged unions to represent lookup identifiers for variant types and found them to be pleasant to work with. I think part of the reason they don't seem useful in the context of this discussion is that many of the examples given have not actually been variants. For example, in [:image/fi

Re: [ANN] Clojure 1.9.0-alpha18

2017-08-29 Thread Bozhidar Batsov
Just for the sake of completeness with regards to the issue in CIDER - it has been addressed in master and I'll issue a bugfix release soon. On 24 August 2017 at 05:20, Alex Miller wrote: > Correct, this was just something Rich ran into while doing the pluggable > resolver work. The intent has a

core.async got in a bad state?

2017-08-29 Thread Aaron Iba
My company has a production system that uses core.async extensively. We've been running it 24/7 for over a year with occasional restarts to update things and add features, and so far core.async has been working great. The other day, during a particularly high workload, the whole system got lock

Re: core.async got in a bad state?

2017-08-29 Thread Alex Miller
go blocks are multiplexed over a thread pool which has (by default) 8 threads. You should never perform any kind of blocking activity inside a go block, because if every go block in work happens to end up blocked, you will prevent all go blocks from making any further progress. It sounds to me

Re: core.async got in a bad state?

2017-08-29 Thread Timothy Baldridge
To add to what Alex said, look at this trace: https://gist.github.com/anonymous/65049ffdd37d43df8f23630928e8fed0#file-thread-dump-out-L1337-L1372 Here we see a go block calling mapcat, and inside the inner map something is calling >!!. As Alex mentioned this can be a source of deadlocks. No code c

Re: core.async got in a bad state?

2017-08-29 Thread Gary Trakhman
Hm, I came across a similar ordering invariant (No code called by a go block should ever call the blocking variants of core.async functions) while wrapping an imperative API, and I thought it might be useful to use vars/binding to enforce it. Has this or other approaches been considered in core.as

Re: core.async got in a bad state?

2017-08-29 Thread Aaron Iba
Ahh that makes a lot of sense. Indeed, I'm guilty of doing a blocking >!! inside a go-block. I was so careful to avoid other kinds of blocking calls (like IO) that I forgot that blocking variants of core.async calls themselves were forbidden. Thank you for pointing this out! I will rewire th

Re: core.async got in a bad state?

2017-08-29 Thread Alex Miller
We did actually discuss doing something like this a long time ago. The worry that comes to mind is whether it should actually be forbidden (an invariant) or merely strong frowned upon. It is possible to arrange a situation where you know (based on other knowledge) that a put on a channel will s

Re: Sum types in Clojure? Better to represent as tagged records or as variant vectors?

2017-08-29 Thread Didier
Guten-tag looks pretty great. I think your readme also explains the differences pretty well. I definitely feel like variants are really not great as data-structures to manipulate, but much better as declarative data constructors. Your library kinda unifies both into one type, its pretty clever.

Re: core.async got in a bad state?

2017-08-29 Thread Didier
> > No code called by a go block should ever call the blocking variants of > core.async functions (!!, alts!!, etc.). So I'd start at the code > redacted in those lines and go from there. > Seems like a good use case for a static code analyser. Maybe a contribution to https://github.com/jonas