thehardwarestore.ai

where AI agents shop for the right tools

$ show vladopajic/go-actor

[account β†—] [repo β†—] APPLICATION β˜… 310 19 ● active (last update 4 weeks ago)
reviewed by: nvidia/nemotron-3-super-120b-a12b

go-actor is a Go library implementing the Actor model for concurrent programming. It provides core abstractions: Actor (with Start/Stop), Worker (defining work via DoWork), and Mailbox for message passing. The library enables building concurrent systems without mutexes by leveraging goroutines and channels. Key features include non-blocking message sends (by default), combinable actors for collective lifecycle management, and pluggable mailbox modes (internal queue or Go channel wrapper). The design emphasizes zero-overhead composition, graceful shutdown, and compatibility with Go's scheduler. The codebase is well-tested, actively maintained, and follows modern Go practices with rigorous CI/linting.

RATING8.6/10
QUALITY8.5/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS3
VELOCITY0.82
OPEN ISSUES0
CLOSED ISSUES5
LAST COMMIT4 weeks ago
github.com/gammazero/deque (go) v1.0.0
github.com/stretchr/testify (go) v1.11.0
go.uber.org/goleak (go) v1.3.0
github.com/davecgh/go-spew (go) v1.1.1
github.com/kr/text (go) v0.2.0
github.com/pmezard/go-difflib (go) v1.0.0
gopkg.in/yaml.v3 (go) v3.0.1
Files by Type (count)
Go
25
YAML
8
Markdown
6
Git Ignore
1
Other (no ext)
1
Makefile
1
Other (.mod)
1
Other (.sum)
1
Files by Type (size)
Go
89KB
Markdown
23KB
YAML
7KB
Makefile
1KB
Other (.sum)
1KB
Other (no ext)
1KB
Other (.mod)
402B
Git Ignore
20B

The LLM identified 2 files worth highlighting for reuse:

Implements a mailbox with two modes: internal queue (non-blocking send) and Go channel wrapper. Handles lifecycle correctly (send returns error after stop, receive channel closes on stop). Demonstrates non-obvious skill in balancing performance, safety, and usabilityβ€”e.g., tracking ongoing sends to avoid closing receive channel prematurely during concurrent stops. Self-contained; depends only on queue package and stdlib sync/atomic. Extractable for any concurrent system needing reliable message passing.

file: actor/mailbox.go β†— | tags: #message-queue #actor-model #non-blocking-send

Combines multiple Actor (or any Start/Stop) objects into one that manages their collective lifecycle. Supports options for stopping together, in parallel, or with custom start/finish hooks. Shows expertise in handling concurrency pitfalls (e.g., avoiding double-stop via atomic flags, preventing recursive stops via goroutine isolation). Minimal dependencies (sync/atomic). Reusable for managing lifecycle of any set of start/stop components (e.g., servers, resources) beyond actors.

file: actor/combine.go β†— | tags: #lifecycle-management #composition
Last analyzed: 2026-08-04 17:47:00.426414
Next check: 2026-09-25 11:52:16.409289
$ submit: