nio4r 2.5.9 → 2.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +2 -0
- data/{CHANGES.md → changes.md} +29 -0
- data/ext/nio4r/bytebuffer.c +75 -38
- data/ext/nio4r/extconf.rb +15 -0
- data/ext/nio4r/monitor.c +47 -22
- data/ext/nio4r/nio4r.h +1 -5
- data/ext/nio4r/org/nio4r/ByteBuffer.java +1 -1
- data/ext/nio4r/org/nio4r/Monitor.java +2 -2
- data/ext/nio4r/org/nio4r/Selector.java +2 -2
- data/ext/nio4r/selector.c +43 -18
- data/lib/nio/bytebuffer.rb +6 -0
- data/lib/nio/monitor.rb +7 -0
- data/lib/nio/selector.rb +15 -0
- data/lib/nio/version.rb +6 -1
- data/lib/nio.rb +9 -0
- data/lib/nio4r.rb +7 -0
- data/license.md +53 -39
- data/readme.md +91 -0
- data.tar.gz.sig +0 -0
- metadata +94 -74
- metadata.gz.sig +0 -0
- data/.github/workflows/workflow.yml +0 -61
- data/.gitignore +0 -21
- data/.rspec +0 -4
- data/.rubocop.yml +0 -100
- data/Gemfile +0 -17
- data/README.md +0 -99
- data/Rakefile +0 -8
- data/examples/echo_server.rb +0 -47
- data/logo.png +0 -0
- data/nio4r.gemspec +0 -42
- data/rakelib/extension.rake +0 -14
- data/rakelib/rspec.rake +0 -9
- data/rakelib/rubocop.rake +0 -5
- data/spec/nio/acceptables_spec.rb +0 -32
- data/spec/nio/bytebuffer_spec.rb +0 -354
- data/spec/nio/monitor_spec.rb +0 -162
- data/spec/nio/selectables/pipe_spec.rb +0 -47
- data/spec/nio/selectables/ssl_socket_spec.rb +0 -192
- data/spec/nio/selectables/tcp_socket_spec.rb +0 -101
- data/spec/nio/selectables/udp_socket_spec.rb +0 -48
- data/spec/nio/selector_spec.rb +0 -240
- data/spec/spec_helper.rb +0 -17
- data/spec/support/selectable_examples.rb +0 -85
data/ext/nio4r/selector.c
CHANGED
@@ -23,9 +23,10 @@ static VALUE cNIO_Selector = Qnil;
|
|
23
23
|
|
24
24
|
/* Allocator/deallocator */
|
25
25
|
static VALUE NIO_Selector_allocate(VALUE klass);
|
26
|
-
static void NIO_Selector_mark(
|
26
|
+
static void NIO_Selector_mark(void *data);
|
27
27
|
static void NIO_Selector_shutdown(struct NIO_Selector *selector);
|
28
|
-
static void NIO_Selector_free(
|
28
|
+
static void NIO_Selector_free(void *data);
|
29
|
+
static size_t NIO_Selector_memsize(const void *data);
|
29
30
|
|
30
31
|
/* Class methods */
|
31
32
|
static VALUE NIO_Selector_supported_backends(VALUE klass);
|
@@ -83,6 +84,18 @@ void Init_NIO_Selector(void)
|
|
83
84
|
cNIO_Monitor = rb_define_class_under(mNIO, "Monitor", rb_cObject);
|
84
85
|
}
|
85
86
|
|
87
|
+
static const rb_data_type_t NIO_Selector_type = {
|
88
|
+
"NIO::Selector",
|
89
|
+
{
|
90
|
+
NIO_Selector_mark,
|
91
|
+
NIO_Selector_free,
|
92
|
+
NIO_Selector_memsize,
|
93
|
+
},
|
94
|
+
0,
|
95
|
+
0,
|
96
|
+
RUBY_TYPED_WB_PROTECTED // Don't free immediately because of shutdown
|
97
|
+
};
|
98
|
+
|
86
99
|
/* Create the libev event loop and incoming event buffer */
|
87
100
|
static VALUE NIO_Selector_allocate(VALUE klass)
|
88
101
|
{
|
@@ -104,8 +117,7 @@ static VALUE NIO_Selector_allocate(VALUE klass)
|
|
104
117
|
rb_sys_fail("fcntl");
|
105
118
|
}
|
106
119
|
|
107
|
-
|
108
|
-
|
120
|
+
VALUE obj = TypedData_Make_Struct(klass, struct NIO_Selector, &NIO_Selector_type, selector);
|
109
121
|
/* Defer initializing the loop to #initialize */
|
110
122
|
selector->ev_loop = 0;
|
111
123
|
|
@@ -118,14 +130,21 @@ static VALUE NIO_Selector_allocate(VALUE klass)
|
|
118
130
|
selector->wakeup.data = (void *)selector;
|
119
131
|
|
120
132
|
selector->closed = selector->selecting = selector->wakeup_fired = selector->ready_count = 0;
|
121
|
-
selector->ready_array
|
133
|
+
RB_OBJ_WRITE(obj, &selector->ready_array, Qnil);
|
134
|
+
return obj;
|
135
|
+
}
|
122
136
|
|
123
|
-
|
137
|
+
struct NIO_Selector *NIO_Selector_unwrap(VALUE self)
|
138
|
+
{
|
139
|
+
struct NIO_Selector *selector;
|
140
|
+
TypedData_Get_Struct(self, struct NIO_Selector, &NIO_Selector_type, selector);
|
141
|
+
return selector;
|
124
142
|
}
|
125
143
|
|
126
144
|
/* NIO selectors store all Ruby objects in instance variables so mark is a stub */
|
127
|
-
static void NIO_Selector_mark(
|
145
|
+
static void NIO_Selector_mark(void *data)
|
128
146
|
{
|
147
|
+
struct NIO_Selector *selector = (struct NIO_Selector *)data;
|
129
148
|
if (selector->ready_array != Qnil) {
|
130
149
|
rb_gc_mark(selector->ready_array);
|
131
150
|
}
|
@@ -151,12 +170,18 @@ static void NIO_Selector_shutdown(struct NIO_Selector *selector)
|
|
151
170
|
}
|
152
171
|
|
153
172
|
/* Ruby finalizer for selector objects */
|
154
|
-
static void NIO_Selector_free(
|
173
|
+
static void NIO_Selector_free(void *data)
|
155
174
|
{
|
175
|
+
struct NIO_Selector *selector = (struct NIO_Selector *)data;
|
156
176
|
NIO_Selector_shutdown(selector);
|
157
177
|
xfree(selector);
|
158
178
|
}
|
159
179
|
|
180
|
+
static size_t NIO_Selector_memsize(const void *data)
|
181
|
+
{
|
182
|
+
return sizeof(struct NIO_Selector);
|
183
|
+
}
|
184
|
+
|
160
185
|
/* Return an array of symbols for supported backends */
|
161
186
|
static VALUE NIO_Selector_supported_backends(VALUE klass)
|
162
187
|
{
|
@@ -205,7 +230,7 @@ static VALUE NIO_Selector_initialize(int argc, VALUE *argv, VALUE self)
|
|
205
230
|
struct NIO_Selector *selector;
|
206
231
|
unsigned int flags = 0;
|
207
232
|
|
208
|
-
|
233
|
+
TypedData_Get_Struct(self, struct NIO_Selector, &NIO_Selector_type, selector);
|
209
234
|
|
210
235
|
rb_scan_args(argc, argv, "01", &backend);
|
211
236
|
|
@@ -259,7 +284,7 @@ static VALUE NIO_Selector_backend(VALUE self)
|
|
259
284
|
{
|
260
285
|
struct NIO_Selector *selector;
|
261
286
|
|
262
|
-
|
287
|
+
TypedData_Get_Struct(self, struct NIO_Selector, &NIO_Selector_type, selector);
|
263
288
|
if (selector->closed) {
|
264
289
|
rb_raise(rb_eIOError, "selector is closed");
|
265
290
|
}
|
@@ -337,7 +362,7 @@ static VALUE NIO_Selector_register_synchronized(VALUE _args)
|
|
337
362
|
io = args[1];
|
338
363
|
interests = args[2];
|
339
364
|
|
340
|
-
|
365
|
+
TypedData_Get_Struct(self, struct NIO_Selector, &NIO_Selector_type, selector);
|
341
366
|
if (selector->closed) {
|
342
367
|
rb_raise(rb_eIOError, "selector is closed");
|
343
368
|
}
|
@@ -418,14 +443,14 @@ static VALUE NIO_Selector_select_synchronized(VALUE _args)
|
|
418
443
|
|
419
444
|
VALUE *args = (VALUE *)_args;
|
420
445
|
|
421
|
-
|
446
|
+
TypedData_Get_Struct(args[0], struct NIO_Selector, &NIO_Selector_type, selector);
|
422
447
|
|
423
448
|
if (selector->closed) {
|
424
449
|
rb_raise(rb_eIOError, "selector is closed");
|
425
450
|
}
|
426
451
|
|
427
452
|
if (!rb_block_given_p()) {
|
428
|
-
selector->ready_array
|
453
|
+
RB_OBJ_WRITE(args[0], &selector->ready_array, rb_ary_new());
|
429
454
|
}
|
430
455
|
|
431
456
|
ready = NIO_Selector_run(selector, args[1]);
|
@@ -433,7 +458,7 @@ static VALUE NIO_Selector_select_synchronized(VALUE _args)
|
|
433
458
|
/* Timeout */
|
434
459
|
if (ready < 0) {
|
435
460
|
if (!rb_block_given_p()) {
|
436
|
-
selector->ready_array
|
461
|
+
RB_OBJ_WRITE(args[0], &selector->ready_array, Qnil);
|
437
462
|
}
|
438
463
|
|
439
464
|
return Qnil;
|
@@ -443,7 +468,7 @@ static VALUE NIO_Selector_select_synchronized(VALUE _args)
|
|
443
468
|
return INT2NUM(ready);
|
444
469
|
} else {
|
445
470
|
ready_array = selector->ready_array;
|
446
|
-
selector->ready_array
|
471
|
+
RB_OBJ_WRITE(args[0], &selector->ready_array, Qnil);
|
447
472
|
return ready_array;
|
448
473
|
}
|
449
474
|
}
|
@@ -490,7 +515,7 @@ static int NIO_Selector_run(struct NIO_Selector *selector, VALUE timeout)
|
|
490
515
|
static VALUE NIO_Selector_wakeup(VALUE self)
|
491
516
|
{
|
492
517
|
struct NIO_Selector *selector;
|
493
|
-
|
518
|
+
TypedData_Get_Struct(self, struct NIO_Selector, &NIO_Selector_type, selector);
|
494
519
|
|
495
520
|
if (selector->closed) {
|
496
521
|
rb_raise(rb_eIOError, "selector is closed");
|
@@ -512,7 +537,7 @@ static VALUE NIO_Selector_close_synchronized(VALUE self)
|
|
512
537
|
{
|
513
538
|
struct NIO_Selector *selector;
|
514
539
|
|
515
|
-
|
540
|
+
TypedData_Get_Struct(self, struct NIO_Selector, &NIO_Selector_type, selector);
|
516
541
|
|
517
542
|
NIO_Selector_shutdown(selector);
|
518
543
|
|
@@ -529,7 +554,7 @@ static VALUE NIO_Selector_closed_synchronized(VALUE self)
|
|
529
554
|
{
|
530
555
|
struct NIO_Selector *selector;
|
531
556
|
|
532
|
-
|
557
|
+
TypedData_Get_Struct(self, struct NIO_Selector, &NIO_Selector_type, selector);
|
533
558
|
|
534
559
|
return selector->closed ? Qtrue : Qfalse;
|
535
560
|
}
|
data/lib/nio/bytebuffer.rb
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# Released under the MIT License.
|
4
|
+
# Copyright, 2016, by Upekshe Jayasekera.
|
5
|
+
# Copyright, 2016-2017, by Tony Arcieri.
|
6
|
+
# Copyright, 2020, by Thomas Dziedzic.
|
7
|
+
# Copyright, 2023, by Samuel Williams.
|
8
|
+
|
3
9
|
module NIO
|
4
10
|
# Efficient byte buffers for performant I/O operations
|
5
11
|
class ByteBuffer
|
data/lib/nio/monitor.rb
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# Released under the MIT License.
|
4
|
+
# Copyright, 2011-2018, by Tony Arcieri.
|
5
|
+
# Copyright, 2015, by Upekshe Jayasekera.
|
6
|
+
# Copyright, 2015, by Vladimir Kochnev.
|
7
|
+
# Copyright, 2018-2023, by Samuel Williams.
|
8
|
+
# Copyright, 2019-2020, by Gregory Longtin.
|
9
|
+
|
3
10
|
module NIO
|
4
11
|
# Monitors watch IO objects for specific events
|
5
12
|
class Monitor
|
data/lib/nio/selector.rb
CHANGED
@@ -1,5 +1,20 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# Released under the MIT License.
|
4
|
+
# Copyright, 2011-2017, by Tony Arcieri.
|
5
|
+
# Copyright, 2012, by Logan Bowers.
|
6
|
+
# Copyright, 2013, by Sadayuki Furuhashi.
|
7
|
+
# Copyright, 2013, by Stephen von Takach.
|
8
|
+
# Copyright, 2013, by Tim Carey-Smith.
|
9
|
+
# Copyright, 2013, by Ravil Bayramgalin.
|
10
|
+
# Copyright, 2014, by Sergey Avseyev.
|
11
|
+
# Copyright, 2014, by John Thornton.
|
12
|
+
# Copyright, 2015, by Vladimir Kochnev.
|
13
|
+
# Copyright, 2015, by Upekshe Jayasekera.
|
14
|
+
# Copyright, 2019-2020, by Gregory Longtin.
|
15
|
+
# Copyright, 2020-2021, by Joao Fernandes.
|
16
|
+
# Copyright, 2023, by Samuel Williams.
|
17
|
+
|
3
18
|
require "set"
|
4
19
|
|
5
20
|
module NIO
|
data/lib/nio/version.rb
CHANGED
data/lib/nio.rb
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# Released under the MIT License.
|
4
|
+
# Copyright, 2011-2017, by Tony Arcieri.
|
5
|
+
# Copyright, 2013, by Stephen von Takach.
|
6
|
+
# Copyright, 2013, by Per Lundberg.
|
7
|
+
# Copyright, 2014, by Marek Kowalcze.
|
8
|
+
# Copyright, 2016, by Upekshe Jayasekera.
|
9
|
+
# Copyright, 2019-2023, by Samuel Williams.
|
10
|
+
# Copyright, 2021, by Jun Jiang.
|
11
|
+
|
3
12
|
require "socket"
|
4
13
|
require "nio/version"
|
5
14
|
|
data/lib/nio4r.rb
ADDED
data/license.md
CHANGED
@@ -1,43 +1,56 @@
|
|
1
1
|
# MIT License
|
2
2
|
|
3
|
-
Copyright, 2011-2020, by Tony Arcieri.
|
4
|
-
Copyright, 2012, by
|
5
|
-
Copyright,
|
6
|
-
Copyright,
|
7
|
-
Copyright, 2013, by
|
8
|
-
Copyright, 2013, by
|
9
|
-
Copyright, 2013, by
|
10
|
-
Copyright,
|
11
|
-
Copyright,
|
12
|
-
Copyright,
|
13
|
-
Copyright,
|
14
|
-
Copyright,
|
15
|
-
Copyright,
|
16
|
-
Copyright,
|
17
|
-
Copyright,
|
18
|
-
Copyright,
|
19
|
-
Copyright,
|
20
|
-
Copyright,
|
21
|
-
Copyright,
|
22
|
-
Copyright,
|
23
|
-
Copyright,
|
24
|
-
Copyright,
|
25
|
-
Copyright,
|
26
|
-
Copyright,
|
27
|
-
Copyright,
|
28
|
-
Copyright,
|
29
|
-
Copyright,
|
30
|
-
Copyright,
|
31
|
-
Copyright,
|
32
|
-
Copyright,
|
33
|
-
Copyright,
|
34
|
-
Copyright, 2020, by
|
35
|
-
Copyright,
|
36
|
-
Copyright,
|
37
|
-
Copyright,
|
38
|
-
Copyright,
|
39
|
-
Copyright,
|
40
|
-
Copyright,
|
3
|
+
Copyright, 2011-2020, by Tony Arcieri.
|
4
|
+
Copyright, 2012, by Bernd Ahlers.
|
5
|
+
Copyright, 2012, by Logan Bowers.
|
6
|
+
Copyright, 2012, by Dirkjan Bussink.
|
7
|
+
Copyright, 2013, by Sadayuki Furuhashi.
|
8
|
+
Copyright, 2013, by Shannon Skipper.
|
9
|
+
Copyright, 2013, by Stephen von Takach.
|
10
|
+
Copyright, 2013, by Tim Carey-Smith.
|
11
|
+
Copyright, 2013, by Per Lundberg.
|
12
|
+
Copyright, 2013, by Ravil Bayramgalin.
|
13
|
+
Copyright, 2013, by Luis Lavena.
|
14
|
+
Copyright, 2014, by Anatol Pomozov.
|
15
|
+
Copyright, 2014, by Hiroshi Shibata.
|
16
|
+
Copyright, 2014, by Marek Kowalcze.
|
17
|
+
Copyright, 2014, by Sergey Avseyev.
|
18
|
+
Copyright, 2014, by John Thornton.
|
19
|
+
Copyright, 2015-2017, by Tiago Cardoso.
|
20
|
+
Copyright, 2015, by Daniel Berger.
|
21
|
+
Copyright, 2015-2016, by Upekshe Jayasekera.
|
22
|
+
Copyright, 2015, by Vladimir Kochnev.
|
23
|
+
Copyright, 2016-2018, by Jun Aruga.
|
24
|
+
Copyright, 2016, by Omer Katz.
|
25
|
+
Copyright, 2016, by Denis Washington.
|
26
|
+
Copyright, 2016-2021, by Olle Jonsson.
|
27
|
+
Copyright, 2017, by Tao Luo.
|
28
|
+
Copyright, 2017, by Usaku Nakamura.
|
29
|
+
Copyright, 2017-2022, by Gregory Longtin.
|
30
|
+
Copyright, 2017, by Lars Kanis.
|
31
|
+
Copyright, 2017, by Tomoya Ishida.
|
32
|
+
Copyright, 2018-2024, by Samuel Williams.
|
33
|
+
Copyright, 2019, by Cédric Boutillier.
|
34
|
+
Copyright, 2019-2020, by Benoit Daloze.
|
35
|
+
Copyright, 2019, by Jesús Burgos Maciá.
|
36
|
+
Copyright, 2019, by Thomas Kuntz.
|
37
|
+
Copyright, 2019, by Orien Madgwick.
|
38
|
+
Copyright, 2019, by Zhang Kang.
|
39
|
+
Copyright, 2020, by Thomas Dziedzic.
|
40
|
+
Copyright, 2020, by Elad Eyal.
|
41
|
+
Copyright, 2020, by Pedro Paiva.
|
42
|
+
Copyright, 2020, by Boaz Segev.
|
43
|
+
Copyright, 2020, by Charles Oliver Nutter.
|
44
|
+
Copyright, 2020-2021, by Joao Fernandes.
|
45
|
+
Copyright, 2021, by Jun Jiang.
|
46
|
+
Copyright, 2021, by Pavel Lobashov.
|
47
|
+
Copyright, 2021, by Jeffrey Martin.
|
48
|
+
Copyright, 2023-2024, by Pavel Rosický.
|
49
|
+
Copyright, 2023, by Tsimnuj Hawj.
|
50
|
+
Copyright, 2023, by Phillip Aldridge.
|
51
|
+
Copyright, 2023, by Maxime Demolin.
|
52
|
+
Copyright, 2023-2024, by Vít Ondruch.
|
53
|
+
Copyright, 2023, by Jean Boussier.
|
41
54
|
|
42
55
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
43
56
|
of this software and associated documentation files (the "Software"), to deal
|
@@ -59,7 +72,8 @@ SOFTWARE.
|
|
59
72
|
|
60
73
|
## libev
|
61
74
|
|
62
|
-
Released under the BSD
|
75
|
+
Released under the BSD-2-Clause OR GPL-2.0-or-later license.
|
76
|
+
See [ext/libev/LICENSE] for details.
|
63
77
|
|
64
78
|
Copyright, 2007-2019, by Marc Alexander Lehmann.
|
65
79
|
|
data/readme.md
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
# 
|
2
|
+
|
3
|
+
[](https://github.com/socketry/nio4r/actions?workflow=Test)
|
4
|
+
|
5
|
+
**New I/O for Ruby (nio4r)**: cross-platform asynchronous I/O primitives for
|
6
|
+
scalable network clients and servers. Modeled after the Java NIO API, but
|
7
|
+
simplified for ease-of-use.
|
8
|
+
|
9
|
+
**nio4r** provides an abstract, cross-platform stateful I/O selector API for Ruby.
|
10
|
+
I/O selectors are the heart of "reactor"-based event loops, and monitor
|
11
|
+
multiple I/O objects for various types of readiness, e.g. ready for reading or
|
12
|
+
writing.
|
13
|
+
|
14
|
+
## Projects using nio4r
|
15
|
+
|
16
|
+
- [ActionCable](https://rubygems.org/gems/actioncable): Rails 5 WebSocket protocol, uses nio4r for a WebSocket server
|
17
|
+
- [Celluloid](https://github.com/celluloid/celluloid-io): Actor-based concurrency framework, uses nio4r for async I/O
|
18
|
+
- [Async](https://github.com/socketry/async): Asynchronous I/O framework for Ruby
|
19
|
+
- [Puma](https://github.com/puma/puma): Ruby/Rack web server built for concurrency
|
20
|
+
|
21
|
+
## Goals
|
22
|
+
|
23
|
+
- Expose high-level interfaces for stateful IO selectors
|
24
|
+
- Keep the API small to maximize both portability and performance across many
|
25
|
+
different OSes and Ruby VMs
|
26
|
+
- Provide inherently thread-safe facilities for working with IO objects
|
27
|
+
|
28
|
+
## Supported platforms
|
29
|
+
|
30
|
+
- Ruby 2.5
|
31
|
+
- Ruby 2.6
|
32
|
+
- Ruby 2.7
|
33
|
+
- Ruby 3.0
|
34
|
+
- [JRuby](https://github.com/jruby/jruby)
|
35
|
+
- [TruffleRuby](https://github.com/oracle/truffleruby)
|
36
|
+
|
37
|
+
## Supported backends
|
38
|
+
|
39
|
+
- **libev**: MRI C extension targeting multiple native IO selector APIs (e.g epoll, kqueue)
|
40
|
+
- **Java NIO**: JRuby extension which wraps the Java NIO subsystem
|
41
|
+
- **Pure Ruby**: `Kernel.select`-based backend that should work on any Ruby interpreter
|
42
|
+
|
43
|
+
## Documentation
|
44
|
+
|
45
|
+
[Please see the nio4r wiki](https://github.com/socketry/nio4r/wiki)
|
46
|
+
for more detailed documentation and usage notes:
|
47
|
+
|
48
|
+
- [Getting Started](https://github.com/socketry/nio4r/wiki/Getting-Started): Introduction to nio4r's components
|
49
|
+
- [Selectors](https://github.com/socketry/nio4r/wiki/Selectors): monitor multiple `IO` objects for readiness events
|
50
|
+
- [Monitors](https://github.com/socketry/nio4r/wiki/Monitors): control interests and inspect readiness for specific `IO` objects
|
51
|
+
- [Byte Buffers](https://github.com/socketry/nio4r/wiki/Byte-Buffers): fixed-size native buffers for high-performance I/O
|
52
|
+
|
53
|
+
See also:
|
54
|
+
|
55
|
+
- [YARD API documentation](http://www.rubydoc.info/gems/nio4r/frames)
|
56
|
+
|
57
|
+
## Non-goals
|
58
|
+
|
59
|
+
**nio4r** is not a full-featured event framework like [EventMachine](https://github.com/eventmachine/eventmachine) or [Cool.io](https://coolio.github.io/).
|
60
|
+
Instead, nio4r is the sort of thing you might write a library like that on
|
61
|
+
top of. nio4r provides a minimal API such that individual Ruby implementers
|
62
|
+
may choose to produce optimized versions for their platform, without having
|
63
|
+
to maintain a large codebase.
|
64
|
+
|
65
|
+
## Releases
|
66
|
+
|
67
|
+
Bump the version first:
|
68
|
+
|
69
|
+
bundle exec bake gem:release:version:patch
|
70
|
+
|
71
|
+
### CRuby
|
72
|
+
|
73
|
+
rake clean
|
74
|
+
rake release
|
75
|
+
|
76
|
+
### JRuby
|
77
|
+
|
78
|
+
You might need to delete `Gemfile.lock` before trying to `bundle install`.
|
79
|
+
|
80
|
+
# Ensure you have the correct JDK:
|
81
|
+
pacman -Syu jdk-openjdk
|
82
|
+
archlinux-java set java-19-openjdk
|
83
|
+
|
84
|
+
# Ensure you are using jruby:
|
85
|
+
chruby jruby
|
86
|
+
bundle update
|
87
|
+
|
88
|
+
# Build the package:
|
89
|
+
rake clean
|
90
|
+
rake compile
|
91
|
+
rake release
|
data.tar.gz.sig
ADDED
Binary file
|
metadata
CHANGED
@@ -1,61 +1,102 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nio4r
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.7.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tony Arcieri
|
8
|
+
- Samuel Williams
|
9
|
+
- Olle Jonsson
|
10
|
+
- Gregory Longtin
|
11
|
+
- Tiago Cardoso
|
12
|
+
- Joao Fernandes
|
13
|
+
- Thomas Dziedzic
|
14
|
+
- Boaz Segev
|
15
|
+
- Logan Bowers
|
16
|
+
- Pedro Paiva
|
17
|
+
- Jun Aruga
|
18
|
+
- Omer Katz
|
19
|
+
- Upekshe Jayasekera
|
20
|
+
- Tim Carey-Smith
|
21
|
+
- Benoit Daloze
|
22
|
+
- Sergey Avseyev
|
23
|
+
- Tomoya Ishida
|
24
|
+
- Usaku Nakamura
|
25
|
+
- Cédric Boutillier
|
26
|
+
- Daniel Berger
|
27
|
+
- Dirkjan Bussink
|
28
|
+
- Hiroshi Shibata
|
29
|
+
- Jesús Burgos Maciá
|
30
|
+
- Luis Lavena
|
31
|
+
- Pavel Rosický
|
32
|
+
- Sadayuki Furuhashi
|
33
|
+
- Stephen von Takach
|
34
|
+
- Vladimir Kochnev
|
35
|
+
- Vít Ondruch
|
36
|
+
- Anatol Pomozov
|
37
|
+
- Bernd Ahlers
|
38
|
+
- Charles Oliver Nutter
|
39
|
+
- Denis Washington
|
40
|
+
- Elad Eyal
|
41
|
+
- Jean byroot Boussier
|
42
|
+
- Jeffrey Martin
|
43
|
+
- John Thornton
|
44
|
+
- Jun Jiang
|
45
|
+
- Lars Kanis
|
46
|
+
- Marek Kowalcze
|
47
|
+
- Maxime Demolin
|
48
|
+
- Orien Madgwick
|
49
|
+
- Pavel Lobashov
|
50
|
+
- Per Lundberg
|
51
|
+
- Phillip Aldridge
|
52
|
+
- Ravil Bayramgalin
|
53
|
+
- Shannon Skipper
|
54
|
+
- Tao Luo
|
55
|
+
- Thomas Kuntz
|
56
|
+
- Tsimnuj Hawj
|
57
|
+
- Zhang Kang
|
8
58
|
autorequire:
|
9
59
|
bindir: bin
|
10
|
-
cert_chain:
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
60
|
+
cert_chain:
|
61
|
+
- |
|
62
|
+
-----BEGIN CERTIFICATE-----
|
63
|
+
MIIE2DCCA0CgAwIBAgIBATANBgkqhkiG9w0BAQsFADBhMRgwFgYDVQQDDA9zYW11
|
64
|
+
ZWwud2lsbGlhbXMxHTAbBgoJkiaJk/IsZAEZFg1vcmlvbnRyYW5zZmVyMRIwEAYK
|
65
|
+
CZImiZPyLGQBGRYCY28xEjAQBgoJkiaJk/IsZAEZFgJuejAeFw0yMjA4MDYwNDUz
|
66
|
+
MjRaFw0zMjA4MDMwNDUzMjRaMGExGDAWBgNVBAMMD3NhbXVlbC53aWxsaWFtczEd
|
67
|
+
MBsGCgmSJomT8ixkARkWDW9yaW9udHJhbnNmZXIxEjAQBgoJkiaJk/IsZAEZFgJj
|
68
|
+
bzESMBAGCgmSJomT8ixkARkWAm56MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB
|
69
|
+
igKCAYEAomvSopQXQ24+9DBB6I6jxRI2auu3VVb4nOjmmHq7XWM4u3HL+pni63X2
|
70
|
+
9qZdoq9xt7H+RPbwL28LDpDNflYQXoOhoVhQ37Pjn9YDjl8/4/9xa9+NUpl9XDIW
|
71
|
+
sGkaOY0eqsQm1pEWkHJr3zn/fxoKPZPfaJOglovdxf7dgsHz67Xgd/ka+Wo1YqoE
|
72
|
+
e5AUKRwUuvaUaumAKgPH+4E4oiLXI4T1Ff5Q7xxv6yXvHuYtlMHhYfgNn8iiW8WN
|
73
|
+
XibYXPNP7NtieSQqwR/xM6IRSoyXKuS+ZNGDPUUGk8RoiV/xvVN4LrVm9upSc0ss
|
74
|
+
RZ6qwOQmXCo/lLcDUxJAgG95cPw//sI00tZan75VgsGzSWAOdjQpFM0l4dxvKwHn
|
75
|
+
tUeT3ZsAgt0JnGqNm2Bkz81kG4A2hSyFZTFA8vZGhp+hz+8Q573tAR89y9YJBdYM
|
76
|
+
zp0FM4zwMNEUwgfRzv1tEVVUEXmoFCyhzonUUw4nE4CFu/sE3ffhjKcXcY//qiSW
|
77
|
+
xm4erY3XAgMBAAGjgZowgZcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0O
|
78
|
+
BBYEFO9t7XWuFf2SKLmuijgqR4sGDlRsMC4GA1UdEQQnMCWBI3NhbXVlbC53aWxs
|
79
|
+
aWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MC4GA1UdEgQnMCWBI3NhbXVlbC53aWxs
|
80
|
+
aWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MA0GCSqGSIb3DQEBCwUAA4IBgQB5sxkE
|
81
|
+
cBsSYwK6fYpM+hA5B5yZY2+L0Z+27jF1pWGgbhPH8/FjjBLVn+VFok3CDpRqwXCl
|
82
|
+
xCO40JEkKdznNy2avOMra6PFiQyOE74kCtv7P+Fdc+FhgqI5lMon6tt9rNeXmnW/
|
83
|
+
c1NaMRdxy999hmRGzUSFjozcCwxpy/LwabxtdXwXgSay4mQ32EDjqR1TixS1+smp
|
84
|
+
8C/NCWgpIfzpHGJsjvmH2wAfKtTTqB9CVKLCWEnCHyCaRVuKkrKjqhYCdmMBqCws
|
85
|
+
JkxfQWC+jBVeG9ZtPhQgZpfhvh+6hMhraUYRQ6XGyvBqEUe+yo6DKIT3MtGE2+CP
|
86
|
+
eX9i9ZWBydWb8/rvmwmX2kkcBbX0hZS1rcR593hGc61JR6lvkGYQ2MYskBveyaxt
|
87
|
+
Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
|
88
|
+
voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
|
89
|
+
-----END CERTIFICATE-----
|
90
|
+
date: 2024-05-07 00:00:00.000000000 Z
|
91
|
+
dependencies: []
|
92
|
+
description:
|
43
93
|
email:
|
44
|
-
- bascule@gmail.com
|
45
94
|
executables: []
|
46
95
|
extensions:
|
47
96
|
- ext/nio4r/extconf.rb
|
48
97
|
extra_rdoc_files: []
|
49
98
|
files:
|
50
|
-
-
|
51
|
-
- ".gitignore"
|
52
|
-
- ".rspec"
|
53
|
-
- ".rubocop.yml"
|
54
|
-
- CHANGES.md
|
55
|
-
- Gemfile
|
56
|
-
- README.md
|
57
|
-
- Rakefile
|
58
|
-
- examples/echo_server.rb
|
99
|
+
- changes.md
|
59
100
|
- ext/libev/Changes
|
60
101
|
- ext/libev/LICENSE
|
61
102
|
- ext/libev/README
|
@@ -88,30 +129,19 @@ files:
|
|
88
129
|
- lib/nio/monitor.rb
|
89
130
|
- lib/nio/selector.rb
|
90
131
|
- lib/nio/version.rb
|
132
|
+
- lib/nio4r.rb
|
91
133
|
- license.md
|
92
|
-
-
|
93
|
-
- nio4r.gemspec
|
94
|
-
- rakelib/extension.rake
|
95
|
-
- rakelib/rspec.rake
|
96
|
-
- rakelib/rubocop.rake
|
97
|
-
- spec/nio/acceptables_spec.rb
|
98
|
-
- spec/nio/bytebuffer_spec.rb
|
99
|
-
- spec/nio/monitor_spec.rb
|
100
|
-
- spec/nio/selectables/pipe_spec.rb
|
101
|
-
- spec/nio/selectables/ssl_socket_spec.rb
|
102
|
-
- spec/nio/selectables/tcp_socket_spec.rb
|
103
|
-
- spec/nio/selectables/udp_socket_spec.rb
|
104
|
-
- spec/nio/selector_spec.rb
|
105
|
-
- spec/spec_helper.rb
|
106
|
-
- spec/support/selectable_examples.rb
|
134
|
+
- readme.md
|
107
135
|
homepage: https://github.com/socketry/nio4r
|
108
136
|
licenses:
|
109
137
|
- MIT
|
138
|
+
- BSD-2-Clause
|
110
139
|
metadata:
|
111
140
|
bug_tracker_uri: https://github.com/socketry/nio4r/issues
|
112
|
-
changelog_uri: https://github.com/socketry/nio4r/blob/
|
113
|
-
documentation_uri: https://www.rubydoc.info/gems/nio4r
|
114
|
-
|
141
|
+
changelog_uri: https://github.com/socketry/nio4r/blob/main/changes.md
|
142
|
+
documentation_uri: https://www.rubydoc.info/gems/nio4r
|
143
|
+
funding_uri: https://github.com/sponsors/ioquatix/
|
144
|
+
source_code_uri: https://github.com/socketry/nio4r.git
|
115
145
|
wiki_uri: https://github.com/socketry/nio4r/wiki
|
116
146
|
post_install_message:
|
117
147
|
rdoc_options: []
|
@@ -128,18 +158,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
158
|
- !ruby/object:Gem::Version
|
129
159
|
version: '0'
|
130
160
|
requirements: []
|
131
|
-
rubygems_version: 3.
|
161
|
+
rubygems_version: 3.5.9
|
132
162
|
signing_key:
|
133
163
|
specification_version: 4
|
134
164
|
summary: New IO for Ruby
|
135
|
-
test_files:
|
136
|
-
- spec/nio/acceptables_spec.rb
|
137
|
-
- spec/nio/bytebuffer_spec.rb
|
138
|
-
- spec/nio/monitor_spec.rb
|
139
|
-
- spec/nio/selectables/pipe_spec.rb
|
140
|
-
- spec/nio/selectables/ssl_socket_spec.rb
|
141
|
-
- spec/nio/selectables/tcp_socket_spec.rb
|
142
|
-
- spec/nio/selectables/udp_socket_spec.rb
|
143
|
-
- spec/nio/selector_spec.rb
|
144
|
-
- spec/spec_helper.rb
|
145
|
-
- spec/support/selectable_examples.rb
|
165
|
+
test_files: []
|
metadata.gz.sig
ADDED
Binary file
|