async 2.7.0 → 2.8.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 53de22a28c0c092ca81a83cb13c3ffba282d837c3eaab45fac9c8b130e0483a7
4
- data.tar.gz: 647c8709231ffd1c24d1e6d166978ffe5b7b0ed3da17054dd8c43f131a8b29f5
3
+ metadata.gz: a69de1047d88273699e4b64e4013edd63e30ad62d0fd8a05cf5bab46bd9ea12b
4
+ data.tar.gz: cfe211dafcd8ffc86ee3c4e91a90bc2de919173e7a60a9bdcfb008d1b5c7b67a
5
5
  SHA512:
6
- metadata.gz: b38fe4b6304d66e7911f392c15334a0e3fadd4751a593fbcfcc4aa31726d02d7482888f0d038568dee034647cba7453a50916aecb1d40111ee7a3d1d76c555ba
7
- data.tar.gz: 4b48c52dc39f10835f36e84d25b45ab5b6d89f213c232fd8f791e0c1d318901eb1826a5c57fca8daa95b8ba32f6130e02f022986c40bdfc194aab8506b47a5bb
6
+ metadata.gz: da268decbc3c7d103d7b4c245059afa04629de91be9dee4baecca1b6df8905a6dfd0797494e93907fde00978cc44f197707391f97cf3453d354cf6f28be8ec5c
7
+ data.tar.gz: 14a57522fc67231c827e41be8df02aaba356a06ae700297200bfbbd9ee4579807fb8df8281d29100d15256a1cb2f662f264262fa82897ead48690e4c0423e0f7
checksums.yaml.gz.sig CHANGED
Binary file
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2020-2023, by Samuel Williams.
4
+ # Copyright, 2020-2024, by Samuel Williams.
5
5
  # Copyright, 2020, by Jun Jiang.
6
6
  # Copyright, 2021, by Julien Portalier.
7
7
 
@@ -203,7 +203,7 @@ module Async
203
203
 
204
204
  if timeout = get_timeout(io)
205
205
  timer = @timers.after(timeout) do
206
- fiber.raise(::IO::TimeoutError, "execution expired")
206
+ fiber.raise(::IO::TimeoutError, "Timeout while waiting for IO to become readable!")
207
207
  end
208
208
  end
209
209
 
@@ -212,13 +212,13 @@ module Async
212
212
  timer&.cancel
213
213
  end
214
214
 
215
- if RUBY_ENGINE != "ruby" || RUBY_VERSION >= "3.3.0"
215
+ if RUBY_ENGINE != "ruby" || RUBY_VERSION >= "3.3.1"
216
216
  def io_write(io, buffer, length, offset = 0)
217
217
  fiber = Fiber.current
218
-
218
+
219
219
  if timeout = get_timeout(io)
220
220
  timer = @timers.after(timeout) do
221
- fiber.raise(::IO::TimeoutError, "execution expired")
221
+ fiber.raise(::IO::TimeoutError, "Timeout while waiting for IO to become writable!")
222
222
  end
223
223
  end
224
224
 
@@ -306,17 +306,22 @@ module Async
306
306
 
307
307
  initial_task = self.async(...) if block_given?
308
308
 
309
- # In theory, we could use Exception here to be a little bit safer, but we've only shown the case for SignalException to be a problem, so let's not over-engineer this.
310
- Thread.handle_interrupt(SignalException => :never) do
311
- while true
312
- # If we are interrupted, we need to exit:
313
- break if self.interrupted?
314
-
315
- # If we are finished, we need to exit:
316
- break unless self.run_once
309
+ begin
310
+ # In theory, we could use Exception here to be a little bit safer, but we've only shown the case for SignalException to be a problem, so let's not over-engineer this.
311
+ Thread.handle_interrupt(SignalException => :never) do
312
+ while true
313
+ # If we are interrupted, we need to exit:
314
+ break if self.interrupted?
315
+
316
+ # If we are finished, we need to exit:
317
+ break unless self.run_once
318
+ end
317
319
  end
320
+ rescue Interrupt
321
+ self.stop
322
+ retry
318
323
  end
319
-
324
+
320
325
  return initial_task
321
326
  ensure
322
327
  Console.logger.debug(self) {"Exiting run-loop because #{$! ? $! : 'finished'}."}
data/lib/async/task.rb CHANGED
@@ -1,10 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2017-2023, by Samuel Williams.
4
+ # Copyright, 2017-2024, by Samuel Williams.
5
5
  # Copyright, 2017, by Kent Gruber.
6
6
  # Copyright, 2017, by Devin Christensen.
7
7
  # Copyright, 2020, by Patrik Wenger.
8
+ # Copyright, 2023, by Math Ieu.
8
9
 
9
10
  require 'fiber'
10
11
 
data/lib/async/version.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2017-2023, by Samuel Williams.
4
+ # Copyright, 2017-2024, by Samuel Williams.
5
5
 
6
6
  module Async
7
- VERSION = "2.7.0"
7
+ VERSION = "2.8.1"
8
8
  end
data/license.md CHANGED
@@ -1,13 +1,13 @@
1
1
  # MIT License
2
2
 
3
- Copyright, 2017-2023, by Samuel Williams.
3
+ Copyright, 2017-2024, by Samuel Williams.
4
4
  Copyright, 2017, by Kent Gruber.
5
5
  Copyright, 2017, by Devin Christensen.
6
6
  Copyright, 2018, by Sokolov Yura.
7
7
  Copyright, 2018, by Jiang Jinyang.
8
8
  Copyright, 2019, by Jeremy Jung.
9
9
  Copyright, 2019, by Ryan Musgrave.
10
- Copyright, 2020, by Olle Jonsson.
10
+ Copyright, 2020-2023, by Olle Jonsson.
11
11
  Copyright, 2020, by Salim Semaoune.
12
12
  Copyright, 2020, by Brian Morearty.
13
13
  Copyright, 2020, by Stefan Wrobel.
@@ -22,6 +22,9 @@ Copyright, 2022, by Trevor Turk.
22
22
  Copyright, 2022, by Masayuki Yamamoto.
23
23
  Copyright, 2023, by Leon Löchner.
24
24
  Copyright, 2023, by Colin Kelley.
25
+ Copyright, 2023, by Math Ieu.
26
+ Copyright, 2023, by Emil Tin.
27
+ Copyright, 2023, by Gert Goet.
25
28
 
26
29
  Permission is hereby granted, free of charge, to any person obtaining a copy
27
30
  of this software and associated documentation files (the "Software"), to deal
data/readme.md CHANGED
@@ -7,8 +7,7 @@ Async is a composable asynchronous I/O framework for Ruby based on [io-event](ht
7
7
  > [tus-ruby-server](https://github.com/janko/tus-ruby-server) – would really benefit from non-blocking I/O. It's really
8
8
  > beautifully designed." *– [janko](https://github.com/janko)*
9
9
 
10
- [![Development
11
- Status](https://github.com/socketry/async/workflows/Test/badge.svg)](https://github.com/socketry/async/actions?workflow=Test)
10
+ [![Development Status](https://github.com/socketry/async/workflows/Test/badge.svg)](https://github.com/socketry/async/actions?workflow=Test)
12
11
 
13
12
  ## Features
14
13
 
@@ -46,6 +45,14 @@ We welcome contributions to this project.
46
45
  4. Push to the branch (`git push origin my-new-feature`).
47
46
  5. Create new Pull Request.
48
47
 
48
+ ### Developer Certificate of Origin
49
+
50
+ This project uses the [Developer Certificate of Origin](https://developercertificate.org/). All contributors to this project must agree to this document to have their contributions accepted.
51
+
52
+ ### Contributor Covenant
53
+
54
+ This project is governed by the [Contributor Covenant](https://www.contributor-covenant.org/). All contributors and participants agree to abide by its terms.
55
+
49
56
  ## See Also
50
57
 
51
58
  - [async-io](https://github.com/socketry/async-io) — Asynchronous networking and sockets.
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,16 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: async
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.0
4
+ version: 2.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  - Bruno Sutic
9
9
  - Jeremy Jung
10
+ - Olle Jonsson
10
11
  - Devin Christensen
12
+ - Emil Tin
11
13
  - Kent Gruber
12
14
  - Brian Morearty
13
15
  - Colin Kelley
16
+ - Gert Goet
14
17
  - Jiang Jinyang
15
18
  - Julien Portalier
16
19
  - Jun Jiang
@@ -18,7 +21,7 @@ authors:
18
21
  - Leon Löchner
19
22
  - Masafumi Okura
20
23
  - Masayuki Yamamoto
21
- - Olle Jonsson
24
+ - Math Ieu
22
25
  - Patrik Wenger
23
26
  - Ryan Musgrave
24
27
  - Salim Semaoune
@@ -58,7 +61,7 @@ cert_chain:
58
61
  Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
59
62
  voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
60
63
  -----END CERTIFICATE-----
61
- date: 2024-01-02 00:00:00.000000000 Z
64
+ date: 2024-02-01 00:00:00.000000000 Z
62
65
  dependencies:
63
66
  - !ruby/object:Gem::Dependency
64
67
  name: console
@@ -116,111 +119,12 @@ dependencies:
116
119
  - - "~>"
117
120
  - !ruby/object:Gem::Version
118
121
  version: '4.1'
119
- - !ruby/object:Gem::Dependency
120
- name: bake-test
121
- requirement: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - ">="
124
- - !ruby/object:Gem::Version
125
- version: '0'
126
- type: :development
127
- prerelease: false
128
- version_requirements: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - ">="
131
- - !ruby/object:Gem::Version
132
- version: '0'
133
- - !ruby/object:Gem::Dependency
134
- name: bake-test-external
135
- requirement: !ruby/object:Gem::Requirement
136
- requirements:
137
- - - ">="
138
- - !ruby/object:Gem::Version
139
- version: '0'
140
- type: :development
141
- prerelease: false
142
- version_requirements: !ruby/object:Gem::Requirement
143
- requirements:
144
- - - ">="
145
- - !ruby/object:Gem::Version
146
- version: '0'
147
- - !ruby/object:Gem::Dependency
148
- name: benchmark-ips
149
- requirement: !ruby/object:Gem::Requirement
150
- requirements:
151
- - - ">="
152
- - !ruby/object:Gem::Version
153
- version: '0'
154
- type: :development
155
- prerelease: false
156
- version_requirements: !ruby/object:Gem::Requirement
157
- requirements:
158
- - - ">="
159
- - !ruby/object:Gem::Version
160
- version: '0'
161
- - !ruby/object:Gem::Dependency
162
- name: bundler
163
- requirement: !ruby/object:Gem::Requirement
164
- requirements:
165
- - - ">="
166
- - !ruby/object:Gem::Version
167
- version: '0'
168
- type: :development
169
- prerelease: false
170
- version_requirements: !ruby/object:Gem::Requirement
171
- requirements:
172
- - - ">="
173
- - !ruby/object:Gem::Version
174
- version: '0'
175
- - !ruby/object:Gem::Dependency
176
- name: covered
177
- requirement: !ruby/object:Gem::Requirement
178
- requirements:
179
- - - "~>"
180
- - !ruby/object:Gem::Version
181
- version: 0.18.3
182
- type: :development
183
- prerelease: false
184
- version_requirements: !ruby/object:Gem::Requirement
185
- requirements:
186
- - - "~>"
187
- - !ruby/object:Gem::Version
188
- version: 0.18.3
189
- - !ruby/object:Gem::Dependency
190
- name: sus
191
- requirement: !ruby/object:Gem::Requirement
192
- requirements:
193
- - - "~>"
194
- - !ruby/object:Gem::Version
195
- version: '0.15'
196
- type: :development
197
- prerelease: false
198
- version_requirements: !ruby/object:Gem::Requirement
199
- requirements:
200
- - - "~>"
201
- - !ruby/object:Gem::Version
202
- version: '0.15'
203
- - !ruby/object:Gem::Dependency
204
- name: sus-fixtures-async
205
- requirement: !ruby/object:Gem::Requirement
206
- requirements:
207
- - - ">="
208
- - !ruby/object:Gem::Version
209
- version: '0'
210
- type: :development
211
- prerelease: false
212
- version_requirements: !ruby/object:Gem::Requirement
213
- requirements:
214
- - - ">="
215
- - !ruby/object:Gem::Version
216
- version: '0'
217
122
  description:
218
123
  email:
219
124
  executables: []
220
125
  extensions: []
221
126
  extra_rdoc_files: []
222
127
  files:
223
- - conduct.md
224
128
  - lib/async.rb
225
129
  - lib/async/barrier.md
226
130
  - lib/async/barrier.rb
@@ -251,6 +155,7 @@ licenses:
251
155
  - MIT
252
156
  metadata:
253
157
  documentation_uri: https://socketry.github.io/async/
158
+ funding_uri: https://github.com/sponsors/ioquatix/
254
159
  post_install_message:
255
160
  rdoc_options: []
256
161
  require_paths:
@@ -266,7 +171,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
266
171
  - !ruby/object:Gem::Version
267
172
  version: '0'
268
173
  requirements: []
269
- rubygems_version: 3.4.22
174
+ rubygems_version: 3.5.3
270
175
  signing_key:
271
176
  specification_version: 4
272
177
  summary: A concurrency framework for Ruby.
metadata.gz.sig CHANGED
Binary file
data/conduct.md DELETED
@@ -1,133 +0,0 @@
1
-
2
- # Contributor Covenant Code of Conduct
3
-
4
- ## Our Pledge
5
-
6
- We as members, contributors, and leaders pledge to make participation in our
7
- community a harassment-free experience for everyone, regardless of age, body
8
- size, visible or invisible disability, ethnicity, sex characteristics, gender
9
- identity and expression, level of experience, education, socio-economic status,
10
- nationality, personal appearance, race, caste, color, religion, or sexual
11
- identity and orientation.
12
-
13
- We pledge to act and interact in ways that contribute to an open, welcoming,
14
- diverse, inclusive, and healthy community.
15
-
16
- ## Our Standards
17
-
18
- Examples of behavior that contributes to a positive environment for our
19
- community include:
20
-
21
- * Demonstrating empathy and kindness toward other people
22
- * Being respectful of differing opinions, viewpoints, and experiences
23
- * Giving and gracefully accepting constructive feedback
24
- * Accepting responsibility and apologizing to those affected by our mistakes,
25
- and learning from the experience
26
- * Focusing on what is best not just for us as individuals, but for the overall
27
- community
28
-
29
- Examples of unacceptable behavior include:
30
-
31
- * The use of sexualized language or imagery, and sexual attention or advances of
32
- any kind
33
- * Trolling, insulting or derogatory comments, and personal or political attacks
34
- * Public or private harassment
35
- * Publishing others' private information, such as a physical or email address,
36
- without their explicit permission
37
- * Other conduct which could reasonably be considered inappropriate in a
38
- professional setting
39
-
40
- ## Enforcement Responsibilities
41
-
42
- Community leaders are responsible for clarifying and enforcing our standards of
43
- acceptable behavior and will take appropriate and fair corrective action in
44
- response to any behavior that they deem inappropriate, threatening, offensive,
45
- or harmful.
46
-
47
- Community leaders have the right and responsibility to remove, edit, or reject
48
- comments, commits, code, wiki edits, issues, and other contributions that are
49
- not aligned to this Code of Conduct, and will communicate reasons for moderation
50
- decisions when appropriate.
51
-
52
- ## Scope
53
-
54
- This Code of Conduct applies within all community spaces, and also applies when
55
- an individual is officially representing the community in public spaces.
56
- Examples of representing our community include using an official e-mail address,
57
- posting via an official social media account, or acting as an appointed
58
- representative at an online or offline event.
59
-
60
- ## Enforcement
61
-
62
- Instances of abusive, harassing, or otherwise unacceptable behavior may be
63
- reported to the community leaders responsible for enforcement at
64
- [INSERT CONTACT METHOD].
65
- All complaints will be reviewed and investigated promptly and fairly.
66
-
67
- All community leaders are obligated to respect the privacy and security of the
68
- reporter of any incident.
69
-
70
- ## Enforcement Guidelines
71
-
72
- Community leaders will follow these Community Impact Guidelines in determining
73
- the consequences for any action they deem in violation of this Code of Conduct:
74
-
75
- ### 1. Correction
76
-
77
- **Community Impact**: Use of inappropriate language or other behavior deemed
78
- unprofessional or unwelcome in the community.
79
-
80
- **Consequence**: A private, written warning from community leaders, providing
81
- clarity around the nature of the violation and an explanation of why the
82
- behavior was inappropriate. A public apology may be requested.
83
-
84
- ### 2. Warning
85
-
86
- **Community Impact**: A violation through a single incident or series of
87
- actions.
88
-
89
- **Consequence**: A warning with consequences for continued behavior. No
90
- interaction with the people involved, including unsolicited interaction with
91
- those enforcing the Code of Conduct, for a specified period of time. This
92
- includes avoiding interactions in community spaces as well as external channels
93
- like social media. Violating these terms may lead to a temporary or permanent
94
- ban.
95
-
96
- ### 3. Temporary Ban
97
-
98
- **Community Impact**: A serious violation of community standards, including
99
- sustained inappropriate behavior.
100
-
101
- **Consequence**: A temporary ban from any sort of interaction or public
102
- communication with the community for a specified period of time. No public or
103
- private interaction with the people involved, including unsolicited interaction
104
- with those enforcing the Code of Conduct, is allowed during this period.
105
- Violating these terms may lead to a permanent ban.
106
-
107
- ### 4. Permanent Ban
108
-
109
- **Community Impact**: Demonstrating a pattern of violation of community
110
- standards, including sustained inappropriate behavior, harassment of an
111
- individual, or aggression toward or disparagement of classes of individuals.
112
-
113
- **Consequence**: A permanent ban from any sort of public interaction within the
114
- community.
115
-
116
- ## Attribution
117
-
118
- This Code of Conduct is adapted from the [Contributor Covenant][homepage],
119
- version 2.1, available at
120
- [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
121
-
122
- Community Impact Guidelines were inspired by
123
- [Mozilla's code of conduct enforcement ladder][Mozilla CoC].
124
-
125
- For answers to common questions about this code of conduct, see the FAQ at
126
- [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
127
- [https://www.contributor-covenant.org/translations][translations].
128
-
129
- [homepage]: https://www.contributor-covenant.org
130
- [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
131
- [Mozilla CoC]: https://github.com/mozilla/diversity
132
- [FAQ]: https://www.contributor-covenant.org/faq
133
- [translations]: https://www.contributor-covenant.org/translations