Libgoc – Go-like CSP-style HTTP client/server library for C
Go style concurrency and GC in C, but Boehm GC limits performance sensitive systems.
Go-style CSP concurrency for plain C: fibers, channels, select, async I/O, HTTP, and GC in one runtime 🚀
Go-style CSP concurrency and GC in plain C, beating Go in some benchmarks.
C developers, systems programmers, language implementors
Go (golang) · libuv · libevent
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!
Go style concurrency and GC in C, but Boehm GC limits performance sensitive systems.
Transparent benchmarking of a single-container hybrid search setup on consumer hardware.
Pydantic models as database models kills the duplicate definition problem SQLModel still has.
Shadows Clojure's core operators so constraints look like normal code until you call satisfy.
JavaScript async.js ported to Go with generics; solves real concurrency pain idiomatically.
Unified sync/async stream API handles concurrency, throttling, batching without dependencies.