polyphony 1.0.1 → 1.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.
Files changed (183) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +1 -1
  3. data/.github/workflows/test_io_uring.yml +1 -1
  4. data/.yardopts +1 -0
  5. data/CHANGELOG.md +9 -0
  6. data/README.md +1 -0
  7. data/TODO.md +6 -12
  8. data/docs/advanced-io.md +224 -0
  9. data/docs/cheat-sheet.md +2 -2
  10. data/docs/readme.md +1 -0
  11. data/examples/core/debug.rb +12 -0
  12. data/examples/core/rpc_benchmark.rb +136 -0
  13. data/examples/core/stream_mockup.rb +68 -0
  14. data/examples/core/throttled_loop_inside_move_on_after.rb +13 -0
  15. data/ext/polyphony/backend_common.c +3 -5
  16. data/ext/polyphony/backend_common.h +10 -1
  17. data/ext/polyphony/backend_io_uring.c +6 -6
  18. data/ext/polyphony/backend_libev.c +5 -5
  19. data/ext/polyphony/extconf.rb +6 -0
  20. data/ext/polyphony/fiber.c +21 -1
  21. data/lib/polyphony/extensions/fiber.rb +1 -0
  22. data/lib/polyphony/extensions/io.rb +74 -74
  23. data/lib/polyphony/extensions/object.rb +6 -0
  24. data/lib/polyphony/extensions/socket.rb +39 -39
  25. data/lib/polyphony/version.rb +1 -1
  26. data/polyphony.gemspec +3 -1
  27. data/test/stress.rb +1 -1
  28. data/test/test_fiber.rb +45 -1
  29. data/test/test_io.rb +46 -0
  30. data/test/test_process_supervision.rb +1 -1
  31. data/test/test_resource_pool.rb +1 -1
  32. data/test/test_scenarios.rb +38 -0
  33. data/test/test_socket.rb +1 -2
  34. data/test/test_thread_pool.rb +4 -2
  35. data/test/test_timer.rb +2 -2
  36. metadata +36 -149
  37. data/vendor/liburing/man/IO_URING_CHECK_VERSION.3 +0 -1
  38. data/vendor/liburing/man/IO_URING_VERSION_MAJOR.3 +0 -1
  39. data/vendor/liburing/man/IO_URING_VERSION_MINOR.3 +0 -1
  40. data/vendor/liburing/man/io_uring.7 +0 -781
  41. data/vendor/liburing/man/io_uring_buf_ring_add.3 +0 -53
  42. data/vendor/liburing/man/io_uring_buf_ring_advance.3 +0 -31
  43. data/vendor/liburing/man/io_uring_buf_ring_cq_advance.3 +0 -41
  44. data/vendor/liburing/man/io_uring_buf_ring_init.3 +0 -30
  45. data/vendor/liburing/man/io_uring_buf_ring_mask.3 +0 -27
  46. data/vendor/liburing/man/io_uring_check_version.3 +0 -72
  47. data/vendor/liburing/man/io_uring_close_ring_fd.3 +0 -43
  48. data/vendor/liburing/man/io_uring_cq_advance.3 +0 -49
  49. data/vendor/liburing/man/io_uring_cq_has_overflow.3 +0 -25
  50. data/vendor/liburing/man/io_uring_cq_ready.3 +0 -26
  51. data/vendor/liburing/man/io_uring_cqe_get_data.3 +0 -53
  52. data/vendor/liburing/man/io_uring_cqe_get_data64.3 +0 -1
  53. data/vendor/liburing/man/io_uring_cqe_seen.3 +0 -42
  54. data/vendor/liburing/man/io_uring_enter.2 +0 -1700
  55. data/vendor/liburing/man/io_uring_enter2.2 +0 -1
  56. data/vendor/liburing/man/io_uring_free_probe.3 +0 -27
  57. data/vendor/liburing/man/io_uring_get_events.3 +0 -33
  58. data/vendor/liburing/man/io_uring_get_probe.3 +0 -30
  59. data/vendor/liburing/man/io_uring_get_sqe.3 +0 -57
  60. data/vendor/liburing/man/io_uring_major_version.3 +0 -1
  61. data/vendor/liburing/man/io_uring_minor_version.3 +0 -1
  62. data/vendor/liburing/man/io_uring_opcode_supported.3 +0 -30
  63. data/vendor/liburing/man/io_uring_peek_cqe.3 +0 -38
  64. data/vendor/liburing/man/io_uring_prep_accept.3 +0 -197
  65. data/vendor/liburing/man/io_uring_prep_accept_direct.3 +0 -1
  66. data/vendor/liburing/man/io_uring_prep_cancel.3 +0 -118
  67. data/vendor/liburing/man/io_uring_prep_cancel64.3 +0 -1
  68. data/vendor/liburing/man/io_uring_prep_close.3 +0 -59
  69. data/vendor/liburing/man/io_uring_prep_close_direct.3 +0 -1
  70. data/vendor/liburing/man/io_uring_prep_connect.3 +0 -66
  71. data/vendor/liburing/man/io_uring_prep_fadvise.3 +0 -59
  72. data/vendor/liburing/man/io_uring_prep_fallocate.3 +0 -59
  73. data/vendor/liburing/man/io_uring_prep_fgetxattr.3 +0 -1
  74. data/vendor/liburing/man/io_uring_prep_files_update.3 +0 -92
  75. data/vendor/liburing/man/io_uring_prep_fsetxattr.3 +0 -1
  76. data/vendor/liburing/man/io_uring_prep_fsync.3 +0 -70
  77. data/vendor/liburing/man/io_uring_prep_getxattr.3 +0 -61
  78. data/vendor/liburing/man/io_uring_prep_link.3 +0 -1
  79. data/vendor/liburing/man/io_uring_prep_link_timeout.3 +0 -94
  80. data/vendor/liburing/man/io_uring_prep_linkat.3 +0 -91
  81. data/vendor/liburing/man/io_uring_prep_madvise.3 +0 -56
  82. data/vendor/liburing/man/io_uring_prep_mkdir.3 +0 -1
  83. data/vendor/liburing/man/io_uring_prep_mkdirat.3 +0 -83
  84. data/vendor/liburing/man/io_uring_prep_msg_ring.3 +0 -92
  85. data/vendor/liburing/man/io_uring_prep_msg_ring_cqe_flags.3 +0 -1
  86. data/vendor/liburing/man/io_uring_prep_multishot_accept.3 +0 -1
  87. data/vendor/liburing/man/io_uring_prep_multishot_accept_direct.3 +0 -1
  88. data/vendor/liburing/man/io_uring_prep_nop.3 +0 -28
  89. data/vendor/liburing/man/io_uring_prep_openat.3 +0 -117
  90. data/vendor/liburing/man/io_uring_prep_openat2.3 +0 -117
  91. data/vendor/liburing/man/io_uring_prep_openat2_direct.3 +0 -1
  92. data/vendor/liburing/man/io_uring_prep_openat_direct.3 +0 -1
  93. data/vendor/liburing/man/io_uring_prep_poll_add.3 +0 -72
  94. data/vendor/liburing/man/io_uring_prep_poll_multishot.3 +0 -1
  95. data/vendor/liburing/man/io_uring_prep_poll_remove.3 +0 -55
  96. data/vendor/liburing/man/io_uring_prep_poll_update.3 +0 -89
  97. data/vendor/liburing/man/io_uring_prep_provide_buffers.3 +0 -140
  98. data/vendor/liburing/man/io_uring_prep_read.3 +0 -69
  99. data/vendor/liburing/man/io_uring_prep_read_fixed.3 +0 -72
  100. data/vendor/liburing/man/io_uring_prep_readv.3 +0 -85
  101. data/vendor/liburing/man/io_uring_prep_readv2.3 +0 -111
  102. data/vendor/liburing/man/io_uring_prep_recv.3 +0 -105
  103. data/vendor/liburing/man/io_uring_prep_recv_multishot.3 +0 -1
  104. data/vendor/liburing/man/io_uring_prep_recvmsg.3 +0 -124
  105. data/vendor/liburing/man/io_uring_prep_recvmsg_multishot.3 +0 -1
  106. data/vendor/liburing/man/io_uring_prep_remove_buffers.3 +0 -52
  107. data/vendor/liburing/man/io_uring_prep_rename.3 +0 -1
  108. data/vendor/liburing/man/io_uring_prep_renameat.3 +0 -96
  109. data/vendor/liburing/man/io_uring_prep_send.3 +0 -66
  110. data/vendor/liburing/man/io_uring_prep_send_set_addr.3 +0 -38
  111. data/vendor/liburing/man/io_uring_prep_send_zc.3 +0 -96
  112. data/vendor/liburing/man/io_uring_prep_send_zc_fixed.3 +0 -1
  113. data/vendor/liburing/man/io_uring_prep_sendmsg.3 +0 -89
  114. data/vendor/liburing/man/io_uring_prep_sendmsg_zc.3 +0 -1
  115. data/vendor/liburing/man/io_uring_prep_setxattr.3 +0 -64
  116. data/vendor/liburing/man/io_uring_prep_shutdown.3 +0 -53
  117. data/vendor/liburing/man/io_uring_prep_socket.3 +0 -118
  118. data/vendor/liburing/man/io_uring_prep_socket_direct.3 +0 -1
  119. data/vendor/liburing/man/io_uring_prep_socket_direct_alloc.3 +0 -1
  120. data/vendor/liburing/man/io_uring_prep_splice.3 +0 -120
  121. data/vendor/liburing/man/io_uring_prep_statx.3 +0 -74
  122. data/vendor/liburing/man/io_uring_prep_symlink.3 +0 -1
  123. data/vendor/liburing/man/io_uring_prep_symlinkat.3 +0 -85
  124. data/vendor/liburing/man/io_uring_prep_sync_file_range.3 +0 -59
  125. data/vendor/liburing/man/io_uring_prep_tee.3 +0 -74
  126. data/vendor/liburing/man/io_uring_prep_timeout.3 +0 -95
  127. data/vendor/liburing/man/io_uring_prep_timeout_remove.3 +0 -1
  128. data/vendor/liburing/man/io_uring_prep_timeout_update.3 +0 -98
  129. data/vendor/liburing/man/io_uring_prep_unlink.3 +0 -1
  130. data/vendor/liburing/man/io_uring_prep_unlinkat.3 +0 -82
  131. data/vendor/liburing/man/io_uring_prep_write.3 +0 -67
  132. data/vendor/liburing/man/io_uring_prep_write_fixed.3 +0 -72
  133. data/vendor/liburing/man/io_uring_prep_writev.3 +0 -85
  134. data/vendor/liburing/man/io_uring_prep_writev2.3 +0 -111
  135. data/vendor/liburing/man/io_uring_queue_exit.3 +0 -26
  136. data/vendor/liburing/man/io_uring_queue_init.3 +0 -89
  137. data/vendor/liburing/man/io_uring_queue_init_params.3 +0 -1
  138. data/vendor/liburing/man/io_uring_recvmsg_cmsg_firsthdr.3 +0 -1
  139. data/vendor/liburing/man/io_uring_recvmsg_cmsg_nexthdr.3 +0 -1
  140. data/vendor/liburing/man/io_uring_recvmsg_name.3 +0 -1
  141. data/vendor/liburing/man/io_uring_recvmsg_out.3 +0 -82
  142. data/vendor/liburing/man/io_uring_recvmsg_payload.3 +0 -1
  143. data/vendor/liburing/man/io_uring_recvmsg_payload_length.3 +0 -1
  144. data/vendor/liburing/man/io_uring_recvmsg_validate.3 +0 -1
  145. data/vendor/liburing/man/io_uring_register.2 +0 -834
  146. data/vendor/liburing/man/io_uring_register_buf_ring.3 +0 -140
  147. data/vendor/liburing/man/io_uring_register_buffers.3 +0 -104
  148. data/vendor/liburing/man/io_uring_register_buffers_sparse.3 +0 -1
  149. data/vendor/liburing/man/io_uring_register_buffers_tags.3 +0 -1
  150. data/vendor/liburing/man/io_uring_register_buffers_update_tag.3 +0 -1
  151. data/vendor/liburing/man/io_uring_register_eventfd.3 +0 -51
  152. data/vendor/liburing/man/io_uring_register_eventfd_async.3 +0 -1
  153. data/vendor/liburing/man/io_uring_register_file_alloc_range.3 +0 -52
  154. data/vendor/liburing/man/io_uring_register_files.3 +0 -112
  155. data/vendor/liburing/man/io_uring_register_files_sparse.3 +0 -1
  156. data/vendor/liburing/man/io_uring_register_files_tags.3 +0 -1
  157. data/vendor/liburing/man/io_uring_register_files_update.3 +0 -1
  158. data/vendor/liburing/man/io_uring_register_files_update_tag.3 +0 -1
  159. data/vendor/liburing/man/io_uring_register_iowq_aff.3 +0 -61
  160. data/vendor/liburing/man/io_uring_register_iowq_max_workers.3 +0 -71
  161. data/vendor/liburing/man/io_uring_register_ring_fd.3 +0 -49
  162. data/vendor/liburing/man/io_uring_register_sync_cancel.3 +0 -71
  163. data/vendor/liburing/man/io_uring_setup.2 +0 -669
  164. data/vendor/liburing/man/io_uring_sq_ready.3 +0 -31
  165. data/vendor/liburing/man/io_uring_sq_space_left.3 +0 -25
  166. data/vendor/liburing/man/io_uring_sqe_set_data.3 +0 -48
  167. data/vendor/liburing/man/io_uring_sqe_set_data64.3 +0 -1
  168. data/vendor/liburing/man/io_uring_sqe_set_flags.3 +0 -87
  169. data/vendor/liburing/man/io_uring_sqring_wait.3 +0 -34
  170. data/vendor/liburing/man/io_uring_submit.3 +0 -46
  171. data/vendor/liburing/man/io_uring_submit_and_get_events.3 +0 -31
  172. data/vendor/liburing/man/io_uring_submit_and_wait.3 +0 -38
  173. data/vendor/liburing/man/io_uring_submit_and_wait_timeout.3 +0 -56
  174. data/vendor/liburing/man/io_uring_unregister_buf_ring.3 +0 -30
  175. data/vendor/liburing/man/io_uring_unregister_buffers.3 +0 -27
  176. data/vendor/liburing/man/io_uring_unregister_eventfd.3 +0 -1
  177. data/vendor/liburing/man/io_uring_unregister_files.3 +0 -27
  178. data/vendor/liburing/man/io_uring_unregister_iowq_aff.3 +0 -1
  179. data/vendor/liburing/man/io_uring_unregister_ring_fd.3 +0 -32
  180. data/vendor/liburing/man/io_uring_wait_cqe.3 +0 -40
  181. data/vendor/liburing/man/io_uring_wait_cqe_nr.3 +0 -43
  182. data/vendor/liburing/man/io_uring_wait_cqe_timeout.3 +0 -53
  183. data/vendor/liburing/man/io_uring_wait_cqes.3 +0 -56
data/test/test_fiber.rb CHANGED
@@ -975,6 +975,50 @@ class MailboxTest < MiniTest::Test
975
975
  assert_equal ['foo'] * 100, messages
976
976
  end
977
977
 
978
+ def test_receive_loop
979
+ buffer = []
980
+ f = spin do
981
+ receive_loop { |msg| buffer << msg }
982
+ ensure
983
+ buffer << :done
984
+ end
985
+
986
+ snooze
987
+ f << :foo
988
+ snooze
989
+ assert_equal [:foo], buffer
990
+
991
+ f << :bar
992
+ snooze
993
+ assert_equal [:foo, :bar], buffer
994
+
995
+ f.kill
996
+ f.join
997
+ assert_equal [:foo, :bar, :done], buffer
998
+ end
999
+
1000
+ def test_receive_loop_break
1001
+ buffer = []
1002
+ f = spin do
1003
+ receive_loop do |msg|
1004
+ buffer << msg
1005
+ break if msg == :bar
1006
+ end
1007
+ buffer << :done
1008
+ end
1009
+
1010
+ snooze
1011
+ f << :foo
1012
+ snooze
1013
+ assert_equal [:foo], buffer
1014
+
1015
+ f << :bar
1016
+ snooze
1017
+ assert_equal [:foo, :bar, :done], buffer
1018
+
1019
+ assert_equal :dead, f.state
1020
+ end
1021
+
978
1022
  def test_receive_exception
979
1023
  e = RuntimeError.new 'foo'
980
1024
  spin { Fiber.current.parent << e }
@@ -1287,4 +1331,4 @@ class DebugTest < MiniTest::Test
1287
1331
  10.times { snooze }
1288
1332
  assert_equal [0, 1, 2], buf
1289
1333
  end
1290
- end
1334
+ end
data/test/test_io.rb CHANGED
@@ -321,11 +321,36 @@ class IOTest < MiniTest::Test
321
321
  assert_equal 6, len
322
322
  end
323
323
 
324
+ def test_splice_class_method_with_eof_detection
325
+ i1, o1 = IO.pipe
326
+ i2, o2 = IO.pipe
327
+ splice_lens = []
328
+
329
+ spin {
330
+ loop {
331
+ len = IO.splice(i1, o2, 1000)
332
+ splice_lens << len
333
+ break if len == 0
334
+ }
335
+
336
+ o2.close
337
+ }
338
+
339
+ o1.write('foobar')
340
+ snooze
341
+ o1.close
342
+
343
+ result = i2.read
344
+ assert_equal 'foobar', result
345
+ assert_equal [6, 0], splice_lens
346
+ end
347
+
324
348
  def test_splice_from_to_eof
325
349
  i1, o1 = IO.pipe
326
350
  i2, o2 = IO.pipe
327
351
  len = nil
328
352
 
353
+
329
354
  f = spin {
330
355
  len = o2.splice_from(i1, -1000)
331
356
  o2.close
@@ -672,6 +697,27 @@ class IOClassMethodsTest < MiniTest::Test
672
697
  assert_equal [:ready, 'foo', 'bar', :done], buf
673
698
  end
674
699
 
700
+ def test_read_loop_break
701
+ i, o = IO.pipe
702
+
703
+ buf = []
704
+ f = spin do
705
+ buf << :ready
706
+ i.read_loop do |d|
707
+ buf << d
708
+ break if d == 'bar'
709
+ end
710
+ buf << :done
711
+ end
712
+
713
+ # writing always causes snoozing
714
+ o << 'foo'
715
+ 3.times { snooze }
716
+ o << 'bar'
717
+ f.await
718
+ assert_equal [:ready, 'foo', 'bar', :done], buf
719
+ end
720
+
675
721
  def test_read_loop_with_max_len
676
722
  r, w = IO.pipe
677
723
 
@@ -72,4 +72,4 @@ class ProcessSupervisionTest < MiniTest::Test
72
72
  assert_equal "foo\n", IO.read(fn)
73
73
 
74
74
  end
75
- end
75
+ end
@@ -126,4 +126,4 @@ class ResourcePoolTest < MiniTest::Test
126
126
 
127
127
  assert_equal [1, 1, 1, 1], buf
128
128
  end
129
- end
129
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'helper'
4
+
5
+ class ScenarioTest < MiniTest::Test
6
+ def test_monocrono
7
+ count = 256
8
+
9
+ workers = {}
10
+ count.times do |i|
11
+ factor = i + 1
12
+ workers[i] = spin_loop do
13
+ peer, num = receive
14
+ peer << (num * factor)
15
+ end
16
+ end
17
+
18
+ router = spin_loop do
19
+ peer, id, num = receive
20
+ worker = workers[id]
21
+ worker << [peer, num]
22
+ end
23
+
24
+ results = []
25
+ (count * 256).times do
26
+ id = rand(count)
27
+ num = rand(1000)
28
+ router << [Fiber.current, id, num]
29
+ result = receive
30
+ assert_equal num * (id + 1), result
31
+ end
32
+ ensure
33
+ workers.each_value do |w|
34
+ w.kill
35
+ w.join
36
+ end
37
+ end
38
+ end
data/test/test_socket.rb CHANGED
@@ -75,7 +75,7 @@ class TCPSocketTest < MiniTest::Test
75
75
  server_fiber = spin do
76
76
  while (socket = server.accept)
77
77
  spin do
78
- while (data = socket.read(8192))
78
+ while (data = socket.readpartial(8192))
79
79
  socket << data
80
80
  end
81
81
  end
@@ -477,5 +477,4 @@ class MultishotAcceptTest < MiniTest::Test
477
477
  server_fiber.await
478
478
  assert_kind_of Errno::EBADF, error
479
479
  end
480
-
481
480
  end
@@ -25,7 +25,9 @@ class ThreadPoolTest < MiniTest::Test
25
25
  threads = []
26
26
  results = []
27
27
 
28
- 20.times do |i|
28
+ count = 40
29
+
30
+ count.times do |i|
29
31
  spin do
30
32
  results << @pool.process do
31
33
  threads << Thread.current
@@ -38,7 +40,7 @@ class ThreadPoolTest < MiniTest::Test
38
40
  suspend
39
41
 
40
42
  assert_equal @pool.size, threads.uniq.size
41
- assert_equal (0..19).map { |i| i * 10}, results.sort
43
+ assert_equal (0..(count - 1)).map { |i| i * 10}, results.sort
42
44
  end
43
45
 
44
46
  def test_process_with_exception
data/test/test_timer.rb CHANGED
@@ -50,7 +50,7 @@ class TimerMoveOnAfterTest < MiniTest::Test
50
50
  t1 = Time.now
51
51
 
52
52
  assert_nil v
53
- assert_in_range 0.15..0.4, t1 - t0
53
+ assert_in_range 0.12..0.4, t1 - t0
54
54
  end
55
55
  end
56
56
 
@@ -162,4 +162,4 @@ class TimerMiscTest < MiniTest::Test
162
162
  f.stop
163
163
  assert_in_range 3..7, buffer.size if IS_LINUX
164
164
  end
165
- end
165
+ end
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: 1.0.1
4
+ version: '1.1'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Rosner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-14 00:00:00.000000000 Z
11
+ date: 2023-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler
@@ -122,6 +122,34 @@ dependencies:
122
122
  - - '='
123
123
  - !ruby/object:Gem::Version
124
124
  version: 1.1.10
125
+ - !ruby/object:Gem::Dependency
126
+ name: debug
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '='
130
+ - !ruby/object:Gem::Version
131
+ version: 1.8.0
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '='
137
+ - !ruby/object:Gem::Version
138
+ version: 1.8.0
139
+ - !ruby/object:Gem::Dependency
140
+ name: benchmark-ips
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '='
144
+ - !ruby/object:Gem::Version
145
+ version: 2.10.0
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '='
151
+ - !ruby/object:Gem::Version
152
+ version: 2.10.0
125
153
  description:
126
154
  email: sharon@noteflakes.com
127
155
  executables: []
@@ -151,6 +179,7 @@ files:
151
179
  - docs/_user-guide/all-about-timers.md
152
180
  - docs/_user-guide/index.md
153
181
  - docs/_user-guide/web-server.md
182
+ - docs/advanced-io.md
154
183
  - docs/assets/echo-fibers.svg
155
184
  - docs/assets/polyphony-logo.png
156
185
  - docs/assets/sleeping-fiber.svg
@@ -182,6 +211,7 @@ files:
182
211
  - examples/core/calc_with_restart.rb
183
212
  - examples/core/calc_with_supervise.rb
184
213
  - examples/core/channels.rb
214
+ - examples/core/debug.rb
185
215
  - examples/core/deferring-an-operation.rb
186
216
  - examples/core/enumerable.rb
187
217
  - examples/core/erlang-style-genserver.rb
@@ -198,15 +228,18 @@ files:
198
228
  - examples/core/recurrent-timer.rb
199
229
  - examples/core/resource_delegate.rb
200
230
  - examples/core/ring.rb
231
+ - examples/core/rpc_benchmark.rb
201
232
  - examples/core/shutdown_all_children.rb
202
233
  - examples/core/spin.rb
203
234
  - examples/core/spin_error_backtrace.rb
235
+ - examples/core/stream_mockup.rb
204
236
  - examples/core/supervise-process.rb
205
237
  - examples/core/supervisor.rb
206
238
  - examples/core/suspend.rb
207
239
  - examples/core/terminate_main_fiber.rb
208
240
  - examples/core/thread-sleep.rb
209
241
  - examples/core/thread_pool.rb
242
+ - examples/core/throttled_loop_inside_move_on_after.rb
210
243
  - examples/core/throttling.rb
211
244
  - examples/core/timeout.rb
212
245
  - examples/core/trap1.rb
@@ -374,6 +407,7 @@ files:
374
407
  - test/test_queue.rb
375
408
  - test/test_raw_buffer.rb
376
409
  - test/test_resource_pool.rb
410
+ - test/test_scenarios.rb
377
411
  - test/test_signal.rb
378
412
  - test/test_socket.rb
379
413
  - test/test_supervise.rb
@@ -425,153 +459,6 @@ files:
425
459
  - vendor/liburing/liburing.pc.in
426
460
  - vendor/liburing/liburing.spec
427
461
  - vendor/liburing/make-debs.sh
428
- - vendor/liburing/man/IO_URING_CHECK_VERSION.3
429
- - vendor/liburing/man/IO_URING_VERSION_MAJOR.3
430
- - vendor/liburing/man/IO_URING_VERSION_MINOR.3
431
- - vendor/liburing/man/io_uring.7
432
- - vendor/liburing/man/io_uring_buf_ring_add.3
433
- - vendor/liburing/man/io_uring_buf_ring_advance.3
434
- - vendor/liburing/man/io_uring_buf_ring_cq_advance.3
435
- - vendor/liburing/man/io_uring_buf_ring_init.3
436
- - vendor/liburing/man/io_uring_buf_ring_mask.3
437
- - vendor/liburing/man/io_uring_check_version.3
438
- - vendor/liburing/man/io_uring_close_ring_fd.3
439
- - vendor/liburing/man/io_uring_cq_advance.3
440
- - vendor/liburing/man/io_uring_cq_has_overflow.3
441
- - vendor/liburing/man/io_uring_cq_ready.3
442
- - vendor/liburing/man/io_uring_cqe_get_data.3
443
- - vendor/liburing/man/io_uring_cqe_get_data64.3
444
- - vendor/liburing/man/io_uring_cqe_seen.3
445
- - vendor/liburing/man/io_uring_enter.2
446
- - vendor/liburing/man/io_uring_enter2.2
447
- - vendor/liburing/man/io_uring_free_probe.3
448
- - vendor/liburing/man/io_uring_get_events.3
449
- - vendor/liburing/man/io_uring_get_probe.3
450
- - vendor/liburing/man/io_uring_get_sqe.3
451
- - vendor/liburing/man/io_uring_major_version.3
452
- - vendor/liburing/man/io_uring_minor_version.3
453
- - vendor/liburing/man/io_uring_opcode_supported.3
454
- - vendor/liburing/man/io_uring_peek_cqe.3
455
- - vendor/liburing/man/io_uring_prep_accept.3
456
- - vendor/liburing/man/io_uring_prep_accept_direct.3
457
- - vendor/liburing/man/io_uring_prep_cancel.3
458
- - vendor/liburing/man/io_uring_prep_cancel64.3
459
- - vendor/liburing/man/io_uring_prep_close.3
460
- - vendor/liburing/man/io_uring_prep_close_direct.3
461
- - vendor/liburing/man/io_uring_prep_connect.3
462
- - vendor/liburing/man/io_uring_prep_fadvise.3
463
- - vendor/liburing/man/io_uring_prep_fallocate.3
464
- - vendor/liburing/man/io_uring_prep_fgetxattr.3
465
- - vendor/liburing/man/io_uring_prep_files_update.3
466
- - vendor/liburing/man/io_uring_prep_fsetxattr.3
467
- - vendor/liburing/man/io_uring_prep_fsync.3
468
- - vendor/liburing/man/io_uring_prep_getxattr.3
469
- - vendor/liburing/man/io_uring_prep_link.3
470
- - vendor/liburing/man/io_uring_prep_link_timeout.3
471
- - vendor/liburing/man/io_uring_prep_linkat.3
472
- - vendor/liburing/man/io_uring_prep_madvise.3
473
- - vendor/liburing/man/io_uring_prep_mkdir.3
474
- - vendor/liburing/man/io_uring_prep_mkdirat.3
475
- - vendor/liburing/man/io_uring_prep_msg_ring.3
476
- - vendor/liburing/man/io_uring_prep_msg_ring_cqe_flags.3
477
- - vendor/liburing/man/io_uring_prep_multishot_accept.3
478
- - vendor/liburing/man/io_uring_prep_multishot_accept_direct.3
479
- - vendor/liburing/man/io_uring_prep_nop.3
480
- - vendor/liburing/man/io_uring_prep_openat.3
481
- - vendor/liburing/man/io_uring_prep_openat2.3
482
- - vendor/liburing/man/io_uring_prep_openat2_direct.3
483
- - vendor/liburing/man/io_uring_prep_openat_direct.3
484
- - vendor/liburing/man/io_uring_prep_poll_add.3
485
- - vendor/liburing/man/io_uring_prep_poll_multishot.3
486
- - vendor/liburing/man/io_uring_prep_poll_remove.3
487
- - vendor/liburing/man/io_uring_prep_poll_update.3
488
- - vendor/liburing/man/io_uring_prep_provide_buffers.3
489
- - vendor/liburing/man/io_uring_prep_read.3
490
- - vendor/liburing/man/io_uring_prep_read_fixed.3
491
- - vendor/liburing/man/io_uring_prep_readv.3
492
- - vendor/liburing/man/io_uring_prep_readv2.3
493
- - vendor/liburing/man/io_uring_prep_recv.3
494
- - vendor/liburing/man/io_uring_prep_recv_multishot.3
495
- - vendor/liburing/man/io_uring_prep_recvmsg.3
496
- - vendor/liburing/man/io_uring_prep_recvmsg_multishot.3
497
- - vendor/liburing/man/io_uring_prep_remove_buffers.3
498
- - vendor/liburing/man/io_uring_prep_rename.3
499
- - vendor/liburing/man/io_uring_prep_renameat.3
500
- - vendor/liburing/man/io_uring_prep_send.3
501
- - vendor/liburing/man/io_uring_prep_send_set_addr.3
502
- - vendor/liburing/man/io_uring_prep_send_zc.3
503
- - vendor/liburing/man/io_uring_prep_send_zc_fixed.3
504
- - vendor/liburing/man/io_uring_prep_sendmsg.3
505
- - vendor/liburing/man/io_uring_prep_sendmsg_zc.3
506
- - vendor/liburing/man/io_uring_prep_setxattr.3
507
- - vendor/liburing/man/io_uring_prep_shutdown.3
508
- - vendor/liburing/man/io_uring_prep_socket.3
509
- - vendor/liburing/man/io_uring_prep_socket_direct.3
510
- - vendor/liburing/man/io_uring_prep_socket_direct_alloc.3
511
- - vendor/liburing/man/io_uring_prep_splice.3
512
- - vendor/liburing/man/io_uring_prep_statx.3
513
- - vendor/liburing/man/io_uring_prep_symlink.3
514
- - vendor/liburing/man/io_uring_prep_symlinkat.3
515
- - vendor/liburing/man/io_uring_prep_sync_file_range.3
516
- - vendor/liburing/man/io_uring_prep_tee.3
517
- - vendor/liburing/man/io_uring_prep_timeout.3
518
- - vendor/liburing/man/io_uring_prep_timeout_remove.3
519
- - vendor/liburing/man/io_uring_prep_timeout_update.3
520
- - vendor/liburing/man/io_uring_prep_unlink.3
521
- - vendor/liburing/man/io_uring_prep_unlinkat.3
522
- - vendor/liburing/man/io_uring_prep_write.3
523
- - vendor/liburing/man/io_uring_prep_write_fixed.3
524
- - vendor/liburing/man/io_uring_prep_writev.3
525
- - vendor/liburing/man/io_uring_prep_writev2.3
526
- - vendor/liburing/man/io_uring_queue_exit.3
527
- - vendor/liburing/man/io_uring_queue_init.3
528
- - vendor/liburing/man/io_uring_queue_init_params.3
529
- - vendor/liburing/man/io_uring_recvmsg_cmsg_firsthdr.3
530
- - vendor/liburing/man/io_uring_recvmsg_cmsg_nexthdr.3
531
- - vendor/liburing/man/io_uring_recvmsg_name.3
532
- - vendor/liburing/man/io_uring_recvmsg_out.3
533
- - vendor/liburing/man/io_uring_recvmsg_payload.3
534
- - vendor/liburing/man/io_uring_recvmsg_payload_length.3
535
- - vendor/liburing/man/io_uring_recvmsg_validate.3
536
- - vendor/liburing/man/io_uring_register.2
537
- - vendor/liburing/man/io_uring_register_buf_ring.3
538
- - vendor/liburing/man/io_uring_register_buffers.3
539
- - vendor/liburing/man/io_uring_register_buffers_sparse.3
540
- - vendor/liburing/man/io_uring_register_buffers_tags.3
541
- - vendor/liburing/man/io_uring_register_buffers_update_tag.3
542
- - vendor/liburing/man/io_uring_register_eventfd.3
543
- - vendor/liburing/man/io_uring_register_eventfd_async.3
544
- - vendor/liburing/man/io_uring_register_file_alloc_range.3
545
- - vendor/liburing/man/io_uring_register_files.3
546
- - vendor/liburing/man/io_uring_register_files_sparse.3
547
- - vendor/liburing/man/io_uring_register_files_tags.3
548
- - vendor/liburing/man/io_uring_register_files_update.3
549
- - vendor/liburing/man/io_uring_register_files_update_tag.3
550
- - vendor/liburing/man/io_uring_register_iowq_aff.3
551
- - vendor/liburing/man/io_uring_register_iowq_max_workers.3
552
- - vendor/liburing/man/io_uring_register_ring_fd.3
553
- - vendor/liburing/man/io_uring_register_sync_cancel.3
554
- - vendor/liburing/man/io_uring_setup.2
555
- - vendor/liburing/man/io_uring_sq_ready.3
556
- - vendor/liburing/man/io_uring_sq_space_left.3
557
- - vendor/liburing/man/io_uring_sqe_set_data.3
558
- - vendor/liburing/man/io_uring_sqe_set_data64.3
559
- - vendor/liburing/man/io_uring_sqe_set_flags.3
560
- - vendor/liburing/man/io_uring_sqring_wait.3
561
- - vendor/liburing/man/io_uring_submit.3
562
- - vendor/liburing/man/io_uring_submit_and_get_events.3
563
- - vendor/liburing/man/io_uring_submit_and_wait.3
564
- - vendor/liburing/man/io_uring_submit_and_wait_timeout.3
565
- - vendor/liburing/man/io_uring_unregister_buf_ring.3
566
- - vendor/liburing/man/io_uring_unregister_buffers.3
567
- - vendor/liburing/man/io_uring_unregister_eventfd.3
568
- - vendor/liburing/man/io_uring_unregister_files.3
569
- - vendor/liburing/man/io_uring_unregister_iowq_aff.3
570
- - vendor/liburing/man/io_uring_unregister_ring_fd.3
571
- - vendor/liburing/man/io_uring_wait_cqe.3
572
- - vendor/liburing/man/io_uring_wait_cqe_nr.3
573
- - vendor/liburing/man/io_uring_wait_cqe_timeout.3
574
- - vendor/liburing/man/io_uring_wait_cqes.3
575
462
  - vendor/liburing/src/Makefile
576
463
  - vendor/liburing/src/arch/aarch64/lib.h
577
464
  - vendor/liburing/src/arch/aarch64/syscall.h
@@ -1 +0,0 @@
1
- io_uring_check_version.3
@@ -1 +0,0 @@
1
- io_uring_check_version.3
@@ -1 +0,0 @@
1
- io_uring_check_version.3