protocol-http-executor 0.0.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.
data/readme.md ADDED
@@ -0,0 +1,74 @@
1
+ # Protocol::HTTP::Executor
2
+
3
+ Execute `Protocol::HTTP` applications in isolated threads or Ractors while preserving the request/response streaming model.
4
+
5
+ [![Development Status](https://github.com/socketry/protocol-http-executor/workflows/Test/badge.svg)](https://github.com/socketry/protocol-http-executor/actions?workflow=Test)
6
+
7
+ ## Features
8
+
9
+ - Reconstruct requests and responses on either side of the execution boundary.
10
+ - Stream request and response bodies with scheduler-compatible backpressure.
11
+ - Preserve metadata, peer addresses, interim responses, errors, protocol upgrades, and trailers.
12
+ - Use the same semantic transport for thread-per-request and Ractor-per-request execution.
13
+
14
+ Each request uses two Unix socket pairs: a bidirectional control channel and a full-duplex body channel. The caller writes request data while reading response data, with socket half-closure representing the final EOF in each direction.
15
+
16
+ ## Usage
17
+
18
+ Please see the [project documentation](https://socketry.github.io/protocol-http-executor/) for more details.
19
+
20
+ - [Getting Started](https://socketry.github.io/protocol-http-executor/guides/getting-started/index) - This guide explains how to execute `Protocol::HTTP` applications in isolated threads or Ractors.
21
+
22
+ - [Design Overview](https://socketry.github.io/protocol-http-executor/guides/design-overview/index) - This guide explains how `protocol-http-executor` preserves HTTP request, response, streaming, error, and trailer semantics across an execution boundary.
23
+
24
+ ## Semantic Transport
25
+
26
+ Request and response heads are sent separately from their bodies. Body chunks are forwarded only for non-empty bodies. Trailer fields are sent after the final body chunk and applied before EOF is exposed to the receiving application.
27
+
28
+ Streamable response bodies select a direct duplex mode. Initial request-body chunks are forwarded first, followed by upgraded-stream input, while response output flows independently in the other direction.
29
+
30
+ ## Releases
31
+
32
+ Please see the [project releases](https://socketry.github.io/protocol-http-executor/releases/index) for all releases.
33
+
34
+ ### v0.0.1
35
+
36
+ - Add thread-per-request and Ruby head/4.1 Ractor-per-request HTTP execution.
37
+ - Preserve streamed request and response bodies, interim responses, errors, protocols, peer addresses, and trailers across the execution boundary.
38
+ - Use a full-duplex body socket with independent half-closure for request and response EOF.
39
+ - Transfer socket descriptors into Ractors without copying socket objects.
40
+ - Route errors on the control or body channel according to whether the response head has been sent.
41
+
42
+ ## Contributing
43
+
44
+ We welcome contributions to this project.
45
+
46
+ 1. Fork the repository.
47
+ 2. Create your feature branch (`git checkout -b my-new-feature`).
48
+ 3. Commit your changes (`git commit -am 'Add some feature.'`).
49
+ 4. Push to the branch (`git push origin my-new-feature`).
50
+ 5. Create a new pull request.
51
+
52
+ ### Running Tests
53
+
54
+ To run the test suite:
55
+
56
+ ``` bash
57
+ $ bundle exec sus
58
+ ```
59
+
60
+ ### Making Releases
61
+
62
+ To make a new release:
63
+
64
+ ``` bash
65
+ $ bundle exec bake gem:release:patch # or minor or major
66
+ ```
67
+
68
+ ### Developer Certificate of Origin
69
+
70
+ In order to protect users of this project, we require all contributors to comply with the [Developer Certificate of Origin](https://developercertificate.org/). This ensures that all contributions are properly licensed and attributed.
71
+
72
+ ### Community Guidelines
73
+
74
+ This project is best served by a collaborative and respectful environment. Treat each other professionally, respect differing viewpoints, and engage constructively. Harassment, discrimination, or harmful behavior is not tolerated. Communicate clearly, listen actively, and support one another. If any issues arise, please inform the project maintainers.
data/releases.md ADDED
@@ -0,0 +1,9 @@
1
+ # Releases
2
+
3
+ ## v0.0.1
4
+
5
+ - Add thread-per-request and Ruby head/4.1 Ractor-per-request HTTP execution.
6
+ - Preserve streamed request and response bodies, interim responses, errors, protocols, peer addresses, and trailers across the execution boundary.
7
+ - Use a full-duplex body socket with independent half-closure for request and response EOF.
8
+ - Transfer socket descriptors into Ractors without copying socket objects.
9
+ - Route errors on the control or body channel according to whether the response head has been sent.
metadata ADDED
@@ -0,0 +1,88 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: protocol-http-executor
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Samuel Williams
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: async
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: protocol-http
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '0.70'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '0.70'
40
+ executables: []
41
+ extensions: []
42
+ extra_rdoc_files: []
43
+ files:
44
+ - context/design-overview.md
45
+ - context/getting-started.md
46
+ - context/index.yaml
47
+ - lib/protocol/http/executor.rb
48
+ - lib/protocol/http/executor/body/input.rb
49
+ - lib/protocol/http/executor/body/output.rb
50
+ - lib/protocol/http/executor/channel.rb
51
+ - lib/protocol/http/executor/error.rb
52
+ - lib/protocol/http/executor/execution.rb
53
+ - lib/protocol/http/executor/generic.rb
54
+ - lib/protocol/http/executor/ractored.rb
55
+ - lib/protocol/http/executor/request.rb
56
+ - lib/protocol/http/executor/threaded.rb
57
+ - lib/protocol/http/executor/transport.rb
58
+ - lib/protocol/http/executor/version.rb
59
+ - lib/protocol/http/executor/worker.rb
60
+ - license.md
61
+ - readme.md
62
+ - releases.md
63
+ homepage: https://github.com/socketry/protocol-http-executor
64
+ licenses:
65
+ - MIT
66
+ metadata:
67
+ bug_tracker_uri: https://github.com/socketry/protocol-http-executor/issues
68
+ changelog_uri: https://github.com/socketry/protocol-http-executor/blob/main/releases.md
69
+ documentation_uri: https://socketry.github.io/protocol-http-executor/
70
+ source_code_uri: https://github.com/socketry/protocol-http-executor.git
71
+ rdoc_options: []
72
+ require_paths:
73
+ - lib
74
+ required_ruby_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: '3.3'
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ requirements: []
85
+ rubygems_version: 4.0.10
86
+ specification_version: 4
87
+ summary: Execute Protocol::HTTP applications across isolated execution contexts.
88
+ test_files: []