polyphony 0.49.2 → 0.53.0

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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +1 -1
  3. data/CHANGELOG.md +34 -0
  4. data/Gemfile.lock +7 -68
  5. data/TODO.md +37 -3
  6. data/examples/core/forking.rb +2 -2
  7. data/examples/core/nested.rb +21 -0
  8. data/examples/core/suspend.rb +13 -0
  9. data/examples/core/terminate_main_fiber.rb +12 -0
  10. data/examples/io/echo_server.rb +1 -0
  11. data/examples/io/tcp_proxy.rb +2 -2
  12. data/ext/polyphony/backend_common.h +58 -8
  13. data/ext/polyphony/backend_io_uring.c +223 -41
  14. data/ext/polyphony/backend_io_uring_context.c +1 -0
  15. data/ext/polyphony/backend_io_uring_context.h +1 -0
  16. data/ext/polyphony/backend_libev.c +322 -34
  17. data/ext/polyphony/event.c +1 -1
  18. data/ext/polyphony/extconf.rb +9 -2
  19. data/ext/polyphony/fiber.c +2 -1
  20. data/ext/polyphony/polyphony.c +102 -0
  21. data/ext/polyphony/polyphony.h +33 -2
  22. data/ext/polyphony/polyphony_ext.c +3 -0
  23. data/ext/polyphony/queue.c +1 -1
  24. data/ext/polyphony/runqueue.c +7 -1
  25. data/ext/polyphony/runqueue_ring_buffer.c +9 -0
  26. data/ext/polyphony/runqueue_ring_buffer.h +1 -0
  27. data/ext/polyphony/socket_extensions.c +33 -0
  28. data/ext/polyphony/thread.c +14 -0
  29. data/lib/polyphony/adapters/irb.rb +1 -1
  30. data/lib/polyphony/adapters/mysql2.rb +1 -1
  31. data/lib/polyphony/adapters/postgres.rb +5 -5
  32. data/lib/polyphony/adapters/process.rb +4 -4
  33. data/lib/polyphony/core/exceptions.rb +1 -0
  34. data/lib/polyphony/core/global_api.rb +6 -6
  35. data/lib/polyphony/core/sync.rb +1 -1
  36. data/lib/polyphony/core/throttler.rb +1 -1
  37. data/lib/polyphony/core/timer.rb +63 -20
  38. data/lib/polyphony/extensions/core.rb +5 -5
  39. data/lib/polyphony/extensions/fiber.rb +2 -0
  40. data/lib/polyphony/extensions/io.rb +21 -22
  41. data/lib/polyphony/extensions/openssl.rb +6 -6
  42. data/lib/polyphony/extensions/socket.rb +56 -47
  43. data/lib/polyphony/version.rb +1 -1
  44. data/polyphony.gemspec +6 -5
  45. data/test/helper.rb +1 -1
  46. data/test/stress.rb +2 -0
  47. data/test/test_backend.rb +69 -5
  48. data/test/test_fiber.rb +16 -0
  49. data/test/test_global_api.rb +2 -2
  50. data/test/test_io.rb +84 -1
  51. data/test/test_kernel.rb +1 -1
  52. data/test/test_signal.rb +1 -1
  53. data/test/test_socket.rb +61 -0
  54. data/test/test_timer.rb +41 -8
  55. metadata +22 -60
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: polyphony
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.49.2
4
+ version: 0.53.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Rosner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-19 00:00:00.000000000 Z
11
+ date: 2021-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 5.13.0
33
+ version: 5.14.4
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 5.13.0
40
+ version: 5.14.4
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest-reporters
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - '='
95
95
  - !ruby/object:Gem::Version
96
96
  version: 0.13.1
97
+ - !ruby/object:Gem::Dependency
98
+ name: msgpack
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '='
102
+ - !ruby/object:Gem::Version
103
+ version: 1.4.2
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '='
109
+ - !ruby/object:Gem::Version
110
+ version: 1.4.2
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: pg
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -212,62 +226,6 @@ dependencies:
212
226
  - - '='
213
227
  - !ruby/object:Gem::Version
214
228
  version: 0.17.1
215
- - !ruby/object:Gem::Dependency
216
- name: jekyll
217
- requirement: !ruby/object:Gem::Requirement
218
- requirements:
219
- - - "~>"
220
- - !ruby/object:Gem::Version
221
- version: 3.8.6
222
- type: :development
223
- prerelease: false
224
- version_requirements: !ruby/object:Gem::Requirement
225
- requirements:
226
- - - "~>"
227
- - !ruby/object:Gem::Version
228
- version: 3.8.6
229
- - !ruby/object:Gem::Dependency
230
- name: jekyll-remote-theme
231
- requirement: !ruby/object:Gem::Requirement
232
- requirements:
233
- - - "~>"
234
- - !ruby/object:Gem::Version
235
- version: 0.4.1
236
- type: :development
237
- prerelease: false
238
- version_requirements: !ruby/object:Gem::Requirement
239
- requirements:
240
- - - "~>"
241
- - !ruby/object:Gem::Version
242
- version: 0.4.1
243
- - !ruby/object:Gem::Dependency
244
- name: jekyll-seo-tag
245
- requirement: !ruby/object:Gem::Requirement
246
- requirements:
247
- - - "~>"
248
- - !ruby/object:Gem::Version
249
- version: 2.6.1
250
- type: :development
251
- prerelease: false
252
- version_requirements: !ruby/object:Gem::Requirement
253
- requirements:
254
- - - "~>"
255
- - !ruby/object:Gem::Version
256
- version: 2.6.1
257
- - !ruby/object:Gem::Dependency
258
- name: just-the-docs
259
- requirement: !ruby/object:Gem::Requirement
260
- requirements:
261
- - - "~>"
262
- - !ruby/object:Gem::Version
263
- version: 0.3.0
264
- type: :development
265
- prerelease: false
266
- version_requirements: !ruby/object:Gem::Requirement
267
- requirements:
268
- - - "~>"
269
- - !ruby/object:Gem::Version
270
- version: 0.3.0
271
229
  description:
272
230
  email: sharon@noteflakes.com
273
231
  executables: []
@@ -353,6 +311,7 @@ files:
353
311
  - examples/core/forking.rb
354
312
  - examples/core/handling-signals.rb
355
313
  - examples/core/interrupt.rb
314
+ - examples/core/nested.rb
356
315
  - examples/core/pingpong.rb
357
316
  - examples/core/recurrent-timer.rb
358
317
  - examples/core/resource_delegate.rb
@@ -360,6 +319,8 @@ files:
360
319
  - examples/core/spin_error_backtrace.rb
361
320
  - examples/core/supervise-process.rb
362
321
  - examples/core/supervisor.rb
322
+ - examples/core/suspend.rb
323
+ - examples/core/terminate_main_fiber.rb
363
324
  - examples/core/thread-sleep.rb
364
325
  - examples/core/thread_pool.rb
365
326
  - examples/core/throttling.rb
@@ -457,6 +418,7 @@ files:
457
418
  - ext/polyphony/runqueue.c
458
419
  - ext/polyphony/runqueue_ring_buffer.c
459
420
  - ext/polyphony/runqueue_ring_buffer.h
421
+ - ext/polyphony/socket_extensions.c
460
422
  - ext/polyphony/thread.c
461
423
  - ext/polyphony/tracing.c
462
424
  - lib/polyphony.rb