https://github.com/socketry/nio4r
Cross-platform asynchronous I/O primitives for scalable network clients and servers.
https://github.com/socketry/nio4r
Keywords from Contributors
rubygems rack mvc activerecord activejob multithreading json-parser ruby-gem xslt xerces
Last synced: about 17 hours ago
JSON representation
Repository metadata
Cross-platform asynchronous I/O primitives for scalable network clients and servers.
- Host: GitHub
- URL: https://github.com/socketry/nio4r
- Owner: socketry
- License: other
- Created: 2011-12-22T00:48:15.000Z (over 14 years ago)
- Default Branch: main
- Last Pushed: 2025-10-31T07:03:20.000Z (7 months ago)
- Last Synced: 2026-05-22T12:54:49.836Z (2 days ago)
- Language: C
- Homepage:
- Size: 1.04 MB
- Stars: 983
- Watchers: 26
- Forks: 91
- Open Issues: 9
- Releases: 5
-
Metadata Files:
- Readme: readme.md
- License: license.md
readme.md
New I/O for Ruby (nio4r): cross-platform asynchronous I/O primitives for
scalable network clients and servers. Modeled after the Java NIO API, but
simplified for ease-of-use.
nio4r provides an abstract, cross-platform stateful I/O selector API for Ruby.
I/O selectors are the heart of "reactor"-based event loops, and monitor
multiple I/O objects for various types of readiness, e.g. ready for reading or
writing.
Projects using nio4r
- ActionCable: Rails 5 WebSocket protocol, uses nio4r for a WebSocket server
- Celluloid: Actor-based concurrency framework, uses nio4r for async I/O
- Async: Asynchronous I/O framework for Ruby
- Puma: Ruby/Rack web server built for concurrency
Goals
- Expose high-level interfaces for stateful IO selectors
- Keep the API small to maximize both portability and performance across many
different OSes and Ruby VMs - Provide inherently thread-safe facilities for working with IO objects
Supported platforms
- Ruby 2.5
- Ruby 2.6
- Ruby 2.7
- Ruby 3.0
- JRuby
- TruffleRuby
Supported backends
- libev: MRI C extension targeting multiple native IO selector APIs (e.g epoll, kqueue)
- Java NIO: JRuby extension which wraps the Java NIO subsystem
- Pure Ruby:
Kernel.select-based backend that should work on any Ruby interpreter
Documentation
Please see the nio4r wiki
for more detailed documentation and usage notes:
- Getting Started: Introduction to nio4r's components
- Selectors: monitor multiple
IOobjects for readiness events - Monitors: control interests and inspect readiness for specific
IOobjects - Byte Buffers: fixed-size native buffers for high-performance I/O
See also:
Non-goals
nio4r is not a full-featured event framework like EventMachine or Cool.io.
Instead, nio4r is the sort of thing you might write a library like that on
top of. nio4r provides a minimal API such that individual Ruby implementers
may choose to produce optimized versions for their platform, without having
to maintain a large codebase.
Releases
Bump the version first:
bundle exec bake gem:release:version:patch
CRuby
rake clean
rake release
JRuby
You might need to delete Gemfile.lock before trying to bundle install.
# Ensure you have the correct JDK:
pacman -Syu jdk-openjdk
archlinux-java set java-19-openjdk
# Ensure you are using jruby:
chruby jruby
bundle update
# Build the package:
rake clean
rake compile
rake release
Owner metadata
- Name: Socketry
- Login: socketry
- Email: contact@socketry.io
- Kind: organization
- Description: Modern asynchronous and timeout-capable I/O for Ruby.
- Website: https://socketry.io
- Location:
- Twitter: ioquatix
- Company:
- Icon url: https://avatars.githubusercontent.com/u/22138037?v=4
- Repositories: 149
- Last ynced at: 2025-10-21T07:56:11.543Z
- Profile URL: https://github.com/socketry
GitHub Events
Total
- Pull request event: 1
- Fork event: 3
- Issues event: 8
- Watch event: 16
- Issue comment event: 9
- Push event: 2
Last Year
- Pull request event: 1
- Fork event: 2
- Issues event: 1
- Watch event: 3
Committers metadata
Last synced: 3 days ago
Total Commits: 665
Total Committers: 57
Avg Commits per committer: 11.667
Development Distribution Score (DDS): 0.429
Commits in past year: 3
Committers in past year: 2
Avg Commits per committer in past year: 1.5
Development Distribution Score (DDS) in past year: 0.333
| Name | Commits | |
|---|---|---|
| Tony Arcieri | t****i@g****m | 380 |
| Samuel Williams | s****s@o****z | 111 |
| Olle Jonsson | o****n@g****m | 20 |
| Gregory Longtin | G****s@g****m | 18 |
| Joao Fernandes | j****o@h****o | 10 |
| Thomas Dziedzic | t****0@g****m | 9 |
| Boaz Segev | bo@b****m | 8 |
| Logan Bowers | l****n@d****m | 8 |
| Tiago Cardoso | t****o@r****m | 7 |
| Pedro Paiva | p****a@g****m | 7 |
| Omer Katz | o****w@g****m | 6 |
| Jun Aruga | j****a@r****m | 6 |
| Tiago Cardoso | t****o@s****m | 4 |
| Tiago Cardoso | c****o@h****m | 4 |
| Tim Carey-Smith | t****m@s****n | 4 |
| Upekshe Jayasekera | u****0@g****m | 4 |
| Benoit Daloze | e****p@g****m | 3 |
| Sergey Avseyev | s****v@g****m | 3 |
| Tomoya Ishida | t****n@g****m | 3 |
| Daniel Berger | d****6@g****m | 2 |
| Dirkjan Bussink | d****k@g****m | 2 |
| Hiroshi Shibata | s****i@g****m | 2 |
| Luis Lavena | l****a@g****m | 2 |
| Sadayuki Furuhashi | f****i@u****p | 2 |
| Stephen von Takach | s****e@a****u | 2 |
| Usaku Nakamura | u****a@g****p | 2 |
| Vít Ondruch | v****h@t****z | 2 |
| Pavel Rosický | p****y@e****z | 2 |
| Jesús Burgos Maciá | J****s | 2 |
| Cédric Boutillier | b****l@d****g | 2 |
| and 27 more... | ||
Committer domains:
- headius.com: 1
- futurice.com: 1
- intel.com: 1
- shopify.com: 1
- rapid7.com: 1
- tuneafish.de: 1
- comcard.de: 1
- proton.me: 1
- orien.io: 1
- ecraft.com: 1
- iterate.co.nz: 1
- 163.com: 1
- cse.mrt.ac.lk: 1
- squareup.com: 1
- evilmartians.com: 1
- pega.com: 1
- yandex.ru: 1
- debian.org: 1
- easy.cz: 1
- tiscali.cz: 1
- garbagecollect.jp: 1
- advancedcontrol.com.au: 1
- users.sourceforge.jp: 1
- spork.in: 1
- swisscom.com: 1
- redhat.com: 1
- restorm.com: 1
- datacurrent.com: 1
- bowild.com: 1
- hopin.to: 1
- oriontransfer.co.nz: 1
Issue and Pull Request metadata
Last synced: 22 days ago
Total issues: 65
Total pull requests: 68
Average time to close issues: 7 months
Average time to close pull requests: 30 days
Total issue authors: 50
Total pull request authors: 29
Average comments per issue: 6.2
Average comments per pull request: 2.31
Merged pull request: 56
Bot issues: 0
Bot pull requests: 0
Past year issues: 3
Past year pull requests: 3
Past year average time to close issues: about 15 hours
Past year average time to close pull requests: 1 day
Past year issue authors: 3
Past year pull request authors: 3
Past year average comments per issue: 1.33
Past year average comments per pull request: 0.33
Past year merged pull request: 1
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- ioquatix (9)
- MSP-Greg (4)
- djberg96 (2)
- jasl (2)
- ShockwaveNN (2)
- HoneyryderChuck (2)
- dov (1)
- obfuscoder (1)
- solidiquis (1)
- aogata-inst (1)
- bluz71 (1)
- senolfeldmann (1)
- gregclar (1)
- jsvd (1)
- av-emil (1)
Top Pull Request Authors
- ioquatix (11)
- MSP-Greg (8)
- boazsegev (6)
- mohamedhafez (4)
- Jesus (4)
- ahorek (4)
- jcmfernandes (4)
- voxik (3)
- olleolleolle (3)
- enebo (2)
- jmartin-r7 (1)
- tsimnujhawj (1)
- orhantoy (1)
- iterateNZ (1)
- jaredbeck (1)
Top Issue Labels
- JRuby (1)
Top Pull Request Labels
Package metadata
- Total packages: 17
-
Total downloads:
- rubygems: 1,275,859,919 total
- Total docker downloads: 4,118,773,114
- Total dependent packages: 51 (may contain duplicates)
- Total dependent repositories: 380,002 (may contain duplicates)
- Total versions: 256
- Total maintainers: 3
gem.coop: nio4r
New IO for Ruby
- Homepage: https://github.com/socketry/nio4r
- Documentation: http://www.rubydoc.info/gems/nio4r/
- Licenses: MIT,BSD-2-Clause
- Latest release: 2.7.5 (published 7 months ago)
- Last Synced: 2026-05-20T14:52:18.609Z (4 days ago)
- Versions: 95
- Dependent Packages: 0
- Dependent Repositories: 0
- Downloads: 638,101,006 Total
- Docker Downloads: 2,059,386,557
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 0.012%
- Downloads: 0.037%
- Maintainers (2)
-
Funding:
- https://github.com/sponsors/ioquatix/
rubygems.org: nio4r
New IO for Ruby
- Homepage: https://github.com/socketry/nio4r
- Documentation: http://www.rubydoc.info/gems/nio4r/
- Licenses: MIT,BSD-2-Clause
- Latest release: 2.7.5 (published 7 months ago)
- Last Synced: 2026-05-19T23:00:47.126Z (5 days ago)
- Versions: 95
- Dependent Packages: 51
- Dependent Repositories: 380,002
- Downloads: 637,756,687 Total
- Docker Downloads: 2,059,386,557
-
Rankings:
- Downloads: 0.04%
- Dependent repos count: 0.05%
- Docker downloads count: 0.063%
- Dependent packages count: 0.53%
- Average: 0.903%
- Stargazers count: 1.939%
- Forks count: 2.799%
- Maintainers (2)
-
Funding:
- https://github.com/sponsors/ioquatix/
proxy.golang.org: github.com/socketry/nio4r
- Homepage:
- Documentation: https://pkg.go.dev/github.com/socketry/nio4r#section-documentation
- Licenses: other
- Latest release: v2.7.5+incompatible (published 7 months ago)
- Last Synced: 2026-05-19T03:01:57.046Z (6 days ago)
- Versions: 48
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 9.56%
- Average: 10.169%
- Dependent repos count: 10.779%
gem.coop: ed-precompiled_nio4r
New IO for Ruby
- Homepage: https://github.com/socketry/nio4r
- Documentation: http://www.rubydoc.info/gems/ed-precompiled_nio4r/
- Licenses: MIT,BSD-2-Clause
- Latest release: 2.7.4 (published 7 months ago)
- Last Synced: 2026-05-19T03:01:56.700Z (6 days ago)
- Versions: 3
- Dependent Packages: 0
- Dependent Repositories: 0
- Downloads: 1,113 Total
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Stargazers count: 2.02%
- Forks count: 2.833%
- Average: 20.968%
- Downloads: 99.985%
- Maintainers (1)
-
Funding:
- https://github.com/sponsors/ioquatix/
conda-forge.org: rb-nio4r
- Homepage: https://rubygems.org/gems/nio4r
- Licenses: MIT
- Latest release: 2.5.2 (published over 6 years ago)
- Last Synced: 2026-04-01T01:59:22.251Z (about 2 months ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Stargazers count: 11.834%
- Forks count: 18.837%
- Average: 28.968%
- Dependent repos count: 34.025%
- Dependent packages count: 51.175%
rubygems.org: ed-precompiled_nio4r
New IO for Ruby
- Homepage: https://github.com/socketry/nio4r
- Documentation: http://www.rubydoc.info/gems/ed-precompiled_nio4r/
- Licenses: MIT,BSD-2-Clause
- Latest release: 2.7.4 (published 7 months ago)
- Last Synced: 2026-05-19T03:01:54.619Z (6 days ago)
- Versions: 3
- Dependent Packages: 0
- Dependent Repositories: 0
- Downloads: 1,113 Total
-
Rankings:
- Dependent packages count: 14.23%
- Dependent repos count: 43.588%
- Average: 50.151%
- Downloads: 92.636%
- Maintainers (1)
-
Funding:
- https://github.com/sponsors/ioquatix/
ubuntu-23.04: ruby-nio4r
- Homepage: https://github.com/socketry/nio4r
- Licenses:
- Latest release: 2.5.8-2build2 (published 3 months ago)
- Last Synced: 2026-03-12T13:17:42.821Z (2 months ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
debian-13: ruby-nio4r
- Homepage: https://github.com/socketry/nio4r
- Documentation: https://packages.debian.org/trixie/ruby-nio4r
- Licenses:
- Latest release: 2.7.3-1 (published 3 months ago)
- Last Synced: 2026-03-14T18:10:00.211Z (2 months ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
guix: ruby-nio4r
New I/O for Ruby
- Homepage: https://github.com/socketry/nio4r
- Documentation: https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/ruby-xyz.scm#n14241
- Licenses: expat
- Latest release: 2.7.4 (published 3 months ago)
- Last Synced: 2026-04-27T16:21:16.650Z (27 days ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
ubuntu-24.04: ruby-nio4r
- Homepage: https://github.com/socketry/nio4r
- Licenses:
- Latest release: 2.5.8-4build2 (published 4 months ago)
- Last Synced: 2026-03-05T11:21:59.887Z (3 months ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
debian-11: ruby-nio4r
- Homepage: https://github.com/socketry/nio4r
- Documentation: https://packages.debian.org/bullseye/ruby-nio4r
- Licenses:
- Latest release: 2.3.1-2 (published 3 months ago)
- Last Synced: 2026-03-14T07:16:42.793Z (2 months ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
ubuntu-24.10: ruby-nio4r
- Homepage: https://github.com/socketry/nio4r
- Licenses:
- Latest release: 2.7.3-1build1 (published 4 months ago)
- Last Synced: 2026-03-08T07:36:54.031Z (3 months ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
ubuntu-20.04: ruby-nio4r
- Homepage: https://github.com/socketry/nio4r
- Licenses:
- Latest release: 2.3.1-1build1 (published 3 months ago)
- Last Synced: 2026-03-13T14:24:09.405Z (2 months ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
debian-12: ruby-nio4r
- Homepage: https://github.com/socketry/nio4r
- Documentation: https://packages.debian.org/bookworm/ruby-nio4r
- Licenses:
- Latest release: 2.5.8-3 (published 3 months ago)
- Last Synced: 2026-03-13T23:44:58.344Z (2 months ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
debian-10: ruby-nio4r
- Homepage: https://github.com/socketry/nio4r
- Documentation: https://packages.debian.org/buster/ruby-nio4r
- Licenses:
- Latest release: 2.3.1-1 (published 3 months ago)
- Last Synced: 2026-03-13T19:04:51.892Z (2 months ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
Dependencies
- bundler >= 0 development
- rake >= 0 development
- actions/checkout v3 composite
- ruby/setup-ruby v1 composite
- rake-compiler ~> 1.2 development
- rspec ~> 3.7 development
- rubocop = 0.82.0 development
- bake >= 0
- bake-gem >= 0
- bake-modernize >= 0
- rake >= 0
Score: 33.351515804469315
