async 2.21.2 → 2.22.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: '0821852f6bb8e8b82506934a6ad8e921270f121636453303a2fd6409cacd83e2'
4
- data.tar.gz: 56992a10ff23bcba8dfa535f7c134ac2870a10dd62f7776ea9e109d5e14e0b05
3
+ metadata.gz: ef8aa467e82d3ddcd2c24a823ffba2e2b9e1680d005fade667ef36c882588dd1
4
+ data.tar.gz: c2df7e4669fe9d2f0bb8d6c6f7de673d1a89e41d8ffc99bf702f79cefbce7a3e
5
5
  SHA512:
6
- metadata.gz: 17791af587852dbb46ab3cb6b5584c10d7073997d1ba21eabed248fe1dc6a9107902ac34cf8741efacdfa01e87d57aa515f22635310fa35697ee56acd5cd03ee
7
- data.tar.gz: e0a7fc1d5cd13632ceaa93e9ccb41ff89ec38648d8ca6d5eb2831ea39cb014d2fb8046c3226d94d7101a5d289cecaff338fcf65c440627ae76cdd44a93e624a6
6
+ metadata.gz: 2a98aaf33872cafab28e41acf187425926a3e0423ee5017bfd42fef66e64f55ad0ec6d6d1a053987813a3f190471e4521bac7c8895fb1ee352b8e984cf1dd326
7
+ data.tar.gz: 64205b564a8de8aeb22d0ae6834ea9dfd114439336e7bd076de489da0e045f002a9d90f51f72414c36ed006a599cd536d27ff852b5f8f9541f3c656c3d9e7035
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/async/barrier.md CHANGED
@@ -18,7 +18,7 @@ Sync do
18
18
  # Sleep sort the numbers:
19
19
  numbers.each do |number|
20
20
  barrier.async do |task|
21
- task.sleep(number)
21
+ sleep(number)
22
22
  sorted << number
23
23
  end
24
24
  end
data/lib/async/clock.rb CHANGED
@@ -61,5 +61,14 @@ module Async
61
61
 
62
62
  return total
63
63
  end
64
+
65
+ # Reset the total elapsed time. If the clock is currently running, reset the start time to now.
66
+ def reset!
67
+ @total = 0
68
+
69
+ if @started
70
+ @started = Clock.now
71
+ end
72
+ end
64
73
  end
65
74
  end
@@ -15,7 +15,7 @@ Sync do
15
15
  end
16
16
 
17
17
  Async do |task|
18
- task.sleep(1)
18
+ sleep(1)
19
19
  Console.info "Signalling condition..."
20
20
  condition.signal("Hello World")
21
21
  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.21.2"
7
+ VERSION = "2.22.0"
8
8
  end
@@ -8,10 +8,15 @@ require "metrics/provider"
8
8
 
9
9
  Metrics::Provider(Async::Task) do
10
10
  ASYNC_TASK_SCHEDULED = Metrics.metric("async.task.scheduled", :counter, description: "The number of tasks scheduled.")
11
+ ASYNC_TASK_FINISHED = Metrics.metric("async.task.finished", :counter, description: "The number of tasks finished.")
11
12
 
12
13
  def schedule(&block)
13
14
  ASYNC_TASK_SCHEDULED.emit(1)
14
15
 
15
16
  super(&block)
17
+ rescue => error
18
+ raise
19
+ ensure
20
+ ASYNC_TASK_FINISHED.emit(1)
16
21
  end
17
22
  end
@@ -8,6 +8,11 @@ require "traces/provider"
8
8
 
9
9
  Traces::Provider(Async::Task) do
10
10
  def schedule(&block)
11
+ # If we are not actively tracing anything, then we can skip this:
12
+ unless Traces.active?
13
+ return super(&block)
14
+ end
15
+
11
16
  unless self.transient?
12
17
  trace_context = Traces.trace_context
13
18
  end
@@ -18,6 +23,7 @@ Traces::Provider(Async::Task) do
18
23
  "transient" => self.transient?,
19
24
  }
20
25
 
26
+ # Run the trace in the context of the child task:
21
27
  super do
22
28
  Traces.trace_context = trace_context
23
29
 
@@ -26,6 +32,7 @@ Traces::Provider(Async::Task) do
26
32
  end
27
33
 
28
34
  Traces.trace("async.task", attributes: attributes) do
35
+ # Yes, this is correct, we already called super above:
29
36
  yield
30
37
  end
31
38
  end
data/readme.md CHANGED
@@ -24,7 +24,7 @@ Please see the [project documentation](https://socketry.github.io/async/) for mo
24
24
 
25
25
  - [Asynchronous Tasks](https://socketry.github.io/async/guides/asynchronous-tasks/index) - This guide explains how asynchronous tasks work and how to use them.
26
26
 
27
- - [Event Loop](https://socketry.github.io/async/guides/event-loop/index) - This guide gives an overview of how the event loop is implemented.
27
+ - [Scheduler](https://socketry.github.io/async/guides/scheduler/index) - This guide gives an overview of how the scheduler is implemented.
28
28
 
29
29
  - [Compatibility](https://socketry.github.io/async/guides/compatibility/index) - This guide gives an overview of the compatibility of Async with Ruby and other frameworks.
30
30
 
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.21.2
4
+ version: 2.22.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: 2025-01-30 00:00:00.000000000 Z
65
+ date: 2025-02-07 00:00:00.000000000 Z
66
66
  dependencies:
67
67
  - !ruby/object:Gem::Dependency
68
68
  name: console
@@ -98,20 +98,42 @@ dependencies:
98
98
  requirements:
99
99
  - - "~>"
100
100
  - !ruby/object:Gem::Version
101
- version: '1.6'
102
- - - ">="
101
+ version: '1.7'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: '1.7'
109
+ - !ruby/object:Gem::Dependency
110
+ name: traces
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
103
114
  - !ruby/object:Gem::Version
104
- version: 1.6.5
115
+ version: '0.15'
105
116
  type: :runtime
106
117
  prerelease: false
107
118
  version_requirements: !ruby/object:Gem::Requirement
108
119
  requirements:
109
120
  - - "~>"
110
121
  - !ruby/object:Gem::Version
111
- version: '1.6'
112
- - - ">="
122
+ version: '0.15'
123
+ - !ruby/object:Gem::Dependency
124
+ name: metrics
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '0.12'
130
+ type: :runtime
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - "~>"
113
135
  - !ruby/object:Gem::Version
114
- version: 1.6.5
136
+ version: '0.12'
115
137
  executables: []
116
138
  extensions: []
117
139
  extra_rdoc_files: []
metadata.gz.sig CHANGED
Binary file