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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/async/scheduler.rb +19 -14
- data/lib/async/task.rb +2 -1
- data/lib/async/version.rb +2 -2
- data/license.md +5 -2
- data/readme.md +9 -2
- data.tar.gz.sig +0 -0
- metadata +8 -103
- metadata.gz.sig +0 -0
- data/conduct.md +0 -133
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a69de1047d88273699e4b64e4013edd63e30ad62d0fd8a05cf5bab46bd9ea12b
|
4
|
+
data.tar.gz: cfe211dafcd8ffc86ee3c4e91a90bc2de919173e7a60a9bdcfb008d1b5c7b67a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: da268decbc3c7d103d7b4c245059afa04629de91be9dee4baecca1b6df8905a6dfd0797494e93907fde00978cc44f197707391f97cf3453d354cf6f28be8ec5c
|
7
|
+
data.tar.gz: 14a57522fc67231c827e41be8df02aaba356a06ae700297200bfbbd9ee4579807fb8df8281d29100d15256a1cb2f662f264262fa82897ead48690e4c0423e0f7
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/async/scheduler.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2020-
|
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, "
|
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.
|
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, "
|
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
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
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-
|
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
data/license.md
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
# MIT License
|
2
2
|
|
3
|
-
Copyright, 2017-
|
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.
|
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
|
-
-
|
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
|
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.
|
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
|