https://github.com/dar-clojure/async
core.async is heavily focused on CSP. While CSP itself might be a good idea, it's certainly not the case that every async problem is a CSP problem. For example, you often use go block just because it allows to write non-blocking code in a regular linear fashion, not because it is a funky way to get values from channels. For such case channels are too heavy. When you have lots of async values coming from cache their impact on performance might be unacceptable. dar.async <https://github.com/dar-clojure/async> provides just a go block without unnecessary features. The go block itself is taken as-is. However, channels are replaced with lightweight promises and dispatches to threadpool are removed from everywhere. Go block runs synchronously (like a do block) until it hits the first async point. Then if the result is immediately available it just continues running in the current thread, otherwise the execution will be resumed on a thread that delivered result. -- 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 email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.