CodyReichert / awesome-cl

A curated list of awesome Common Lisp frameworks, libraries and other shiny stuff.

Home Page:https://awesome-cl.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Add Calispel?

Ambrevar opened this issue · comments

GitHub: https://github.com/hawkir/calispel

I believe it provides a couple of procedures that lparallel misses, e.g. the "select" procedure to choose the next available channel among a set of channels.

Maybe… at the moment I see 3 commits and zero stars… you want to post it to reddit to see if there is feedback, and giving yours?

I've finally found the time to test this.
I've used lparallel for some time as well as ChanL.

  • Unlike lparallel, it does not require this initialization of a
    global kernel. so it works out of the box.

  • Unlike lparallel, sending to a channel is a blocking operation (this
    makes lparallel unusable for proper CSP if I understand correctly).

  • It has a blocking SELECT statement (called fair-alt), unlike
    lparallel which has no such statement, and unlike ChanL which has only a
    a non-blocking SELECT statement (which makes it almost useless).

  • Lparallel has a weird syntax for sending to a channel (submit-task takes a function which is executed concurrently), which departs from usual CSP style.

In short, Calispel seems to just work for everything related to CSP.

If this verifies, then I would recommend Calispel over Lparallel and ChanL which have proven a bit painful for me because of the above points.

Another benefit of Calispel: FAIR-ALT (the 'select' statement in CSP) is an expression and returns a value, unlike ChanL.

Looks like no one really had an opinion about CSP on Reddit.

To test Calispel more in depth, I've replaced ChanL with it in Nyxt: atlas-engineer/nyxt#1047

Works like a charm, and I'm already benefiting from fair-alt!

To conclude, I suggest that we put this library at the top of the recommendations on concurrency. Maybe hand in hand with lparallel, since the latter has convenience functions like pmap.

OK. We can put it above ChanL, if it has more features. I think a link to the reddit discussion, or a sentence with your opinion would be beneficial. Not only the reference, but something more opinionated, that gives more pointers.

(lparallel is far more used so it should still stand out, IMO)