Back to browse
GitHub Repository

Go-style CSP concurrency for plain C: fibers, channels, select, async I/O, HTTP, and GC in one runtime 🚀

34 starsC

CSP Benchmarks – Go vs. core.async (Clojure) vs. libgoc (C)

by divs1210·Apr 24, 2026·2 points·3 comments

AI Analysis

●●●BangerWizardryBig BrainNiche Gem

Go-style CSP concurrency and GC in plain C, beating Go in some benchmarks.

Strengths
  • Implements stackful coroutines and channels in plain C with garbage collection.
  • Benchmarks claim performance parity or better than Go and Clojure.
  • Includes built-in async I/O and HTTP layers on top of libuv.
Weaknesses
  • Niche appeal limited to C developers seeking high-level concurrency primitives.
  • Dependency on Boehm GC may deter embedded or low-level systems use.
Target Audience

C developers, systems programmers, language implementors

Similar To

Go (golang) · libuv · libevent

Post Description

Hi, HN!

Author of libgoc here.

I made a CSP library in C along with async I/O and HTTP client/server layers.

It is blazing fast, beating Go and Clojure at several benchmarks.

The library is stable, and has an extensive test suite.

I have several optimizations and features planned, all logged as issues in the github repo.

libgoc currently uses void* extensively and is ducktyped, but this will eventually change when STC generics will be integrated.

Two most important features are:

- it provides cross-platform cooperative threads (goroutines / virtual threads / fibers) in C

- it exposes a very user friendly async I/O C interface to libuv

I'll be happy to answer questions!

Similar Projects