polyphony 0.47.1 → 0.47.5.1

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: 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