polyphony 0.47.0 → 0.47.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 606d74c424178b9e8bb17cd7b2848e0e1c1b092e77eeb98ce1026fd7d1f38c61
4
- data.tar.gz: 9e003833af5f2c8505ea41d2ebe728fbf776f428f47d925b0185fd592d102737
3
+ metadata.gz: 4343a37f26793e76528ea8e87287e2f3fbc4c8182064e820eedfc131d4308729
4
+ data.tar.gz: 89273660342f647e3e016290ef48ac10f33b040a3ca6538b1fdd29aab13519da
5
5
  SHA512:
6
- metadata.gz: 1cfb1c81d3b38a545ceb856d4619c11386407081ecd43a6e6209d2ed4efb1c436242aa016657d379f0a0331ca24944f5e51c5359ad44afc3a88d53af1de7976b
7
- data.tar.gz: 9b47ba16c7de942bea952f9f12d225aed86a505c2fd6cf7740a88d5d398af0e91e37a16e3ee9af2129ad88c8ff17c2b5aba7dcf6630811af62202e4b2585d6dc
6
+ metadata.gz: 7aa6b9f5e9ea61b682a112b30286b1e66f71088da67f96827d6415a6be12de4874de79ccd2236f36ba4da1bf5e9c078735bd07ac32520268c12cadfe60cd8565
7
+ data.tar.gz: e564dfed776907921bdceafcdb47e78fe5655d345812f3484d7493df74f3485d09bf32e756c766cc45efe45591524c6a24d55c19530fa14ededbb4f481e80977
@@ -1,484 +1,502 @@
1
+ ## 0.47.5
2
+
3
+ - Add `socket_class` argument to `Backend#accept`, `Backend#accept_loop`
4
+ - Fix `#supervise` to stop when all children fibers are done
5
+
6
+ ## 0.47.4
7
+
8
+ - Add support for Unix sockets
9
+
10
+ ## 0.47.3
11
+
12
+ - Enable I/O in signal handlers (#45)
13
+ - Accept `:interval` argument in `#spin_loop`
14
+
15
+ ## 0.47.2
16
+
17
+ - Fix API compatibility between TCPSocket and IO
18
+
1
19
  ## 0.47.0
2
20
 
3
- * Implement `#spin_scope` used for creating blocking fiber scopes
4
- * Reimplement `move_on_after`, `cancel_after`, `Timeout.timeout` using
21
+ - Implement `#spin_scope` used for creating blocking fiber scopes
22
+ - Reimplement `move_on_after`, `cancel_after`, `Timeout.timeout` using
5
23
  `Backend#timeout` (avoids creating canceller fiber for most common use case)
6
- * Implement `Backend#timeout` API
7
- * Implemented capped queues
24
+ - Implement `Backend#timeout` API
25
+ - Implemented capped queues
8
26
 
9
27
  ## 0.46.1
10
28
 
11
- * Add `TCPServer#accept_loop`, `OpenSSL::SSL::SSLSocket#accept_loop` method
12
- * Fix compilation error on MacOS (#43)
13
- * Fix backtrace for `Timeout.timeout`
14
- * Add `Backend#timer_loop`
29
+ - Add `TCPServer#accept_loop`, `OpenSSL::SSL::SSLSocket#accept_loop` method
30
+ - Fix compilation error on MacOS (#43)
31
+ - Fix backtrace for `Timeout.timeout`
32
+ - Add `Backend#timer_loop`
15
33
 
16
34
  ## 0.46.0
17
35
 
18
- * Implement [io_uring backend](https://github.com/digital-fabric/polyphony/pull/44)
36
+ - Implement [io_uring backend](https://github.com/digital-fabric/polyphony/pull/44)
19
37
 
20
38
  ## 0.45.5
21
39
 
22
- * Fix compilation error (#43)
23
- * Add support for resetting move_on_after, cancel_after timeouts
24
- * Optimize anti-event starvation polling
25
- * Implement optimized runqueue for better performance
26
- * Schedule parent with priority on uncaught exception
27
- * Fix race condition in `Mutex#synchronize` (#41)
40
+ - Fix compilation error (#43)
41
+ - Add support for resetting move_on_after, cancel_after timeouts
42
+ - Optimize anti-event starvation polling
43
+ - Implement optimized runqueue for better performance
44
+ - Schedule parent with priority on uncaught exception
45
+ - Fix race condition in `Mutex#synchronize` (#41)
28
46
 
29
47
  ## 0.45.4
30
48
 
31
- * Improve signal trapping mechanism
49
+ - Improve signal trapping mechanism
32
50
 
33
51
  ## 0.45.3
34
52
 
35
- * Don't swallow error in `Process#kill_and_await`
36
- * Add `Fiber#mailbox` attribute reader
37
- * Fix bug in `Fiber.await`
38
- * Implement `IO#getc`, `IO#getbyte`
53
+ - Don't swallow error in `Process#kill_and_await`
54
+ - Add `Fiber#mailbox` attribute reader
55
+ - Fix bug in `Fiber.await`
56
+ - Implement `IO#getc`, `IO#getbyte`
39
57
 
40
58
  ## 0.45.2
41
59
 
42
- * Rewrite `Fiber#<<`, `Fiber#await`, `Fiber#receive` in C
60
+ - Rewrite `Fiber#<<`, `Fiber#await`, `Fiber#receive` in C
43
61
 
44
62
  ## 0.45.1
45
63
 
46
- * Fix Net::HTTP compatibility
47
- * Fix fs adapter
48
- * Improve performance of IO#puts
49
- * Mutex#synchronize
50
- * Fix Socket#connect
51
- * Cleanup code
52
- * Improve support for Ruby 3 keyword args
64
+ - Fix Net::HTTP compatibility
65
+ - Fix fs adapter
66
+ - Improve performance of IO#puts
67
+ - Mutex#synchronize
68
+ - Fix Socket#connect
69
+ - Cleanup code
70
+ - Improve support for Ruby 3 keyword args
53
71
 
54
72
  ## 0.45.0
55
73
 
56
- * Cleanup code
57
- * Rename `Agent` to `Backend`
58
- * Implement `Polyphony::ConditionVariable`
59
- * Fix Kernel.system
74
+ - Cleanup code
75
+ - Rename `Agent` to `Backend`
76
+ - Implement `Polyphony::ConditionVariable`
77
+ - Fix Kernel.system
60
78
 
61
79
  ## 0.44.0 2020-07-25
62
80
 
63
- * Fix reentrant `ResourcePool` (#38)
64
- * Add `ResourcePool#discard!` (#35)
65
- * Add `Mysql2::Client` and `Sequel::ConnectionPool` adapters (#35)
66
- * Reimplement `Kernel.trap` using `Fiber#interject`
67
- * Add `Fiber#interject` for running arbitrary code on arbitrary fibers (#39)
81
+ - Fix reentrant `ResourcePool` (#38)
82
+ - Add `ResourcePool#discard!` (#35)
83
+ - Add `Mysql2::Client` and `Sequel::ConnectionPool` adapters (#35)
84
+ - Reimplement `Kernel.trap` using `Fiber#interject`
85
+ - Add `Fiber#interject` for running arbitrary code on arbitrary fibers (#39)
68
86
 
69
87
  ## 0.43.11 2020-07-24
70
88
 
71
- * Dump uncaught exception info for forked process (#36)
72
- * Add additional socket config options (#37)
89
+ - Dump uncaught exception info for forked process (#36)
90
+ - Add additional socket config options (#37)
73
91
  - :reuse_port (`SO_REUSEPORT`)
74
92
  - :backlog (listen backlog, default `SOMAXCONN`)
75
- * Fix possible race condition in Queue#shift (#34)
93
+ - Fix possible race condition in Queue#shift (#34)
76
94
 
77
95
  ## 0.43.10 2020-07-23
78
96
 
79
- * Fix race condition when terminating fibers (#33)
80
- * Fix lock release in `Mutex` (#32)
81
- * Virtualize agent interface
82
- * Implement `LibevAgent_connect`
97
+ - Fix race condition when terminating fibers (#33)
98
+ - Fix lock release in `Mutex` (#32)
99
+ - Virtualize agent interface
100
+ - Implement `LibevAgent_connect`
83
101
 
84
102
  ## 0.43.9 2020-07-22
85
103
 
86
- * Rewrite `Channel` using `Queue`
87
- * Rewrite `Mutex` using `Queue`
88
- * Reimplement `Event` in C to prevent cross-thread race condition
89
- * Reimplement `ResourcePool` using `Queue`
90
- * Implement `Queue#size`
104
+ - Rewrite `Channel` using `Queue`
105
+ - Rewrite `Mutex` using `Queue`
106
+ - Reimplement `Event` in C to prevent cross-thread race condition
107
+ - Reimplement `ResourcePool` using `Queue`
108
+ - Implement `Queue#size`
91
109
 
92
110
  ## 0.43.8 2020-07-21
93
111
 
94
- * Rename `LibevQueue` to `Queue`
95
- * Reimplement Event using `Agent#wait_event`
96
- * Improve Queue shift queue performance
97
- * Introduce `Agent#wait_event` API for waiting on asynchronous events
98
- * Minimize `fcntl` syscalls in IO operations
112
+ - Rename `LibevQueue` to `Queue`
113
+ - Reimplement Event using `Agent#wait_event`
114
+ - Improve Queue shift queue performance
115
+ - Introduce `Agent#wait_event` API for waiting on asynchronous events
116
+ - Minimize `fcntl` syscalls in IO operations
99
117
 
100
118
  ## 0.43.7 2020-07-20
101
119
 
102
- * Fix memory leak in ResourcePool (#31)
103
- * Check and adjust file position before reading (#30)
104
- * Minor documentation fixes
120
+ - Fix memory leak in ResourcePool (#31)
121
+ - Check and adjust file position before reading (#30)
122
+ - Minor documentation fixes
105
123
 
106
124
  ## 0.43.6 2020-07-18
107
125
 
108
- * Allow brute-force interrupting with second Ctrl-C
109
- * Fix outgoing SSL connections (#28)
110
- * Improve Fiber#await_all_children with many children
111
- * Use `writev` for writing multiple strings
112
- * Add logo (thanks [Gerald](https://webocube.com/)!)
126
+ - Allow brute-force interrupting with second Ctrl-C
127
+ - Fix outgoing SSL connections (#28)
128
+ - Improve Fiber#await_all_children with many children
129
+ - Use `writev` for writing multiple strings
130
+ - Add logo (thanks [Gerald](https://webocube.com/)!)
113
131
 
114
132
  ## 0.43.5 2020-07-13
115
133
 
116
- * Fix `#read_nonblock`, `#write_nonblock` for `IO` and `Socket` (#27)
117
- * Patch `Kernel#p`, `IO#puts` to issue single write call
118
- * Add support for multiple arguments in `IO#write` and `LibevAgent#write`
119
- * Use LibevQueue for fiber run queue
120
- * Reimplement LibevQueue as ring buffer
134
+ - Fix `#read_nonblock`, `#write_nonblock` for `IO` and `Socket` (#27)
135
+ - Patch `Kernel#p`, `IO#puts` to issue single write call
136
+ - Add support for multiple arguments in `IO#write` and `LibevAgent#write`
137
+ - Use LibevQueue for fiber run queue
138
+ - Reimplement LibevQueue as ring buffer
121
139
 
122
140
  ## 0.43.4 2020-07-09
123
141
 
124
- * Reimplement Kernel#trap
125
- * Dynamically allocate read buffer if length not given (#23)
126
- * Prevent CPU saturation on infinite sleep (#24)
142
+ - Reimplement Kernel#trap
143
+ - Dynamically allocate read buffer if length not given (#23)
144
+ - Prevent CPU saturation on infinite sleep (#24)
127
145
 
128
146
  ## 0.43.3 2020-07-08
129
147
 
130
- * Fix behaviour after call to `Process.daemon` (#8)
131
- * Replace core `Queue` class with `Polyphony::Queue` (#22)
132
- * Make `ResourcePool` reentrant (#1)
133
- * Accept `:with_exception` argument in `cancel_after` (#16)
148
+ - Fix behaviour after call to `Process.daemon` (#8)
149
+ - Replace core `Queue` class with `Polyphony::Queue` (#22)
150
+ - Make `ResourcePool` reentrant (#1)
151
+ - Accept `:with_exception` argument in `cancel_after` (#16)
134
152
 
135
153
  ## 0.43.2 2020-07-07
136
154
 
137
- * Fix sending Redis commands with array arguments (#21)
155
+ - Fix sending Redis commands with array arguments (#21)
138
156
 
139
157
  ## 0.43.1 2020-06
140
158
 
141
- * Fix compiling C-extension on MacOS (#20)
159
+ - Fix compiling C-extension on MacOS (#20)
142
160
 
143
161
  ## 0.43 2020-07-05
144
162
 
145
- * Add IO#read_loop
146
- * Fix OpenSSL extension
147
- * More work on docs
163
+ - Add IO#read_loop
164
+ - Fix OpenSSL extension
165
+ - More work on docs
148
166
 
149
167
  ## 0.42 2020-07-03
150
168
 
151
- * Improve documentation
152
- * Fix backtrace on SIGINT
153
- * Implement LibevAgent#accept_loop, #read_loop
154
- * Move ref counting from thread to agent
155
- * Short circuit switchpoint if continuing with the same fiber
156
- * Always do a switchpoint in #read, #write, #accept
169
+ - Improve documentation
170
+ - Fix backtrace on SIGINT
171
+ - Implement LibevAgent#accept_loop, #read_loop
172
+ - Move ref counting from thread to agent
173
+ - Short circuit switchpoint if continuing with the same fiber
174
+ - Always do a switchpoint in #read, #write, #accept
157
175
 
158
176
  ## 0.41 2020-06-27
159
177
 
160
- * Introduce System Agent design, remove all `Gyro` classes
178
+ - Introduce System Agent design, remove all `Gyro` classes
161
179
 
162
180
  ## 0.40 2020-05-04
163
181
 
164
- * More improvements to stability after fork
182
+ - More improvements to stability after fork
165
183
 
166
184
  ## 0.38 2020-04-13
167
185
 
168
- * Fix post-fork segfault if parent process has multiple threads with active watchers
186
+ - Fix post-fork segfault if parent process has multiple threads with active watchers
169
187
 
170
188
  ## 0.37 2020-04-07
171
189
 
172
- * Explicitly kill threads on exit to prevent possible segfault
173
- * Remove Modulation dependency
190
+ - Explicitly kill threads on exit to prevent possible segfault
191
+ - Remove Modulation dependency
174
192
 
175
193
  ## 0.36 2020-03-31
176
194
 
177
- * More docs
178
- * More C code refactoring
179
- * Fix freeing for active child, signal watchers
195
+ - More docs
196
+ - More C code refactoring
197
+ - Fix freeing for active child, signal watchers
180
198
 
181
199
  ## 0.35 2020-03-29
182
200
 
183
- * Rename `Fiber#cancel!` to `Fiber#cancel`
184
- * Rename `Gyro::Async#signal!` to `Gyro::Async#signal`
185
- * Use `Fiber#auto_watcher` in thread pool, thread extension
186
- * Implement `Fiber#auto_io` for reusing IO watcher instances
187
- * Refactor C code
201
+ - Rename `Fiber#cancel!` to `Fiber#cancel`
202
+ - Rename `Gyro::Async#signal!` to `Gyro::Async#signal`
203
+ - Use `Fiber#auto_watcher` in thread pool, thread extension
204
+ - Implement `Fiber#auto_io` for reusing IO watcher instances
205
+ - Refactor C code
188
206
 
189
207
  ## 0.34 2020-03-25
190
208
 
191
- * Add `Fiber#auto_watcher` mainly for use in places like `Gyro::Queue#shift`
192
- * Refactor C extension
193
- * Improved GC'ing for watchers
194
- * Implement process supervisor (`Polyphony::ProcessSupervisor`)
195
- * Improve fiber supervision
196
- * Fix forking behaviour
197
- * Use correct backtrace for fiber control exceptions
198
- * Allow calling `move_on_after` and `cancel_after` without block
209
+ - Add `Fiber#auto_watcher` mainly for use in places like `Gyro::Queue#shift`
210
+ - Refactor C extension
211
+ - Improved GC'ing for watchers
212
+ - Implement process supervisor (`Polyphony::ProcessSupervisor`)
213
+ - Improve fiber supervision
214
+ - Fix forking behaviour
215
+ - Use correct backtrace for fiber control exceptions
216
+ - Allow calling `move_on_after` and `cancel_after` without block
199
217
 
200
218
  ## 0.33 2020-03-08
201
219
 
202
- * Implement `Fiber#supervise` (WIP)
203
- * Add `Fiber#restart` API
204
- * Fix race condition in `Thread#join`, `Thread#raise` (#14)
205
- * Add `Exception#source_fiber` - references the fiber in which an uncaught
220
+ - Implement `Fiber#supervise` (WIP)
221
+ - Add `Fiber#restart` API
222
+ - Fix race condition in `Thread#join`, `Thread#raise` (#14)
223
+ - Add `Exception#source_fiber` - references the fiber in which an uncaught
206
224
  exception occurred
207
225
 
208
226
  ## 0.32 2020-02-29
209
227
 
210
- * Accept optional throttling rate in `#spin_loop`
211
- * Remove CancelScope
212
- * Allow spinning fibers from a parent fiber other than the current
213
- * Add `#receive_pending` global API.
214
- * Prevent race condition in `Gyro::Queue`.
215
- * Improve signal handling - `INT`, `TERM` signals are now always handled in the
228
+ - Accept optional throttling rate in `#spin_loop`
229
+ - Remove CancelScope
230
+ - Allow spinning fibers from a parent fiber other than the current
231
+ - Add `#receive_pending` global API.
232
+ - Prevent race condition in `Gyro::Queue`.
233
+ - Improve signal handling - `INT`, `TERM` signals are now always handled in the
216
234
  main fiber
217
- * Fix adapter requires (redis and postgres)
235
+ - Fix adapter requires (redis and postgres)
218
236
 
219
237
  ## 0.31 2020-02-20
220
238
 
221
- * Fix signal handling race condition (#13)
222
- * Move adapter code into polyphony/adapters
223
- * Fix spin_loop caller, add tag parameter
239
+ - Fix signal handling race condition (#13)
240
+ - Move adapter code into polyphony/adapters
241
+ - Fix spin_loop caller, add tag parameter
224
242
 
225
243
  ## 0.30 2020-02-04
226
244
 
227
- * Add support for awaiting a fiber from multiple monitor fibers at once
228
- * Implemented child fibers
229
- * Fix TERM and INT signal handling (#11)
230
- * Fix compiling on Linux
231
- * Do not reset runnable value in Gyro_suspend (prevents interrupting timers)
232
- * Don't snooze when stopping a fiber
233
- * Fix IO#read for files larger than 8KB (#10)
234
- * Fix fiber messaging in main fiber
235
- * Prevent signalling of inactive async watcher
236
- * Better fiber messaging
245
+ - Add support for awaiting a fiber from multiple monitor fibers at once
246
+ - Implemented child fibers
247
+ - Fix TERM and INT signal handling (#11)
248
+ - Fix compiling on Linux
249
+ - Do not reset runnable value in Gyro_suspend (prevents interrupting timers)
250
+ - Don't snooze when stopping a fiber
251
+ - Fix IO#read for files larger than 8KB (#10)
252
+ - Fix fiber messaging in main fiber
253
+ - Prevent signalling of inactive async watcher
254
+ - Better fiber messaging
237
255
 
238
256
  ## 0.29 2020-02-02
239
257
 
240
- * Pass SignalException to main fiber
241
- * Add (restore) default thread pool
242
- * Prevent race condition in Thread#join
243
- * Add support for cross-thread fiber scheduling
244
- * Remove `#defer` global method
245
- * Prevent starvation of waiting fibers when using snooze (#7)
246
- * Improve tracing
247
- * Fix IRB adapter
258
+ - Pass SignalException to main fiber
259
+ - Add (restore) default thread pool
260
+ - Prevent race condition in Thread#join
261
+ - Add support for cross-thread fiber scheduling
262
+ - Remove `#defer` global method
263
+ - Prevent starvation of waiting fibers when using snooze (#7)
264
+ - Improve tracing
265
+ - Fix IRB adapter
248
266
 
249
267
  ## 0.28 2020-01-27
250
268
 
251
- * Accept block in Supervisor#initialize
252
- * Refactor `ThreadPool`
253
- * Implement fiber switch events for `TracePoint`
254
- * Add optional tag parameter to #spin
255
- * Correctly increment ref count for indefinite sleep
256
- * Add `irb` adapter
257
- * Add support for listen/notify to postgres adapter
258
- * Use `:waiting`, `:runnable`, `:running`, `:dead` for fiber states
259
- * Move docs to https://digital-fabric.github.io/polyphony/
269
+ - Accept block in Supervisor#initialize
270
+ - Refactor `ThreadPool`
271
+ - Implement fiber switch events for `TracePoint`
272
+ - Add optional tag parameter to #spin
273
+ - Correctly increment ref count for indefinite sleep
274
+ - Add `irb` adapter
275
+ - Add support for listen/notify to postgres adapter
276
+ - Use `:waiting`, `:runnable`, `:running`, `:dead` for fiber states
277
+ - Move docs to https://digital-fabric.github.io/polyphony/
260
278
 
261
279
  ## 0.27 2020-01-19
262
280
 
263
- * Reimplement `Throttler` using recurring timer
264
- * Add `Gyro::Selector` for wrapping libev
265
- * Add `Gyro::Queue`, a fiber-aware thread-safe queue
266
- * Implement multithreaded fiber scheduling
281
+ - Reimplement `Throttler` using recurring timer
282
+ - Add `Gyro::Selector` for wrapping libev
283
+ - Add `Gyro::Queue`, a fiber-aware thread-safe queue
284
+ - Implement multithreaded fiber scheduling
267
285
 
268
286
  ## 0.26 2020-01-12
269
287
 
270
- * Optimize `IO#read_watcher`, `IO#write_watcher`
271
- * Implement `Fiber#raise`
272
- * Fix `Kernel#gets` with `ARGV`
273
- * Return `[pid, exit_status]` from `Gyro::Child#await`
288
+ - Optimize `IO#read_watcher`, `IO#write_watcher`
289
+ - Implement `Fiber#raise`
290
+ - Fix `Kernel#gets` with `ARGV`
291
+ - Return `[pid, exit_status]` from `Gyro::Child#await`
274
292
 
275
293
  ## 0.25 2020-01-10
276
294
 
277
- * Fold `Coprocess` functionality into `Fiber`
278
- * Add support for indefinite `#sleep`
295
+ - Fold `Coprocess` functionality into `Fiber`
296
+ - Add support for indefinite `#sleep`
279
297
 
280
298
  ## 0.24 2020-01-08
281
299
 
282
- * Extract HTTP code into separate polyphony-http gem
283
- * Cull core, io examples
284
- * Remove `SIGINT` handler
300
+ - Extract HTTP code into separate polyphony-http gem
301
+ - Cull core, io examples
302
+ - Remove `SIGINT` handler
285
303
 
286
304
  ## 0.23 2020-01-07
287
305
 
288
- * Remove `API#pulse`
289
- * Better repeat timer, reimplement `API#every`
290
- * Move global API methods to separate module, include in `Object` instead of
306
+ - Remove `API#pulse`
307
+ - Better repeat timer, reimplement `API#every`
308
+ - Move global API methods to separate module, include in `Object` instead of
291
309
  `Kernel`
292
- * Improve setting root fiber and corresponding coprocess
293
- * Fix `ResourcePool#preheat!`
294
- * Rename `$Coprocess#list` to `Coprocess#map`
295
- * Fix `CancelScope#on_cancel`, remove `CancelScope#protect`
296
- * Remove `auto_run` mechanism. Just use `suspend`!
297
- * Optional coverage report for tests
298
- * More tests
299
- * Add `Coprocess.select` and `Supervisor#select` methods
300
- * Add `Coprocess.join` alias to `Coprocess.await` method
301
- * Add support for cancelling multiple coprocesses with a single cancel scope
302
- * Fix stopping a coprocess before it being scheduled for the first time
303
- * Rewrite `thread`, `thread_pool` modules
304
- * Add `Kernel#orig_sleep` alias to sync `#sleep` method
305
- * Add optional resume value to `Gyro::Async#signal!`
306
- * Patch Fiber#inspect to show correct block location
307
- * Add Gyro.run
308
- * Move away from callback-based API for `Gyro::Timer`, `Gyro::Signal`
310
+ - Improve setting root fiber and corresponding coprocess
311
+ - Fix `ResourcePool#preheat!`
312
+ - Rename `$Coprocess#list` to `Coprocess#map`
313
+ - Fix `CancelScope#on_cancel`, remove `CancelScope#protect`
314
+ - Remove `auto_run` mechanism. Just use `suspend`!
315
+ - Optional coverage report for tests
316
+ - More tests
317
+ - Add `Coprocess.select` and `Supervisor#select` methods
318
+ - Add `Coprocess.join` alias to `Coprocess.await` method
319
+ - Add support for cancelling multiple coprocesses with a single cancel scope
320
+ - Fix stopping a coprocess before it being scheduled for the first time
321
+ - Rewrite `thread`, `thread_pool` modules
322
+ - Add `Kernel#orig_sleep` alias to sync `#sleep` method
323
+ - Add optional resume value to `Gyro::Async#signal!`
324
+ - Patch Fiber#inspect to show correct block location
325
+ - Add Gyro.run
326
+ - Move away from callback-based API for `Gyro::Timer`, `Gyro::Signal`
309
327
 
310
328
  ## 0.22 2020-01-02
311
329
 
312
- * Redesign Gyro scheduling subsystem, go scheduler-less
313
- * More docs
314
- * Rewrite HTTP client agent c1b63787
315
- * Increment Gyro refcount in ResourcePool#acquire
316
- * Rewrite ResourcePool
317
- * Fix socket extensions
318
- * Fix ALPN setup in Net.secure_socket
330
+ - Redesign Gyro scheduling subsystem, go scheduler-less
331
+ - More docs
332
+ - Rewrite HTTP client agent c1b63787
333
+ - Increment Gyro refcount in ResourcePool#acquire
334
+ - Rewrite ResourcePool
335
+ - Fix socket extensions
336
+ - Fix ALPN setup in Net.secure_socket
319
337
 
320
338
  ## 0.21 2019-12-12
321
339
 
322
- * Add Coprocess.await (for waiting for multiple coprocesses)
323
- * Add Coprocess#caller, Coprocess#location methods
324
- * Remove callback-oriented Gyro APIs
325
- * Revise signal handling API
326
- * Improve error handling in HTTP/2 adapter
327
- * More documentation
340
+ - Add Coprocess.await (for waiting for multiple coprocesses)
341
+ - Add Coprocess#caller, Coprocess#location methods
342
+ - Remove callback-oriented Gyro APIs
343
+ - Revise signal handling API
344
+ - Improve error handling in HTTP/2 adapter
345
+ - More documentation
328
346
 
329
347
  ## 0.20 2019-11-27
330
348
 
331
- * Refactor and improve CancelScope, ResourcePool
332
- * Reimplement cancel_after, move_on_after using plain timers
333
- * Use Timer#await instead of Timer#start in Pulser
334
- * Rename Fiber.main to Fiber.root
335
- * Replace use of defer with proper fiber scheduling
336
- * Improve Coprocess resume, interrupt, cancel methods
337
- * Cleanup code using Rubocop
338
- * Update and cleanup examples
339
- * Remove fiber pool
340
- * Rename `CoprocessInterrupt` to `Interrupt`
341
- * Fix ResourcePool, Mutex, Thread, ThreadPool
342
- * Fix coprocess message passing behaviour
343
- * Add HTTP::Request#consume API
344
- * Use bundler 2.x
345
- * Remove separate parse loop fiber in HTTP 1, HTTP 2 adapters
346
- * Fix handling of exceptions in coprocesses
347
- * Implement synthetic, sanitized exception backtrace showing control flow across
349
+ - Refactor and improve CancelScope, ResourcePool
350
+ - Reimplement cancel_after, move_on_after using plain timers
351
+ - Use Timer#await instead of Timer#start in Pulser
352
+ - Rename Fiber.main to Fiber.root
353
+ - Replace use of defer with proper fiber scheduling
354
+ - Improve Coprocess resume, interrupt, cancel methods
355
+ - Cleanup code using Rubocop
356
+ - Update and cleanup examples
357
+ - Remove fiber pool
358
+ - Rename `CoprocessInterrupt` to `Interrupt`
359
+ - Fix ResourcePool, Mutex, Thread, ThreadPool
360
+ - Fix coprocess message passing behaviour
361
+ - Add HTTP::Request#consume API
362
+ - Use bundler 2.x
363
+ - Remove separate parse loop fiber in HTTP 1, HTTP 2 adapters
364
+ - Fix handling of exceptions in coprocesses
365
+ - Implement synthetic, sanitized exception backtrace showing control flow across
348
366
  fibers
349
- * Fix channels
350
- * Fix HTTP1 connection shutdown and error states
351
- * Workaround for IO#read without length
352
- * Rename `next_tick` to `defer`
353
- * Fix race condition in firing of deferred items, use linked list instead of
367
+ - Fix channels
368
+ - Fix HTTP1 connection shutdown and error states
369
+ - Workaround for IO#read without length
370
+ - Rename `next_tick` to `defer`
371
+ - Fix race condition in firing of deferred items, use linked list instead of
354
372
  array for deferred items
355
- * Rename `EV` module to `Gyro`
356
- * Keep track of main fiber when forking
357
- * Add `<<` alias for `send_chunk` in HTTP::Request
358
- * Implement Socket#accept in C
359
- * Better conformance of rack adapter to rack spec (WIP)
360
- * Fix HTTP1 adapter
361
- * Better support for debugging with ruby-debug-ide (WIP)
373
+ - Rename `EV` module to `Gyro`
374
+ - Keep track of main fiber when forking
375
+ - Add `<<` alias for `send_chunk` in HTTP::Request
376
+ - Implement Socket#accept in C
377
+ - Better conformance of rack adapter to rack spec (WIP)
378
+ - Fix HTTP1 adapter
379
+ - Better support for debugging with ruby-debug-ide (WIP)
362
380
 
363
381
  ## 0.19 2019-06-12
364
382
 
365
- * Rewrite HTTP server for better concurrency, sequential API
366
- * Support 204 no-content response in HTTP 1
367
- * Add optional count parameter to Kernel#throttled_loop for finite looping
368
- * Implement Fiber#safe_transfer in C
369
- * Optimize Kernel#next_tick implementation using ev_idle instead of ev_timer
383
+ - Rewrite HTTP server for better concurrency, sequential API
384
+ - Support 204 no-content response in HTTP 1
385
+ - Add optional count parameter to Kernel#throttled_loop for finite looping
386
+ - Implement Fiber#safe_transfer in C
387
+ - Optimize Kernel#next_tick implementation using ev_idle instead of ev_timer
370
388
 
371
389
  ## 0.18 2019-06-08
372
390
 
373
- * Rename Kernel#coproc to Kernel#spin
374
- * Rewrite Supervisor#spin
391
+ - Rename Kernel#coproc to Kernel#spin
392
+ - Rewrite Supervisor#spin
375
393
 
376
394
  ## 0.17 2019-05-24
377
395
 
378
- * Implement IO#read_watcher, IO#write_watcher in C for better performance
379
- * Implement nonblocking (yielding) versions of Kernel#system, IO.popen,
396
+ - Implement IO#read_watcher, IO#write_watcher in C for better performance
397
+ - Implement nonblocking (yielding) versions of Kernel#system, IO.popen,
380
398
  Process.detach, IO#gets IO#puts, other IO singleton methods
381
- * Add Coprocess#join as alias to Coprocess#await
382
- * Rename Kernel#spawn to Kernel#coproc
383
- * Fix encoding of strings read with IO#read, IO#readpartial
384
- * Fix non-blocking behaviour of IO#read, IO#readpartial, IO#write
399
+ - Add Coprocess#join as alias to Coprocess#await
400
+ - Rename Kernel#spawn to Kernel#coproc
401
+ - Fix encoding of strings read with IO#read, IO#readpartial
402
+ - Fix non-blocking behaviour of IO#read, IO#readpartial, IO#write
385
403
 
386
404
  ## 0.16 2019-05-22
387
405
 
388
- * Reorganize and refactor code
389
- * Allow opening secure socket without OpenSSL context
406
+ - Reorganize and refactor code
407
+ - Allow opening secure socket without OpenSSL context
390
408
 
391
409
  ## 0.15 2019-05-20
392
410
 
393
- * Optimize `#next_tick` callback (about 6% faster than before)
394
- * Fix IO#<< to return self
395
- * Refactor HTTP code and examples
396
- * Fix race condition in `Supervisor#stop!`
397
- * Add `Kernel#snooze` method (`EV.snooze` will be deprecated eventually)
411
+ - Optimize `#next_tick` callback (about 6% faster than before)
412
+ - Fix IO#<< to return self
413
+ - Refactor HTTP code and examples
414
+ - Fix race condition in `Supervisor#stop!`
415
+ - Add `Kernel#snooze` method (`EV.snooze` will be deprecated eventually)
398
416
 
399
417
  ## 0.14 2019-05-17
400
418
 
401
- * Use chunked encoding in HTTP 1 response
402
- * Rewrite `IO#read`, `#readpartial`, `#write` in C (about 30% performance improvement)
403
- * Add method delegation to `ResourcePool`
404
- * Optimize PG::Connection#async_exec
405
- * Fix `Coprocess#cancel!`
406
- * Preliminary support for websocket (see `examples/io/http_ws_server.rb`)
407
- * Rename `Coroutine` to `Coprocess`
419
+ - Use chunked encoding in HTTP 1 response
420
+ - Rewrite `IO#read`, `#readpartial`, `#write` in C (about 30% performance improvement)
421
+ - Add method delegation to `ResourcePool`
422
+ - Optimize PG::Connection#async_exec
423
+ - Fix `Coprocess#cancel!`
424
+ - Preliminary support for websocket (see `examples/io/http_ws_server.rb`)
425
+ - Rename `Coroutine` to `Coprocess`
408
426
 
409
427
  ## 0.13 2019-01-05
410
428
 
411
- * Rename Rubato to Polyphony (I know, this is getting silly...)
429
+ - Rename Rubato to Polyphony (I know, this is getting silly...)
412
430
 
413
431
  ## 0.12 2019-01-01
414
432
 
415
- * Add Coroutine#resume
416
- * Improve startup time
417
- * Accept rate: or interval: arguments for throttle
418
- * Set correct backtrace for errors
419
- * Improve handling of uncaught raised errors
420
- * Implement HTTP 1.1/2 client agent with connection management
433
+ - Add Coroutine#resume
434
+ - Improve startup time
435
+ - Accept rate: or interval: arguments for throttle
436
+ - Set correct backtrace for errors
437
+ - Improve handling of uncaught raised errors
438
+ - Implement HTTP 1.1/2 client agent with connection management
421
439
 
422
440
  ## 0.11 2018-12-27
423
441
 
424
- * Move reactor loop to secondary fiber, allow blocking operations on main
442
+ - Move reactor loop to secondary fiber, allow blocking operations on main
425
443
  fiber.
426
- * Example implementation of erlang-style generic server pattern (implement async
444
+ - Example implementation of erlang-style generic server pattern (implement async
427
445
  API to a coroutine)
428
- * Implement coroutine mailboxes, Coroutine#<<, Coroutine#receive, Kernel.receive
446
+ - Implement coroutine mailboxes, Coroutine#<<, Coroutine#receive, Kernel.receive
429
447
  for message passing
430
- * Add Coroutine.current for getting current coroutine
448
+ - Add Coroutine.current for getting current coroutine
431
449
 
432
450
  ## 0.10 2018-11-20
433
451
 
434
- * Rewrite Rubato core for simpler code and better performance
435
- * Implement EV.snooze (sleep until next tick)
436
- * Coroutine encapsulates a task spawned on a separate fiber
437
- * Supervisor supervises multiple coroutines
438
- * CancelScope used to cancel an ongoing task (usually with a timeout)
439
- * Rate throttling
440
- * Implement async SSL server
452
+ - Rewrite Rubato core for simpler code and better performance
453
+ - Implement EV.snooze (sleep until next tick)
454
+ - Coroutine encapsulates a task spawned on a separate fiber
455
+ - Supervisor supervises multiple coroutines
456
+ - CancelScope used to cancel an ongoing task (usually with a timeout)
457
+ - Rate throttling
458
+ - Implement async SSL server
441
459
 
442
460
  ## 0.9 2018-11-14
443
461
 
444
- * Rename Nuclear to Rubato
462
+ - Rename Nuclear to Rubato
445
463
 
446
464
  ## 0.8 2018-10-04
447
465
 
448
- * Replace nio4r with in-house extension based on libev, with better API,
466
+ - Replace nio4r with in-house extension based on libev, with better API,
449
467
  better performance, support for IO, timer, signal and async watchers
450
- * Fix mem leak coming from nio4r (probably related to code in Selector#select)
468
+ - Fix mem leak coming from nio4r (probably related to code in Selector#select)
451
469
 
452
470
  ## 0.7 2018-09-13
453
471
 
454
- * Implement resource pool
455
- * transaction method for pg cient
456
- * Async connect for pg client
457
- * Add testing module for testing async code
458
- * Improve HTTP server performance
459
- * Proper promise chaining
472
+ - Implement resource pool
473
+ - transaction method for pg cient
474
+ - Async connect for pg client
475
+ - Add testing module for testing async code
476
+ - Improve HTTP server performance
477
+ - Proper promise chaining
460
478
 
461
479
  ## 0.6 2018-09-11
462
480
 
463
- * Add http, redis, pg dependencies
464
- * Move ALPN code inside net module
481
+ - Add http, redis, pg dependencies
482
+ - Move ALPN code inside net module
465
483
 
466
484
  ## 0.4 2018-09-10
467
485
 
468
- * Code refactored and reogranized
469
- * Fix recursion in next_tick
470
- * HTTP 2 server with support for ALPN protocol negotiation and HTTP upgrade
471
- * OpenSSL server
486
+ - Code refactored and reogranized
487
+ - Fix recursion in next_tick
488
+ - HTTP 2 server with support for ALPN protocol negotiation and HTTP upgrade
489
+ - OpenSSL server
472
490
 
473
491
  ## 0.3 2018-09-06
474
492
 
475
- * Event reactor
476
- * Timers
477
- * Promises
478
- * async/await syntax for promises
479
- * IO and read/write stream
480
- * TCP server/client
481
- * Promised threads
482
- * HTTP server
483
- * Redis interface
484
- * PostgreSQL interface
493
+ - Event reactor
494
+ - Timers
495
+ - Promises
496
+ - async/await syntax for promises
497
+ - IO and read/write stream
498
+ - TCP server/client
499
+ - Promised threads
500
+ - HTTP server
501
+ - Redis interface
502
+ - PostgreSQL interface