uringmachine 0.30.0 → 0.32.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +16 -4
- data/README.md +45 -38
- data/TODO.md +21 -4
- data/benchmark/bm_io_pipe.rb +2 -2
- data/benchmark/common.rb +16 -16
- data/benchmark/gets.rb +5 -5
- data/benchmark/gets_concurrent.rb +12 -12
- data/benchmark/http_parse.rb +14 -14
- data/benchmark/http_server_accept_queue.rb +11 -7
- data/benchmark/http_server_multi_accept.rb +7 -7
- data/benchmark/http_server_multi_ractor.rb +7 -7
- data/benchmark/http_server_single_thread.rb +8 -8
- data/benchmark/openssl.rb +50 -22
- data/docs/design/buffer_pool.md +1 -1
- data/examples/fiber_concurrency_io.rb +52 -0
- data/examples/fiber_concurrency_naive.rb +26 -0
- data/examples/fiber_concurrency_runqueue.rb +33 -0
- data/examples/fiber_concurrency_um.rb +16 -0
- data/examples/io_uring_simple.c +33 -0
- data/examples/pg.rb +2 -2
- data/examples/stream.rb +2 -2
- data/examples/um_cancellation.rb +20 -0
- data/examples/um_fiber_scheduler.rb +10 -0
- data/examples/um_io.rb +19 -0
- data/examples/um_mo.c +32 -0
- data/examples/um_multishot.rb +15 -0
- data/examples/um_ssl.rb +11 -0
- data/ext/um/um.c +20 -3
- data/ext/um/um.h +24 -18
- data/ext/um/um_ext.c +2 -4
- data/ext/um/um_io.c +775 -0
- data/ext/um/um_io_class.c +394 -0
- data/ext/um/um_ssl.c +37 -2
- data/ext/um/um_utils.c +1 -1
- data/grant-2025/final-report.md +2 -0
- data/grant-2025/journal.md +1 -1
- data/lib/uringmachine/version.rb +1 -1
- data/lib/uringmachine.rb +18 -18
- data/test/{test_stream.rb → test_io.rb} +290 -153
- data/test/test_um.rb +18 -18
- metadata +17 -6
- data/ext/um/um_stream.c +0 -706
- data/ext/um/um_stream_class.c +0 -317
data/test/test_um.rb
CHANGED
|
@@ -3506,53 +3506,53 @@ class SetChildSubreaperTest < Minitest::Test
|
|
|
3506
3506
|
end
|
|
3507
3507
|
end
|
|
3508
3508
|
|
|
3509
|
-
class
|
|
3509
|
+
class IOMethodTest < UMBaseTest
|
|
3510
3510
|
def setup
|
|
3511
3511
|
super
|
|
3512
3512
|
@rfd, @wfd = UM.pipe
|
|
3513
3513
|
end
|
|
3514
3514
|
|
|
3515
3515
|
def teardown
|
|
3516
|
-
@
|
|
3516
|
+
@conn = nil
|
|
3517
3517
|
machine.close(@rfd) rescue nil
|
|
3518
3518
|
machine.close(@wfd) rescue nil
|
|
3519
3519
|
super
|
|
3520
3520
|
end
|
|
3521
3521
|
|
|
3522
|
-
def
|
|
3522
|
+
def test_io_method
|
|
3523
3523
|
machine.write(@wfd, "foobar")
|
|
3524
3524
|
machine.close(@wfd)
|
|
3525
3525
|
|
|
3526
|
-
|
|
3527
|
-
assert_kind_of UM::
|
|
3526
|
+
conn = machine.io(@rfd)
|
|
3527
|
+
assert_kind_of UM::IO, conn
|
|
3528
3528
|
|
|
3529
|
-
buf =
|
|
3529
|
+
buf = conn.read(3)
|
|
3530
3530
|
assert_equal 'foo', buf
|
|
3531
3531
|
|
|
3532
|
-
buf =
|
|
3532
|
+
buf = conn.read(-6)
|
|
3533
3533
|
assert_equal 'bar', buf
|
|
3534
|
-
assert
|
|
3534
|
+
assert conn.eof?
|
|
3535
3535
|
|
|
3536
|
-
|
|
3536
|
+
conn.clear
|
|
3537
3537
|
end
|
|
3538
3538
|
|
|
3539
|
-
def
|
|
3539
|
+
def test_io_method_with_block
|
|
3540
3540
|
machine.write(@wfd, "foobar")
|
|
3541
3541
|
machine.close(@wfd)
|
|
3542
3542
|
|
|
3543
3543
|
bufs = []
|
|
3544
|
-
|
|
3545
|
-
res = machine.
|
|
3546
|
-
|
|
3544
|
+
conn_obj = nil
|
|
3545
|
+
res = machine.io(@rfd) do |s|
|
|
3546
|
+
conn_obj = s
|
|
3547
3547
|
|
|
3548
|
-
bufs << s.
|
|
3549
|
-
bufs << s.
|
|
3548
|
+
bufs << s.read(3)
|
|
3549
|
+
bufs << s.read(-6)
|
|
3550
3550
|
|
|
3551
3551
|
:foo
|
|
3552
3552
|
end
|
|
3553
3553
|
|
|
3554
|
-
assert_kind_of UM::
|
|
3555
|
-
assert
|
|
3554
|
+
assert_kind_of UM::IO, conn_obj
|
|
3555
|
+
assert conn_obj.eof?
|
|
3556
3556
|
assert_equal ['foo', 'bar'], bufs
|
|
3557
3557
|
assert_equal :foo, res
|
|
3558
3558
|
end
|
|
@@ -3688,7 +3688,7 @@ class TeeTest < UMBaseTest
|
|
|
3688
3688
|
assert_equal 6, len1
|
|
3689
3689
|
|
|
3690
3690
|
assert_equal 'foobar', result2
|
|
3691
|
-
assert_equal 6, len2
|
|
3691
|
+
assert_equal 6, len2
|
|
3692
3692
|
ensure
|
|
3693
3693
|
machine.terminate(f)
|
|
3694
3694
|
machine.join(f)
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: uringmachine
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.32.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sharon Rosner
|
|
@@ -28,13 +28,13 @@ extra_rdoc_files:
|
|
|
28
28
|
- ext/um/um_class.c
|
|
29
29
|
- ext/um/um_const.c
|
|
30
30
|
- ext/um/um_ext.c
|
|
31
|
+
- ext/um/um_io.c
|
|
32
|
+
- ext/um/um_io_class.c
|
|
31
33
|
- ext/um/um_mutex_class.c
|
|
32
34
|
- ext/um/um_op.c
|
|
33
35
|
- ext/um/um_queue_class.c
|
|
34
36
|
- ext/um/um_sidecar.c
|
|
35
37
|
- ext/um/um_ssl.c
|
|
36
|
-
- ext/um/um_stream.c
|
|
37
|
-
- ext/um/um_stream_class.c
|
|
38
38
|
- ext/um/um_sync.c
|
|
39
39
|
- ext/um/um_utils.c
|
|
40
40
|
- lib/uringmachine.rb
|
|
@@ -90,18 +90,29 @@ files:
|
|
|
90
90
|
- docs/um_api.md
|
|
91
91
|
- docs/wroclove.rb.md
|
|
92
92
|
- examples/echo_server.rb
|
|
93
|
+
- examples/fiber_concurrency_io.rb
|
|
94
|
+
- examples/fiber_concurrency_naive.rb
|
|
95
|
+
- examples/fiber_concurrency_runqueue.rb
|
|
96
|
+
- examples/fiber_concurrency_um.rb
|
|
93
97
|
- examples/fiber_scheduler_demo.rb
|
|
94
98
|
- examples/fiber_scheduler_file_io.rb
|
|
95
99
|
- examples/fiber_scheduler_file_io_async.rb
|
|
96
100
|
- examples/fiber_scheduler_fork.rb
|
|
97
101
|
- examples/http_server.rb
|
|
98
102
|
- examples/inout.rb
|
|
103
|
+
- examples/io_uring_simple.c
|
|
99
104
|
- examples/nc.rb
|
|
100
105
|
- examples/nc_ssl.rb
|
|
101
106
|
- examples/pg.rb
|
|
102
107
|
- examples/server_client.rb
|
|
103
108
|
- examples/snooze.rb
|
|
104
109
|
- examples/stream.rb
|
|
110
|
+
- examples/um_cancellation.rb
|
|
111
|
+
- examples/um_fiber_scheduler.rb
|
|
112
|
+
- examples/um_io.rb
|
|
113
|
+
- examples/um_mo.c
|
|
114
|
+
- examples/um_multishot.rb
|
|
115
|
+
- examples/um_ssl.rb
|
|
105
116
|
- examples/write_dev_null.rb
|
|
106
117
|
- ext/um/extconf.rb
|
|
107
118
|
- ext/um/um.c
|
|
@@ -112,13 +123,13 @@ files:
|
|
|
112
123
|
- ext/um/um_class.c
|
|
113
124
|
- ext/um/um_const.c
|
|
114
125
|
- ext/um/um_ext.c
|
|
126
|
+
- ext/um/um_io.c
|
|
127
|
+
- ext/um/um_io_class.c
|
|
115
128
|
- ext/um/um_mutex_class.c
|
|
116
129
|
- ext/um/um_op.c
|
|
117
130
|
- ext/um/um_queue_class.c
|
|
118
131
|
- ext/um/um_sidecar.c
|
|
119
132
|
- ext/um/um_ssl.c
|
|
120
|
-
- ext/um/um_stream.c
|
|
121
|
-
- ext/um/um_stream_class.c
|
|
122
133
|
- ext/um/um_sync.c
|
|
123
134
|
- ext/um/um_utils.c
|
|
124
135
|
- grant-2025/final-report.md
|
|
@@ -137,8 +148,8 @@ files:
|
|
|
137
148
|
- test/test_async_op.rb
|
|
138
149
|
- test/test_fiber.rb
|
|
139
150
|
- test/test_fiber_scheduler.rb
|
|
151
|
+
- test/test_io.rb
|
|
140
152
|
- test/test_ssl.rb
|
|
141
|
-
- test/test_stream.rb
|
|
142
153
|
- test/test_um.rb
|
|
143
154
|
- uringmachine.gemspec
|
|
144
155
|
- vendor/liburing/.github/actions/codespell/stopwords
|