tidwall/evio

Fast event-loop networking for Go

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 23 minutes ago
Added to GitGenius on September 11th, 2026
Created on July 4th, 2017
Open Issues & Pull Requests: 26 (+0)
GitHub issues: Enabled
Number of forks: 491
Total Stargazers: 6,041 (+0)
Total Subscribers: 169 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 57.4 days
Mean response time: 57.4 days
90th percentile: 57.4 days
Tracked items: 1

Most active contributors

Sign in to see contributor activity.

Related repositories by overlapping contributors

No overlapping-contributor repos identified yet.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 1
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 71 days
Stale 30+ days: 1
Stale 90+ days: 0

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

No label distribution available yet.

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

evio is an event-loop networking framework for Go that prioritizes performance and minimal resource consumption.

The tool addresses the need for high-throughput network servers by bypassing Go's standard net package and making direct syscalls to epoll on Linux and kqueue on BSD systems. This approach mirrors the design of established C libraries like libuv and libevent, enabling the framework to handle packet processing at rates comparable to Redis and HAProxy. The framework provides a simple event-driven API where developers define handlers for connection lifecycle events (Opened, Closed, Data) and ticker intervals, then pass these to the Serve function along with binding addresses.

evio suits projects requiring raw performance for network I/O rather than HTTP semantics. It works well for building custom protocol servers, proxies, and high-performance data services where the overhead of Go's standard networking libraries becomes a bottleneck. The README explicitly notes that evio should not be considered a drop-in replacement for the standard net or net/http packages, positioning it as a specialized tool for specific use cases. The framework supports TCP, UDP, and Unix sockets, allows binding to multiple addresses on a single event loop, and includes built-in load balancing options. For systems without epoll or kqueue support, it falls back to simulating events using the net package.

Development activity shows consistent maintenance with regular commits addressing bugs and feature requests. The project maintains a focused scope, resisting scope creep while responding to user-reported issues. Documentation is kept current alongside code changes, and the maintainer actively engages with users reporting problems or suggesting improvements.