megrez 0.1.0 → 0.1.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 +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +46 -3
- data/lib/megrez/transport.rb +4 -2
- data/lib/megrez/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 56d4368f9fcd489224d0e04b5f77627bc2354722d753bdcb1609463682e98c7f
|
|
4
|
+
data.tar.gz: 8b540a3dec6ac43a3c421857bdc3e6cb88d99e77ac3a89743c8f8badde77acc4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e0d1ae17507d09ebbb776da908f843b2bc50bc0cb3b3c75214e06652406781cb2813237e3eef559eb2bdbcd4c3ea098b4495822572930d251b98d789183aea6e
|
|
7
|
+
data.tar.gz: 6874103e9912326a58d8582de0b72047d74d00b872968ea72e74563f493a552a5f4bc5f38da5a393eb020d87c22ad6e180ded3f0075ad5685f8d014d26483a7a
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
|
@@ -1,16 +1,49 @@
|
|
|
1
|
-
|
|
1
|
+
<h1 align="center">Megrez</h1>
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<strong>Pure Ruby Debug Adapter Protocol client</strong>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="https://rubygems.org/gems/megrez"><img src="https://img.shields.io/gem/v/megrez.svg?colorB=319e8c" alt="Gem Version"></a>
|
|
9
|
+
<a href="https://rubygems.org/gems/megrez"><img src="https://img.shields.io/gem/dt/megrez.svg" alt="Downloads"></a>
|
|
10
|
+
<img src="https://img.shields.io/badge/ruby-%3E%3D%203.1-ruby.svg" alt="Ruby Version">
|
|
11
|
+
<a href="LICENSE.txt"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT License"></a>
|
|
12
|
+
</p>
|
|
13
|
+
|
|
14
|
+
<p align="center">
|
|
15
|
+
<a href="#features">Features</a> ·
|
|
16
|
+
<a href="#installation">Installation</a> ·
|
|
17
|
+
<a href="#quick-start">Quick Start</a> ·
|
|
18
|
+
<a href="#sessions">Sessions</a> ·
|
|
19
|
+
<a href="#conformance">Conformance</a> ·
|
|
20
|
+
<a href="#security">Security</a>
|
|
21
|
+
</p>
|
|
22
|
+
|
|
23
|
+
---
|
|
2
24
|
|
|
3
25
|
Megrez is a pure Ruby Debug Adapter Protocol (DAP) client. It owns adapter
|
|
4
26
|
transport, protocol validation, session state, breakpoints, execution control,
|
|
5
27
|
and lazy variable expansion without depending on an editor or UI toolkit.
|
|
6
28
|
|
|
29
|
+
## Features
|
|
30
|
+
|
|
31
|
+
- Debug Adapter Protocol sessions over stdio or TCP
|
|
32
|
+
- Breakpoints, execution control, stack frames, scopes, variables, and evaluation
|
|
33
|
+
- Ordered events and adapter reverse-request handlers
|
|
34
|
+
- Cancellable, timeout-aware futures for every request
|
|
35
|
+
- Generation-safe variable references that reject stale debugger state
|
|
36
|
+
- Built-in fake adapter and optional `rdbg` conformance testing
|
|
37
|
+
|
|
7
38
|
## Installation
|
|
8
39
|
|
|
9
40
|
```ruby
|
|
10
41
|
gem "megrez"
|
|
11
42
|
```
|
|
12
43
|
|
|
13
|
-
|
|
44
|
+
Megrez supports Ruby 3.1 and later.
|
|
45
|
+
|
|
46
|
+
## Quick Start
|
|
14
47
|
|
|
15
48
|
```ruby
|
|
16
49
|
require "megrez"
|
|
@@ -32,6 +65,8 @@ session.configuration_done.await(timeout: 5)
|
|
|
32
65
|
launch.await(timeout: 5)
|
|
33
66
|
```
|
|
34
67
|
|
|
68
|
+
## Sessions
|
|
69
|
+
|
|
35
70
|
Requests return `Megrez::Future`; call `await(timeout:)` where a blocking
|
|
36
71
|
result is needed. Cancelling a future sends the DAP `cancel` request and
|
|
37
72
|
rejects the local wait. Event callbacks are delivered in adapter arrival order.
|
|
@@ -57,6 +92,8 @@ The bundled fake adapter is exercised by default. Set
|
|
|
57
92
|
`MEGREZ_ADAPTERS=ruby` to additionally run the installed `rdbg` conformance
|
|
58
93
|
scenario.
|
|
59
94
|
|
|
95
|
+
## Development
|
|
96
|
+
|
|
60
97
|
```sh
|
|
61
98
|
bundle install
|
|
62
99
|
bundle exec rake test
|
|
@@ -65,11 +102,17 @@ BUDGET=1 bundle exec rake bench
|
|
|
65
102
|
gem build --strict megrez.gemspec
|
|
66
103
|
```
|
|
67
104
|
|
|
105
|
+
## Security
|
|
106
|
+
|
|
68
107
|
Adapters are external programs and should be treated as untrusted input.
|
|
69
108
|
Megrez does not invoke a shell, caps frame/header/pending-request sizes, and
|
|
70
109
|
bounds retained stderr and callback errors. TCP is unencrypted; use it only on
|
|
71
110
|
a trusted interface or inside a secure tunnel.
|
|
72
111
|
|
|
112
|
+
## Contributing
|
|
113
|
+
|
|
114
|
+
Bug reports and pull requests are welcome at https://github.com/noxdea/megrez.
|
|
115
|
+
|
|
73
116
|
## License
|
|
74
117
|
|
|
75
|
-
Megrez is available under the MIT License.
|
|
118
|
+
Megrez is available under the [MIT License](LICENSE.txt).
|
data/lib/megrez/transport.rb
CHANGED
|
@@ -158,8 +158,10 @@ module Megrez
|
|
|
158
158
|
return unless @process
|
|
159
159
|
return if @process.join(1)
|
|
160
160
|
|
|
161
|
-
|
|
162
|
-
|
|
161
|
+
unless Gem.win_platform?
|
|
162
|
+
Process.kill("TERM", @process.pid)
|
|
163
|
+
return if @process.join(1)
|
|
164
|
+
end
|
|
163
165
|
|
|
164
166
|
Process.kill("KILL", @process.pid)
|
|
165
167
|
@process.join(1)
|
data/lib/megrez/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: megrez
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Yudai Takada
|
|
@@ -58,7 +58,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
58
58
|
- !ruby/object:Gem::Version
|
|
59
59
|
version: '0'
|
|
60
60
|
requirements: []
|
|
61
|
-
rubygems_version:
|
|
61
|
+
rubygems_version: 3.6.9
|
|
62
62
|
specification_version: 4
|
|
63
63
|
summary: Pure Ruby Debug Adapter Protocol client
|
|
64
64
|
test_files: []
|