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.
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(struct NIO_Selector *loop);
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(struct NIO_Selector *loop);
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
- selector = (struct NIO_Selector *)xmalloc(sizeof(struct NIO_Selector));
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 = Qnil;
133
+ RB_OBJ_WRITE(obj, &selector->ready_array, Qnil);
134
+ return obj;
135
+ }
122
136
 
123
- return Data_Wrap_Struct(klass, NIO_Selector_mark, NIO_Selector_free, selector);
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(struct NIO_Selector *selector)
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(struct NIO_Selector *selector)
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
- Data_Get_Struct(self, struct NIO_Selector, selector);
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
- Data_Get_Struct(self, struct NIO_Selector, selector);
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
- Data_Get_Struct(self, struct NIO_Selector, selector);
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
- Data_Get_Struct(args[0], struct NIO_Selector, selector);
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 = rb_ary_new();
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 = Qnil;
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 = Qnil;
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
- Data_Get_Struct(self, struct NIO_Selector, selector);
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
- Data_Get_Struct(self, struct NIO_Selector, selector);
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
- Data_Get_Struct(self, struct NIO_Selector, selector);
557
+ TypedData_Get_Struct(self, struct NIO_Selector, &NIO_Selector_type, selector);
533
558
 
534
559
  return selector->closed ? Qtrue : Qfalse;
535
560
  }
@@ -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
@@ -1,5 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Released under the MIT License.
4
+ # Copyright, 2011-2018, by Tony Arcieri.
5
+ # Copyright, 2018-2024, by Samuel Williams.
6
+ # Copyright, 2023, by Tsimnuj Hawj.
7
+
3
8
  module NIO
4
- VERSION = "2.5.9"
9
+ VERSION = "2.7.3"
5
10
  end
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
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2023, by Phillip Aldridge.
5
+ # Copyright, 2023, by Samuel Williams.
6
+
7
+ require_relative "nio"
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 Logan Bowers.
5
- Copyright, 2013, by FURUHASHI Sadayuki.
6
- Copyright, 2013, by Stephen von Takach.
7
- Copyright, 2013, by Tim Carey-Smith.
8
- Copyright, 2013, by brainopia.
9
- Copyright, 2013, by Luis Lavena.
10
- Copyright, 2014, by SHIBATA Hiroshi.
11
- Copyright, 2014, by Sergey Avseyev.
12
- Copyright, 2014, by JohnnyT.
13
- Copyright, 2015-2017, by Tiago Cardoso.
14
- Copyright, 2015, by Daniel Berger.
15
- Copyright, 2015, by Upekshe.
16
- Copyright, 2015-2016, by UpeksheJay.
17
- Copyright, 2015, by Vladimir Kochnev.
18
- Copyright, 2016-2018, by Jun Aruga.
19
- Copyright, 2016, by Omer Katz.
20
- Copyright, 2016-2021, by Olle Jonsson.
21
- Copyright, 2017, by usa.
22
- Copyright, 2017, by HoneyryderChuck.
23
- Copyright, 2017, by tompng.
24
- Copyright, 2018-2021, by Samuel Williams.
25
- Copyright, 2019, by Cédric Boutillier.
26
- Copyright, 2019-2020, by MSP-Greg.
27
- Copyright, 2019-2020, by Benoit Daloze.
28
- Copyright, 2019, by Jesús Burgos Maciá.
29
- Copyright, 2019, by Thomas Kuntz.
30
- Copyright, 2019, by Orien Madgwick.
31
- Copyright, 2019, by Thomas Dziedzic.
32
- Copyright, 2019, by Zhang Kang.
33
- Copyright, 2020, by eladeyal-intel.
34
- Copyright, 2020, by Pedro Paiva.
35
- Copyright, 2020, by Bo.
36
- Copyright, 2020, by Charles Oliver Nutter.
37
- Copyright, 2020-2021, by Joao Fernandes.
38
- Copyright, 2021, by Jun Jiang.
39
- Copyright, 2021, by Jeffrey Martin.
40
- Copyright, 2021, by Pavel Lobashov.
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 license. See [ext/libev/LICENSE] for details.
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
+ # ![nio4r](https://raw.github.com/socketry/nio4r/master/logo.png)
2
+
3
+ [![Development Status](https://github.com/socketry/nio4r/workflows/Test/badge.svg)](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.5.9
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
- date: 2023-04-02 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- description: Cross-platform asynchronous I/O primitives for scalable network clients
42
- and servers. Inspired by the Java NIO API, but simplified for ease-of-use.
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
- - ".github/workflows/workflow.yml"
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
- - logo.png
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/master/CHANGES.md
113
- documentation_uri: https://www.rubydoc.info/gems/nio4r/2.5.9
114
- source_code_uri: https://github.com/socketry/nio4r/tree/v2.5.9
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.4.6
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