libdill VS CspChan

Compare libdill vs CspChan and see what are their differences.

CspChan

A pure C (-std=c89) implementation of Go channels, including blocking and non-blocking selects. (by rochus-keller)
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
libdill CspChan
2 4
1,658 419
- -
0.0 5.9
about 1 year ago 5 months ago
C C
MIT License GNU General Public License v3.0 or later
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

libdill

Posts with mentions or reviews of libdill. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-13.
  • Show HN: A pure C89 implementation of Go channels, with blocking selects
    3 projects | news.ycombinator.com | 13 Dec 2023
    libmill (https://github.com/sustrik/libmill) and libdill (https://github.com/sustrik/libdill) should be similar and probably mentioned.

    As far as I understand the differences between CspChan and libmill might be that libmill also implements lightweight tasks (coroutines) and everything that goes with it (IO multiplexing, async timers, etc), while CspChan uses OS threads?

  • Libdill: Structured Concurrency for C (2016)
    4 projects | news.ycombinator.com | 1 Jun 2021
    I saw this in 2017. Unfortunately, not much activity now. https://github.com/sustrik/libdill/commits/master

    Might be fun to play with, but I wouldn't rely on it. Generally, better off with libuv for existing projects or Rust for greener fields where lifetimes are checked and safe concurrency is much easier.

CspChan

Posts with mentions or reviews of CspChan. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-25.
  • Show HN: Towards Oberon+ concurrency; request for comments
    6 projects | news.ycombinator.com | 25 Dec 2023
    I've updated the paper and removed the SELECT, CLOSE and CLOSED procedures as discussed.

    I still think a close feature which - in contrast to Go - would just signal all waiting threads and abandon communication could be useful. I implemented this in the C library I use for experiments: https://github.com/rochus-keller/CspChan

    > the proposal for it to take a timeout, which could then be detected via execution of ELSE?

    It could still be added in future, e.g. as an additional parameter to SEND or RECEIVE, but in a similar way to CLOSE it makes things more complicated, and there is an alternative solution with a separate thread sending after a delay a over a channel which receives in a WITH statement where the candidate channel waits.

    > have you considered asking Dr Wirth for feedback?

    I have qualms about bothering him with this in his well-deserved retirement, especially as he has demonstrated with Oberon-07 in which direction he would develop the language (see also https://oberon-lang.github.io/2021/07/16/comparing-oberon+-w...).

  • Show HN: A pure C89 implementation of Go channels, with blocking selects
    3 projects | news.ycombinator.com | 13 Dec 2023
  • A pure C89 implementation of Go channels, including blocking and non-blocking selects
    4 projects | /r/golang | 11 Dec 2023
    1 project | /r/C_Programming | 11 Dec 2023

What are some alternatives?

When comparing libdill and CspChan you can also consider the following projects:

libmill - Go-style concurrency in C

go - The Go programming language

ck - Concurrency primitives, safe memory reclamation mechanisms and non-blocking (including lock-free) data structures designed to aid in the research, design and implementation of high performance concurrent systems developed in C99+.

plan9 - Plan 9 History, from 1992-09-21 to 2015-01-10.

A C++14 library for executors - C++ library for executors

C++ Actor Framework - An Open Source Implementation of the Actor Model in C++

plan9port - Plan 9 from User Space

moodycamel - A fast multi-producer, multi-consumer lock-free concurrent queue for C++11

specification - The Oberon+ Programming Language Specification

Taskflow - A General-purpose Parallel and Heterogeneous Task Programming System

HPX - The C++ Standard Library for Parallelism and Concurrency