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