async-http 0.95.0 → 0.96.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: 9ccacda954db4a8169a839716b97ab515b2a7c4077979c097e0e32960a489137
4
- data.tar.gz: bece54b3e60dc58f15d6ac0bc9fd383b3ba33e75f6ba21f7dae830b1e22a0528
3
+ metadata.gz: 84a34661bca7f007c6fb80b74101fb59c5689578f5e17076901c976755ceeb50
4
+ data.tar.gz: 3ccd85841ed36c4b1d30e6993c5740992db9f8a30c1c1dbbdcdd1fd6197252f4
5
5
  SHA512:
6
- metadata.gz: e5a8f2d96544ab560a03ec304ce29f26843fcd1a511bff1aaa60d05c4f5157d954fff51fcbc37a8bb835884a27606c7501540c5cac18240e57eb6e7d834a0807
7
- data.tar.gz: 2ea2d61d2144079119dfcf769f30a942df02f709dc1b61839d55d912bdbbbd64c7719d9895c4e38c734a3af1696b4d617e7e8b875e1d195c7e8371cfcdc7474e
6
+ metadata.gz: 2d828bcd131713d846d86d987664fbbd18124363f043efd0824acb974e121703b60f8bb0e2ed4cccd01c7fbbc479c69f63b77bbdf0c498caf4ae609a9795f18d
7
+ data.tar.gz: c06921dbbe22ee735fef89fa1999e3e7a181d21d7d30da93529eff7a590b8f163f99b3ac44b01d1cf310e59dbe7ead8f925a49397f1d6aafae0e0cf37eee0787
checksums.yaml.gz.sig CHANGED
@@ -1,6 +1,2 @@
1
- RZ[Ne���'iZ7��t�V/=��ͣ�J����]
2
- {8����3��jENp6�� \����W�����>�����AMdm��n�7��X5b���B�ïb@�CJ�El�Hhcd򬎔C���1��U]����NhMWe�P�hR*��
3
- z��[6ڄ���\wc��wG��bo��z�I���Sx
4
- ���!_���ei|�k-<r`$�����}j�9�ƅ�p�X|�R_[�$�!����{����v�5��"Cf��z
5
- �pW��M:6h�ft��@��#��v�i+eY�0�xQ0㻵O7�p�gN�~� �5�[K�͠���ѕ
6
- >��6��"�sg�R���QGN����H�٧+�������Y`8���uJK�
1
+ ��n�� &���I�ͤѵHj�_K}���NVZ(�6B�m��0j�Bw�X���{a���OX5�k+�L~�r�`J K�E���#��j�" ���V�f��时d�Dp(C��-s�YwC�i;�H��-Q%!��؁}
2
+ �������x�_1D�V~T�'�����~�;�q_C��@��!���r�+ArHwͬ/�n���,��e�������ImW6������ܠx��d��B��H]�$�xY0p��ڱ�)SvlH���d���TԡMĕ�k6]
@@ -4,7 +4,7 @@
4
4
  # Copyright, 2024, by Samuel Williams.
5
5
 
6
6
  require "protocol/http/body/wrapper"
7
- require "async/variable"
7
+ require "async/promise"
8
8
 
9
9
  module Async
10
10
  module HTTP
@@ -17,7 +17,7 @@ module Async
17
17
  def initialize(body)
18
18
  super(body)
19
19
 
20
- @closed = Async::Variable.new
20
+ @closed = Async::Promise.new
21
21
  @error = nil
22
22
 
23
23
  @reading = false
@@ -42,7 +42,7 @@ module Async
42
42
 
43
43
  unless @closed.resolved?
44
44
  @error = error
45
- @closed.value = true
45
+ @closed.resolve(true)
46
46
  end
47
47
  end
48
48
 
@@ -44,6 +44,16 @@ module Async
44
44
  @write_frame_guard.acquire(&block)
45
45
  end
46
46
 
47
+ # Write a single frame, deferring stop until the frame is written.
48
+ def write_frame(frame)
49
+ Task.current.defer_stop{super}
50
+ end
51
+
52
+ # Write multiple frames, deferring stop until the frames are written.
53
+ def write_frames
54
+ Task.current.defer_stop{super}
55
+ end
56
+
47
57
  # @returns [String] A string representation of this connection.
48
58
  def to_s
49
59
  "\#<#{self.class} #{@streams.count} active streams>"
@@ -7,6 +7,6 @@
7
7
  module Async
8
8
  # @namespace
9
9
  module HTTP
10
- VERSION = "0.95.0"
10
+ VERSION = "0.96.0"
11
11
  end
12
12
  end
@@ -4,6 +4,7 @@
4
4
  # Copyright, 2025, by Samuel Williams.
5
5
 
6
6
  require_relative "../../../../async/http/client"
7
+ require "traces/provider"
7
8
 
8
9
  Traces::Provider(Async::HTTP::Client) do
9
10
  def call(request)
@@ -4,6 +4,7 @@
4
4
  # Copyright, 2025, by Samuel Williams.
5
5
 
6
6
  require_relative "../../../../../../async/http/protocol/http1/client"
7
+ require "traces/provider"
7
8
 
8
9
  Traces::Provider(Async::HTTP::Protocol::HTTP1::Client) do
9
10
  def write_request(...)
@@ -4,6 +4,7 @@
4
4
  # Copyright, 2025, by Samuel Williams.
5
5
 
6
6
  require_relative "../../../../../../async/http/protocol/http2/client"
7
+ require "traces/provider"
7
8
 
8
9
  Traces::Provider(Async::HTTP::Protocol::HTTP2::Client) do
9
10
  def write_request(...)
@@ -4,6 +4,7 @@
4
4
  # Copyright, 2025, by Samuel Williams.
5
5
 
6
6
  require_relative "../../../../async/http/server"
7
+ require "traces/provider"
7
8
 
8
9
  Traces::Provider(Async::HTTP::Server) do
9
10
  def call(request)
data/readme.md CHANGED
@@ -16,6 +16,14 @@ Please see the [project documentation](https://socketry.github.io/async-http/) f
16
16
 
17
17
  Please see the [project releases](https://socketry.github.io/async-http/releases/index) for all releases.
18
18
 
19
+ ### v0.96.0
20
+
21
+ - Made `metrics` and `traces` optional runtime dependencies. Applications that use the providers should depend on the corresponding gem and require the provider explicitly.
22
+
23
+ ### v0.95.1
24
+
25
+ - Fix handling of reset stream causing complete connection failure.
26
+
19
27
  ### v0.95.0
20
28
 
21
29
  - Use `Protocol::HTTP::RefusedError` for safe retry of requests not processed by the server, including non-idempotent methods like PUT.
@@ -51,14 +59,6 @@ Please see the [project releases](https://socketry.github.io/async-http/releases
51
59
 
52
60
  - Don't emit `resource:` keyword argument in traces - it's unsupported by OpenTelemetry.
53
61
 
54
- ### v0.88.0
55
-
56
- - [Support custom protocols with options](https://socketry.github.io/async-http/releases/index#support-custom-protocols-with-options)
57
-
58
- ### v0.87.0
59
-
60
- - [Unify HTTP/1 and HTTP/2 `CONNECT` semantics](https://socketry.github.io/async-http/releases/index#unify-http/1-and-http/2-connect-semantics)
61
-
62
62
  ## See Also
63
63
 
64
64
  - [benchmark-http](https://github.com/socketry/benchmark-http) — A benchmarking tool to report on web server concurrency.
data/releases.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Releases
2
2
 
3
+ ## v0.96.0
4
+
5
+ - Made `metrics` and `traces` optional runtime dependencies. Applications that use the providers should depend on the corresponding gem and require the provider explicitly.
6
+
7
+ ## v0.95.1
8
+
9
+ - Fix handling of reset stream causing complete connection failure.
10
+
3
11
  ## v0.95.0
4
12
 
5
13
  - Use `Protocol::HTTP::RefusedError` for safe retry of requests not processed by the server, including non-idempotent methods like PUT.
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: async-http
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.95.0
4
+ version: 0.96.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
@@ -68,14 +68,14 @@ dependencies:
68
68
  requirements:
69
69
  - - ">="
70
70
  - !ruby/object:Gem::Version
71
- version: 2.10.2
71
+ version: 2.35.1
72
72
  type: :runtime
73
73
  prerelease: false
74
74
  version_requirements: !ruby/object:Gem::Requirement
75
75
  requirements:
76
76
  - - ">="
77
77
  - !ruby/object:Gem::Version
78
- version: 2.10.2
78
+ version: 2.35.1
79
79
  - !ruby/object:Gem::Dependency
80
80
  name: async-pool
81
81
  requirement: !ruby/object:Gem::Requirement
@@ -118,20 +118,6 @@ dependencies:
118
118
  - - "~>"
119
119
  - !ruby/object:Gem::Version
120
120
  version: '0.6'
121
- - !ruby/object:Gem::Dependency
122
- name: metrics
123
- requirement: !ruby/object:Gem::Requirement
124
- requirements:
125
- - - "~>"
126
- - !ruby/object:Gem::Version
127
- version: '0.12'
128
- type: :runtime
129
- prerelease: false
130
- version_requirements: !ruby/object:Gem::Requirement
131
- requirements:
132
- - - "~>"
133
- - !ruby/object:Gem::Version
134
- version: '0.12'
135
121
  - !ruby/object:Gem::Dependency
136
122
  name: protocol-http
137
123
  requirement: !ruby/object:Gem::Requirement
@@ -188,20 +174,6 @@ dependencies:
188
174
  - - "~>"
189
175
  - !ruby/object:Gem::Version
190
176
  version: '0.2'
191
- - !ruby/object:Gem::Dependency
192
- name: traces
193
- requirement: !ruby/object:Gem::Requirement
194
- requirements:
195
- - - "~>"
196
- - !ruby/object:Gem::Version
197
- version: '0.10'
198
- type: :runtime
199
- prerelease: false
200
- version_requirements: !ruby/object:Gem::Requirement
201
- requirements:
202
- - - "~>"
203
- - !ruby/object:Gem::Version
204
- version: '0.10'
205
177
  executables: []
206
178
  extensions: []
207
179
  extra_rdoc_files: []
@@ -284,7 +256,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
284
256
  - !ruby/object:Gem::Version
285
257
  version: '0'
286
258
  requirements: []
287
- rubygems_version: 4.0.6
259
+ rubygems_version: 4.0.10
288
260
  specification_version: 4
289
261
  summary: A HTTP client and server library.
290
262
  test_files: []
metadata.gz.sig CHANGED
Binary file