polyphony 0.67 → 0.71

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.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: polyphony
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.67'
4
+ version: '0.71'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Rosner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-06 00:00:00.000000000 Z
11
+ date: 2021-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler
@@ -357,7 +357,7 @@ files:
357
357
  - lib/polyphony/core/thread_pool.rb
358
358
  - lib/polyphony/core/throttler.rb
359
359
  - lib/polyphony/core/timer.rb
360
- - lib/polyphony/debugger/server.rb
360
+ - lib/polyphony/debugger.rb
361
361
  - lib/polyphony/extensions/core.rb
362
362
  - lib/polyphony/extensions/debug.rb
363
363
  - lib/polyphony/extensions/fiber.rb
@@ -421,7 +421,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
421
421
  - !ruby/object:Gem::Version
422
422
  version: '0'
423
423
  requirements: []
424
- rubygems_version: 3.1.6
424
+ rubygems_version: 3.1.4
425
425
  signing_key:
426
426
  specification_version: 4
427
427
  summary: Fine grained concurrency for Ruby
@@ -1,137 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'polyphony/extensions/debug'
4
-
5
- module Polyphony
6
- class DebugServer
7
- TP_EVENTS = [
8
- :line,
9
- :call,
10
- :return,
11
- :b_call,
12
- :b_return
13
- ]
14
-
15
-
16
- def self.start(socket_path)
17
- server = self.new(socket_path)
18
- server.start
19
-
20
- trace = TracePoint.new(*TP_EVENTS) { |tp| server.handle_tp(trace, tp) }
21
- trace.enable
22
-
23
- at_exit do
24
- puts "program terminated"
25
- trace.disable
26
- server.stop
27
- end
28
- end
29
-
30
- def initialize(socket_path)
31
- @socket_path = socket_path
32
- @fiber = Fiber.current
33
- @controller = spin { control_loop }
34
- puts "@fiber: #{@fiber.inspect}"
35
- end
36
-
37
- def start
38
- fiber = Fiber.current
39
- @server = spin(:pdbg_server) do
40
- puts("Listening on #{@socket_path}")
41
- FileUtils.rm(@socket_path) if File.exists?(@socket_path)
42
- socket = UNIXServer.new(@socket_path)
43
- fiber << :ready
44
- id = 0
45
- socket.accept_loop do |client|
46
- puts "accepted connection"
47
- handle_client(client)
48
- end
49
- end
50
- receive
51
- end
52
-
53
- def stop
54
- @server.terminate
55
- @controller.terminate
56
- end
57
-
58
- POLYPHONY_LIB_DIR = File.expand_path('../..', __dir__)
59
- def handle_client(client)
60
- @client = client
61
- puts "trace enabled"
62
- end
63
-
64
- def control_loop
65
- @cmd = :step
66
- loop do
67
- case @cmd
68
- when :step
69
- step
70
- end
71
- end
72
- end
73
-
74
- def step
75
- tp = nil
76
- fiber = nil
77
- while true
78
- event = receive
79
- fiber = event[:fiber]
80
- if fiber == @fiber && event[:kind] == :line && event[:path] !~ /#{POLYPHONY_LIB_DIR}/
81
- interact_with_client(event)
82
- fiber << :ok
83
- fiber.__unpark__
84
- return
85
- end
86
-
87
- fiber << :ok
88
- fiber.__unpark__
89
- end
90
- rescue => e
91
- puts "Uncaught error: #{e.inspect}"
92
- @trace&.disable
93
- @client = nil
94
- end
95
-
96
- def interact_with_client(event)
97
- @client.puts event.inspect
98
- result = @client.gets&.chomp
99
- end
100
-
101
- def handle_tp(trace, tp)
102
- return if @in_handle_tp
103
-
104
- process_tp(trace, tp)
105
- end
106
-
107
- def process_tp(trace, tp)
108
- @in_handle_tp = true
109
- if !@client
110
- wait_for_client
111
- end
112
-
113
- puts "- #{tp.event} #{tp.path}:#{tp.lineno}"
114
-
115
- fiber = Fiber.current
116
- fiber.__park__
117
-
118
- @controller << {
119
- fiber: fiber,
120
- kind: tp.event,
121
- path: tp.path,
122
- lineno: tp.lineno
123
- }
124
- receive
125
- ensure
126
- @in_handle_tp = nil
127
- end
128
-
129
- def wait_for_client
130
- puts "wait_for_client"
131
- sleep 0.1 until @client
132
- puts " got client!"
133
- msg = @client.gets
134
- @client.puts msg
135
- end
136
- end
137
- end