polyphony 1.0.1 → 1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/test.yml +1 -1
- data/.github/workflows/test_io_uring.yml +1 -1
- data/.yardopts +1 -0
- data/CHANGELOG.md +9 -0
- data/README.md +1 -0
- data/TODO.md +6 -12
- data/docs/advanced-io.md +224 -0
- data/docs/cheat-sheet.md +2 -2
- data/docs/readme.md +1 -0
- data/examples/core/debug.rb +12 -0
- data/examples/core/rpc_benchmark.rb +136 -0
- data/examples/core/stream_mockup.rb +68 -0
- data/examples/core/throttled_loop_inside_move_on_after.rb +13 -0
- data/ext/polyphony/backend_common.c +3 -5
- data/ext/polyphony/backend_common.h +10 -1
- data/ext/polyphony/backend_io_uring.c +6 -6
- data/ext/polyphony/backend_libev.c +5 -5
- data/ext/polyphony/extconf.rb +6 -0
- data/ext/polyphony/fiber.c +21 -1
- data/lib/polyphony/extensions/fiber.rb +1 -0
- data/lib/polyphony/extensions/io.rb +74 -74
- data/lib/polyphony/extensions/object.rb +6 -0
- data/lib/polyphony/extensions/socket.rb +39 -39
- data/lib/polyphony/version.rb +1 -1
- data/polyphony.gemspec +3 -1
- data/test/stress.rb +1 -1
- data/test/test_fiber.rb +45 -1
- data/test/test_io.rb +46 -0
- data/test/test_process_supervision.rb +1 -1
- data/test/test_resource_pool.rb +1 -1
- data/test/test_scenarios.rb +38 -0
- data/test/test_socket.rb +1 -2
- data/test/test_thread_pool.rb +4 -2
- data/test/test_timer.rb +2 -2
- metadata +36 -149
- data/vendor/liburing/man/IO_URING_CHECK_VERSION.3 +0 -1
- data/vendor/liburing/man/IO_URING_VERSION_MAJOR.3 +0 -1
- data/vendor/liburing/man/IO_URING_VERSION_MINOR.3 +0 -1
- data/vendor/liburing/man/io_uring.7 +0 -781
- data/vendor/liburing/man/io_uring_buf_ring_add.3 +0 -53
- data/vendor/liburing/man/io_uring_buf_ring_advance.3 +0 -31
- data/vendor/liburing/man/io_uring_buf_ring_cq_advance.3 +0 -41
- data/vendor/liburing/man/io_uring_buf_ring_init.3 +0 -30
- data/vendor/liburing/man/io_uring_buf_ring_mask.3 +0 -27
- data/vendor/liburing/man/io_uring_check_version.3 +0 -72
- data/vendor/liburing/man/io_uring_close_ring_fd.3 +0 -43
- data/vendor/liburing/man/io_uring_cq_advance.3 +0 -49
- data/vendor/liburing/man/io_uring_cq_has_overflow.3 +0 -25
- data/vendor/liburing/man/io_uring_cq_ready.3 +0 -26
- data/vendor/liburing/man/io_uring_cqe_get_data.3 +0 -53
- data/vendor/liburing/man/io_uring_cqe_get_data64.3 +0 -1
- data/vendor/liburing/man/io_uring_cqe_seen.3 +0 -42
- data/vendor/liburing/man/io_uring_enter.2 +0 -1700
- data/vendor/liburing/man/io_uring_enter2.2 +0 -1
- data/vendor/liburing/man/io_uring_free_probe.3 +0 -27
- data/vendor/liburing/man/io_uring_get_events.3 +0 -33
- data/vendor/liburing/man/io_uring_get_probe.3 +0 -30
- data/vendor/liburing/man/io_uring_get_sqe.3 +0 -57
- data/vendor/liburing/man/io_uring_major_version.3 +0 -1
- data/vendor/liburing/man/io_uring_minor_version.3 +0 -1
- data/vendor/liburing/man/io_uring_opcode_supported.3 +0 -30
- data/vendor/liburing/man/io_uring_peek_cqe.3 +0 -38
- data/vendor/liburing/man/io_uring_prep_accept.3 +0 -197
- data/vendor/liburing/man/io_uring_prep_accept_direct.3 +0 -1
- data/vendor/liburing/man/io_uring_prep_cancel.3 +0 -118
- data/vendor/liburing/man/io_uring_prep_cancel64.3 +0 -1
- data/vendor/liburing/man/io_uring_prep_close.3 +0 -59
- data/vendor/liburing/man/io_uring_prep_close_direct.3 +0 -1
- data/vendor/liburing/man/io_uring_prep_connect.3 +0 -66
- data/vendor/liburing/man/io_uring_prep_fadvise.3 +0 -59
- data/vendor/liburing/man/io_uring_prep_fallocate.3 +0 -59
- data/vendor/liburing/man/io_uring_prep_fgetxattr.3 +0 -1
- data/vendor/liburing/man/io_uring_prep_files_update.3 +0 -92
- data/vendor/liburing/man/io_uring_prep_fsetxattr.3 +0 -1
- data/vendor/liburing/man/io_uring_prep_fsync.3 +0 -70
- data/vendor/liburing/man/io_uring_prep_getxattr.3 +0 -61
- data/vendor/liburing/man/io_uring_prep_link.3 +0 -1
- data/vendor/liburing/man/io_uring_prep_link_timeout.3 +0 -94
- data/vendor/liburing/man/io_uring_prep_linkat.3 +0 -91
- data/vendor/liburing/man/io_uring_prep_madvise.3 +0 -56
- data/vendor/liburing/man/io_uring_prep_mkdir.3 +0 -1
- data/vendor/liburing/man/io_uring_prep_mkdirat.3 +0 -83
- data/vendor/liburing/man/io_uring_prep_msg_ring.3 +0 -92
- data/vendor/liburing/man/io_uring_prep_msg_ring_cqe_flags.3 +0 -1
- data/vendor/liburing/man/io_uring_prep_multishot_accept.3 +0 -1
- data/vendor/liburing/man/io_uring_prep_multishot_accept_direct.3 +0 -1
- data/vendor/liburing/man/io_uring_prep_nop.3 +0 -28
- data/vendor/liburing/man/io_uring_prep_openat.3 +0 -117
- data/vendor/liburing/man/io_uring_prep_openat2.3 +0 -117
- data/vendor/liburing/man/io_uring_prep_openat2_direct.3 +0 -1
- data/vendor/liburing/man/io_uring_prep_openat_direct.3 +0 -1
- data/vendor/liburing/man/io_uring_prep_poll_add.3 +0 -72
- data/vendor/liburing/man/io_uring_prep_poll_multishot.3 +0 -1
- data/vendor/liburing/man/io_uring_prep_poll_remove.3 +0 -55
- data/vendor/liburing/man/io_uring_prep_poll_update.3 +0 -89
- data/vendor/liburing/man/io_uring_prep_provide_buffers.3 +0 -140
- data/vendor/liburing/man/io_uring_prep_read.3 +0 -69
- data/vendor/liburing/man/io_uring_prep_read_fixed.3 +0 -72
- data/vendor/liburing/man/io_uring_prep_readv.3 +0 -85
- data/vendor/liburing/man/io_uring_prep_readv2.3 +0 -111
- data/vendor/liburing/man/io_uring_prep_recv.3 +0 -105
- data/vendor/liburing/man/io_uring_prep_recv_multishot.3 +0 -1
- data/vendor/liburing/man/io_uring_prep_recvmsg.3 +0 -124
- data/vendor/liburing/man/io_uring_prep_recvmsg_multishot.3 +0 -1
- data/vendor/liburing/man/io_uring_prep_remove_buffers.3 +0 -52
- data/vendor/liburing/man/io_uring_prep_rename.3 +0 -1
- data/vendor/liburing/man/io_uring_prep_renameat.3 +0 -96
- data/vendor/liburing/man/io_uring_prep_send.3 +0 -66
- data/vendor/liburing/man/io_uring_prep_send_set_addr.3 +0 -38
- data/vendor/liburing/man/io_uring_prep_send_zc.3 +0 -96
- data/vendor/liburing/man/io_uring_prep_send_zc_fixed.3 +0 -1
- data/vendor/liburing/man/io_uring_prep_sendmsg.3 +0 -89
- data/vendor/liburing/man/io_uring_prep_sendmsg_zc.3 +0 -1
- data/vendor/liburing/man/io_uring_prep_setxattr.3 +0 -64
- data/vendor/liburing/man/io_uring_prep_shutdown.3 +0 -53
- data/vendor/liburing/man/io_uring_prep_socket.3 +0 -118
- data/vendor/liburing/man/io_uring_prep_socket_direct.3 +0 -1
- data/vendor/liburing/man/io_uring_prep_socket_direct_alloc.3 +0 -1
- data/vendor/liburing/man/io_uring_prep_splice.3 +0 -120
- data/vendor/liburing/man/io_uring_prep_statx.3 +0 -74
- data/vendor/liburing/man/io_uring_prep_symlink.3 +0 -1
- data/vendor/liburing/man/io_uring_prep_symlinkat.3 +0 -85
- data/vendor/liburing/man/io_uring_prep_sync_file_range.3 +0 -59
- data/vendor/liburing/man/io_uring_prep_tee.3 +0 -74
- data/vendor/liburing/man/io_uring_prep_timeout.3 +0 -95
- data/vendor/liburing/man/io_uring_prep_timeout_remove.3 +0 -1
- data/vendor/liburing/man/io_uring_prep_timeout_update.3 +0 -98
- data/vendor/liburing/man/io_uring_prep_unlink.3 +0 -1
- data/vendor/liburing/man/io_uring_prep_unlinkat.3 +0 -82
- data/vendor/liburing/man/io_uring_prep_write.3 +0 -67
- data/vendor/liburing/man/io_uring_prep_write_fixed.3 +0 -72
- data/vendor/liburing/man/io_uring_prep_writev.3 +0 -85
- data/vendor/liburing/man/io_uring_prep_writev2.3 +0 -111
- data/vendor/liburing/man/io_uring_queue_exit.3 +0 -26
- data/vendor/liburing/man/io_uring_queue_init.3 +0 -89
- data/vendor/liburing/man/io_uring_queue_init_params.3 +0 -1
- data/vendor/liburing/man/io_uring_recvmsg_cmsg_firsthdr.3 +0 -1
- data/vendor/liburing/man/io_uring_recvmsg_cmsg_nexthdr.3 +0 -1
- data/vendor/liburing/man/io_uring_recvmsg_name.3 +0 -1
- data/vendor/liburing/man/io_uring_recvmsg_out.3 +0 -82
- data/vendor/liburing/man/io_uring_recvmsg_payload.3 +0 -1
- data/vendor/liburing/man/io_uring_recvmsg_payload_length.3 +0 -1
- data/vendor/liburing/man/io_uring_recvmsg_validate.3 +0 -1
- data/vendor/liburing/man/io_uring_register.2 +0 -834
- data/vendor/liburing/man/io_uring_register_buf_ring.3 +0 -140
- data/vendor/liburing/man/io_uring_register_buffers.3 +0 -104
- data/vendor/liburing/man/io_uring_register_buffers_sparse.3 +0 -1
- data/vendor/liburing/man/io_uring_register_buffers_tags.3 +0 -1
- data/vendor/liburing/man/io_uring_register_buffers_update_tag.3 +0 -1
- data/vendor/liburing/man/io_uring_register_eventfd.3 +0 -51
- data/vendor/liburing/man/io_uring_register_eventfd_async.3 +0 -1
- data/vendor/liburing/man/io_uring_register_file_alloc_range.3 +0 -52
- data/vendor/liburing/man/io_uring_register_files.3 +0 -112
- data/vendor/liburing/man/io_uring_register_files_sparse.3 +0 -1
- data/vendor/liburing/man/io_uring_register_files_tags.3 +0 -1
- data/vendor/liburing/man/io_uring_register_files_update.3 +0 -1
- data/vendor/liburing/man/io_uring_register_files_update_tag.3 +0 -1
- data/vendor/liburing/man/io_uring_register_iowq_aff.3 +0 -61
- data/vendor/liburing/man/io_uring_register_iowq_max_workers.3 +0 -71
- data/vendor/liburing/man/io_uring_register_ring_fd.3 +0 -49
- data/vendor/liburing/man/io_uring_register_sync_cancel.3 +0 -71
- data/vendor/liburing/man/io_uring_setup.2 +0 -669
- data/vendor/liburing/man/io_uring_sq_ready.3 +0 -31
- data/vendor/liburing/man/io_uring_sq_space_left.3 +0 -25
- data/vendor/liburing/man/io_uring_sqe_set_data.3 +0 -48
- data/vendor/liburing/man/io_uring_sqe_set_data64.3 +0 -1
- data/vendor/liburing/man/io_uring_sqe_set_flags.3 +0 -87
- data/vendor/liburing/man/io_uring_sqring_wait.3 +0 -34
- data/vendor/liburing/man/io_uring_submit.3 +0 -46
- data/vendor/liburing/man/io_uring_submit_and_get_events.3 +0 -31
- data/vendor/liburing/man/io_uring_submit_and_wait.3 +0 -38
- data/vendor/liburing/man/io_uring_submit_and_wait_timeout.3 +0 -56
- data/vendor/liburing/man/io_uring_unregister_buf_ring.3 +0 -30
- data/vendor/liburing/man/io_uring_unregister_buffers.3 +0 -27
- data/vendor/liburing/man/io_uring_unregister_eventfd.3 +0 -1
- data/vendor/liburing/man/io_uring_unregister_files.3 +0 -27
- data/vendor/liburing/man/io_uring_unregister_iowq_aff.3 +0 -1
- data/vendor/liburing/man/io_uring_unregister_ring_fd.3 +0 -32
- data/vendor/liburing/man/io_uring_wait_cqe.3 +0 -40
- data/vendor/liburing/man/io_uring_wait_cqe_nr.3 +0 -43
- data/vendor/liburing/man/io_uring_wait_cqe_timeout.3 +0 -53
- 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
|
|
data/test/test_resource_pool.rb
CHANGED
@@ -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.
|
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
|
data/test/test_thread_pool.rb
CHANGED
@@ -25,7 +25,9 @@ class ThreadPoolTest < MiniTest::Test
|
|
25
25
|
threads = []
|
26
26
|
results = []
|
27
27
|
|
28
|
-
|
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..
|
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.
|
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.
|
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-
|
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
|