polyphony 0.67 → 0.71

Sign up to get free protection for your applications and to get access to all the features.
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