async 2.7.0 → 2.8.1

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: 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