async 2.10.2 → 2.12.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4ced20437db1c26026bbe526bc5c69c4ef467bf89fa7784eac27e5a4a0ad3d3a
4
- data.tar.gz: 34724c6fcc75517b86a8875482f744cc7cfe83bce1fe87fdde28cf2851b46b0f
3
+ metadata.gz: 8d13c552e4e34cd2b67661c228e727df5d3c7da697e7f59f369e02af5c76e513
4
+ data.tar.gz: 954607e3c71338fb54fc59d627211a722870a5f8f934c84c113735cf24c24195
5
5
  SHA512:
6
- metadata.gz: 35919d63868bf8c0524807e448415224438c25bc8b87824bfec34d613f8febd9459c4367df5c9a3275cf5dc59e78769c7ba420e2492c3d172f2ec6e2015ee6a6
7
- data.tar.gz: f707fb4cca45592ac4d0ba4f2e41a25f80c22db5a452e0710a106095ca2d30a32753e652a0a46a1ebbd2bc1b0a3ee37917927efdff4ea2405c3fc0ec1b31ba24
6
+ metadata.gz: 392264144eed819eb93c49e53d2f0de6771cb966314a4e901223138af848fe550be76dd55bcc267db36d2593893e8421193568704987bcaab241171e13003e4c
7
+ data.tar.gz: 85d97a0013909d6b1be52f73b49fcf3c7610ac59f43ab3794b0959d0266a2c283ea220fb6549fadb13e03be84abc5683988e15b07e607aefc24cca81eeab2479
checksums.yaml.gz.sig CHANGED
@@ -1,4 +1,3 @@
1
- bcy@�MD5axz���mO���-Z��
2
- HV��&ꗾ8M����1
3
- Dq�c3j�����e�k�5Ș?��ǡuX��.]�hN�e��`�4�W-
4
- Z�y�RC������B���s��2�"�Y0{�f�}n6m�Hg����Y�Dm6�+�]���49��f�蹕-��EG�1 �$3lX�J
1
+ s߃�����e��He���=�ⷖ�3\� C�<ψ �.ﳃQk: u��fA�Ѵ燱U>7�槟cr׮��1�w��|����㌫��� !�a�?(B�ɀ!~�����ȩ~�a|��,��A2=J�\�K/��Љ�[=�W�#�b��Q`�<�2'tuxA��i��ƃ�Y<9C S:}�47 1
2
+ ��Bj Qܦ�z0[n&moJ����*�$2T��CPxXYoQwpl��������7�jr8V���(\�||�ӷ�3[�#� t~>�������'s�f�.�S��B��yV{V�6{���\��䯑SI��2�x"���.��
3
+ �H� ��gu g��wJWY|���؜�dc�-�Ʀx%.m!k�L
data/lib/async/barrier.md CHANGED
@@ -9,7 +9,7 @@ require 'async/barrier'
9
9
 
10
10
  barrier = Async::Barrier.new
11
11
  Sync do
12
- Console.logger.info("Barrier Example: sleep sort.")
12
+ Console.info("Barrier Example: sleep sort.")
13
13
 
14
14
  # Generate an array of 10 numbers:
15
15
  numbers = 10.times.map{rand(10)}
@@ -26,7 +26,7 @@ Sync do
26
26
  # Wait for all the numbers to be sorted:
27
27
  barrier.wait
28
28
 
29
- Console.logger.info("Sorted", sorted)
29
+ Console.info("Sorted", sorted)
30
30
  ensure
31
31
  # Ensure all the tasks are stopped when we exit:
32
32
  barrier.stop
@@ -9,14 +9,14 @@ Sync do
9
9
  condition = Async::Condition.new
10
10
 
11
11
  Async do
12
- Console.logger.info "Waiting for condition..."
12
+ Console.info "Waiting for condition..."
13
13
  value = condition.wait
14
- Console.logger.info "Condition was signalled: #{value}"
14
+ Console.info "Condition was signalled: #{value}"
15
15
  end
16
16
 
17
17
  Async do |task|
18
18
  task.sleep(1)
19
- Console.logger.info "Signalling condition..."
19
+ Console.info "Signalling condition..."
20
20
  condition.signal("Hello World")
21
21
  end
22
22
  end
@@ -11,7 +11,6 @@ require_relative 'task'
11
11
  require 'io/event'
12
12
 
13
13
  require 'console'
14
- require 'timers'
15
14
  require 'resolv'
16
15
 
17
16
  module Async
@@ -40,7 +39,7 @@ module Async
40
39
  @busy_time = 0.0
41
40
  @idle_time = 0.0
42
41
 
43
- @timers = ::Timers::Group.new
42
+ @timers = ::IO::Event::Timers.new
44
43
  end
45
44
 
46
45
  # Compute the scheduler load according to the busy and idle times that are updated by the run loop.
@@ -165,7 +164,7 @@ module Async
165
164
  @blocked -= 1
166
165
  end
167
166
  ensure
168
- timer&.cancel
167
+ timer&.cancel!
169
168
  end
170
169
 
171
170
  # @asynchronous May be called from any thread.
@@ -225,7 +224,7 @@ module Async
225
224
 
226
225
  return @selector.io_wait(fiber, io, events)
227
226
  ensure
228
- timer&.cancel
227
+ timer&.cancel!
229
228
  end
230
229
 
231
230
  if ::IO::Event::Support.buffer?
@@ -240,7 +239,7 @@ module Async
240
239
 
241
240
  @selector.io_read(fiber, io, buffer, length, offset)
242
241
  ensure
243
- timer&.cancel
242
+ timer&.cancel!
244
243
  end
245
244
 
246
245
  if RUBY_ENGINE != "ruby" || RUBY_VERSION >= "3.3.1"
@@ -255,7 +254,7 @@ module Async
255
254
 
256
255
  @selector.io_write(fiber, io, buffer, length, offset)
257
256
  ensure
258
- timer&.cancel
257
+ timer&.cancel!
259
258
  end
260
259
  end
261
260
  end
@@ -369,7 +368,7 @@ module Async
369
368
 
370
369
  return initial_task
371
370
  ensure
372
- Console.logger.debug(self) {"Exiting run-loop because #{$! ? $! : 'finished'}."}
371
+ Console.debug(self) {"Exiting run-loop because #{$! ? $! : 'finished'}."}
373
372
  end
374
373
 
375
374
  # Start an asynchronous task within the specified reactor. The task will be
@@ -395,7 +394,7 @@ module Async
395
394
  # - Avoid scheduler overhead if no blocking operation is performed.
396
395
  task.run(*arguments)
397
396
 
398
- # Console.logger.debug "Initial execution of task #{fiber} complete (#{result} -> #{fiber.alive?})..."
397
+ # Console.debug "Initial execution of task #{fiber} complete (#{result} -> #{fiber.alive?})..."
399
398
  return task
400
399
  end
401
400
 
@@ -416,7 +415,7 @@ module Async
416
415
 
417
416
  yield timer
418
417
  ensure
419
- timer.cancel if timer
418
+ timer&.cancel!
420
419
  end
421
420
 
422
421
  def timeout_after(duration, exception, message, &block)
@@ -17,9 +17,9 @@ Sync do
17
17
  # Search for the terms:
18
18
  terms.each do |term|
19
19
  semaphore.async do |task|
20
- Console.logger.info("Searching for #{term}...")
20
+ Console.info("Searching for #{term}...")
21
21
  response = Net::HTTP.get(URI "https://www.google.com/search?q=#{term}")
22
- Console.logger.info("Got response #{response.size} bytes.")
22
+ Console.info("Got response #{response.size} bytes.")
23
23
  end
24
24
  end
25
25
  end
data/lib/async/task.rb CHANGED
@@ -8,6 +8,7 @@
8
8
  # Copyright, 2023, by Math Ieu.
9
9
 
10
10
  require 'fiber'
11
+ require 'console/event/failure'
11
12
 
12
13
  require_relative 'node'
13
14
  require_relative 'condition'
@@ -335,15 +336,15 @@ module Async
335
336
  raise exception
336
337
  elsif @finished.nil?
337
338
  # If no one has called wait, we log this as a warning:
338
- Console.logger.warn(self, "Task may have ended with unhandled exception.", exception)
339
+ Console::Event::Failure.for(exception).emit(self, "Task may have ended with unhandled exception.", severity: :warn)
339
340
  else
340
- Console.logger.debug(self, exception)
341
+ Console::Event::Failure.for(exception).emit(self, severity: :debug)
341
342
  end
342
343
  end
343
344
  end
344
345
 
345
346
  def stopped!
346
- # Console.logger.info(self, status:) {"Task #{self} was stopped with #{@children&.size.inspect} children!"}
347
+ # Console.info(self, status:) {"Task #{self} was stopped with #{@children&.size.inspect} children!"}
347
348
  @status = :stopped
348
349
 
349
350
  stopped = false
@@ -374,7 +375,7 @@ module Async
374
375
 
375
376
  begin
376
377
  completed!(yield)
377
- # Console.logger.debug(self) {"Task was completed with #{@children.size} children!"}
378
+ # Console.debug(self) {"Task was completed with #{@children.size} children!"}
378
379
  rescue Stop
379
380
  stopped!
380
381
  rescue StandardError => error
@@ -382,7 +383,7 @@ module Async
382
383
  rescue Exception => exception
383
384
  failed!(exception, true)
384
385
  ensure
385
- # Console.logger.info(self) {"Task ensure $! = #{$!} with #{@children&.size.inspect} children!"}
386
+ # Console.info(self) {"Task ensure $! = #{$!} with #{@children&.size.inspect} children!"}
386
387
  finish!
387
388
  end
388
389
  end
data/lib/async/version.rb CHANGED
@@ -4,5 +4,5 @@
4
4
  # Copyright, 2017-2024, by Samuel Williams.
5
5
 
6
6
  module Async
7
- VERSION = "2.10.2"
7
+ VERSION = "2.12.0"
8
8
  end
data/lib/async/waiter.md CHANGED
@@ -38,7 +38,7 @@ Sync do
38
38
  # Stop all tasks which we don't care about:
39
39
  barrier.stop
40
40
 
41
- Console.logger.info("Smallest", numbers)
41
+ Console.info("Smallest", numbers)
42
42
  end
43
43
  ~~~
44
44
 
data/readme.md CHANGED
@@ -1,7 +1,6 @@
1
1
  # ![Async](logo.svg)
2
2
 
3
- Async is a composable asynchronous I/O framework for Ruby based on [io-event](https://github.com/socketry/io-event) and
4
- [timers](https://github.com/socketry/timers).
3
+ Async is a composable asynchronous I/O framework for Ruby based on [io-event](https://github.com/socketry/io-event).
5
4
 
6
5
  > "Lately I've been looking into `async`, as one of my projects –
7
6
  > [tus-ruby-server](https://github.com/janko/tus-ruby-server) – would really benefit from non-blocking I/O. It's really
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: async
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.10.2
4
+ version: 2.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
@@ -62,7 +62,7 @@ cert_chain:
62
62
  Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
63
63
  voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
64
64
  -----END CERTIFICATE-----
65
- date: 2024-04-15 00:00:00.000000000 Z
65
+ date: 2024-06-04 00:00:00.000000000 Z
66
66
  dependencies:
67
67
  - !ruby/object:Gem::Dependency
68
68
  name: console
@@ -70,14 +70,20 @@ dependencies:
70
70
  requirements:
71
71
  - - "~>"
72
72
  - !ruby/object:Gem::Version
73
- version: '1.10'
73
+ version: '1.25'
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: 1.25.2
74
77
  type: :runtime
75
78
  prerelease: false
76
79
  version_requirements: !ruby/object:Gem::Requirement
77
80
  requirements:
78
81
  - - "~>"
79
82
  - !ruby/object:Gem::Version
80
- version: '1.10'
83
+ version: '1.25'
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: 1.25.2
81
87
  - !ruby/object:Gem::Dependency
82
88
  name: fiber-annotation
83
89
  requirement: !ruby/object:Gem::Requirement
@@ -98,34 +104,14 @@ dependencies:
98
104
  requirements:
99
105
  - - "~>"
100
106
  - !ruby/object:Gem::Version
101
- version: '1.5'
102
- - - ">="
103
- - !ruby/object:Gem::Version
104
- version: 1.5.1
105
- type: :runtime
106
- prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
108
- requirements:
109
- - - "~>"
110
- - !ruby/object:Gem::Version
111
- version: '1.5'
112
- - - ">="
113
- - !ruby/object:Gem::Version
114
- version: 1.5.1
115
- - !ruby/object:Gem::Dependency
116
- name: timers
117
- requirement: !ruby/object:Gem::Requirement
118
- requirements:
119
- - - "~>"
120
- - !ruby/object:Gem::Version
121
- version: '4.1'
107
+ version: '1.6'
122
108
  type: :runtime
123
109
  prerelease: false
124
110
  version_requirements: !ruby/object:Gem::Requirement
125
111
  requirements:
126
112
  - - "~>"
127
113
  - !ruby/object:Gem::Version
128
- version: '4.1'
114
+ version: '1.6'
129
115
  description:
130
116
  email:
131
117
  executables: []
metadata.gz.sig CHANGED
@@ -1,2 +1,3 @@
1
- H__w?B6�œ�ݦ�V����z���W6�e������ӎ:#��.����!,,L�[��Z6a�e�Q Q+��hk�0P��:���jp�''�_t9�M,��H��;��Vş �#����vO4=¶#{[枊6���L7-��HD�� ����ko�J���A��&����;Ff���6��(f�M�V���{��m��U�;x�Vl��4ڍ�e@\21�}��J��� ��`@Xt)�:����,�
2
- �+��L�R{~ˠ���e[��I��9ZU��%W!�)��Ȱ� %z���oƝ��k4���HEŎoWfaJh׬���+HuAh'w@�����D�'Ȟd���j�S+��R`�b�ߕ]3�1�a�oh�
1
+ ^q*(�(���x$&��6���:P��,ÀYV4���n@ Lo9*Iy#I`c|73
2
+ Dž@{�����޴,t$)�*�_���x�L�х�~Յ�LM���ޝ�9���eV����hi8u1f�ܫ�2��w=+\
3
+ s�؜�����b��j�L���fm�� 峅��8f�h1I���`��2NRS,�dy����@