From 24e39a57f040e5f7665dedca79380f234ae644e8 Mon Sep 17 00:00:00 2001 From: Samuel Williams Date: Mon, 9 Mar 2026 16:01:25 +1300 Subject: [PATCH] Drop compatibility wrapper methods. --- ext/io/event/selector/epoll.c | 34 ++---------------------- ext/io/event/selector/kqueue.c | 30 ++------------------- ext/io/event/selector/uring.c | 30 ++------------------- test/io/event/selector.rb | 8 +++--- test/io/event/selector/buffered_io.rb | 12 ++++----- test/io/event/selector/cancellable.rb | 4 +-- test/io/event/selector/file_io.rb | 4 +-- test/io/event/selector/write_deadlock.rb | 2 +- 8 files changed, 21 insertions(+), 103 deletions(-) diff --git a/ext/io/event/selector/epoll.c b/ext/io/event/selector/epoll.c index 6ef7a3f..f0e386d 100644 --- a/ext/io/event/selector/epoll.c +++ b/ext/io/event/selector/epoll.c @@ -670,19 +670,6 @@ VALUE IO_Event_Selector_EPoll_io_read(VALUE self, VALUE fiber, VALUE io, VALUE b return rb_ensure(io_read_loop, (VALUE)&io_read_arguments, io_read_ensure, (VALUE)&io_read_arguments); } -VALUE IO_Event_Selector_EPoll_io_read_compatible(int argc, VALUE *argv, VALUE self) -{ - rb_check_arity(argc, 4, 5); - - VALUE _offset = SIZET2NUM(0); - - if (argc == 5) { - _offset = argv[4]; - } - - return IO_Event_Selector_EPoll_io_read(self, argv[0], argv[1], argv[2], argv[3], _offset); -} - struct io_write_arguments { VALUE self; VALUE fiber; @@ -768,19 +755,6 @@ VALUE IO_Event_Selector_EPoll_io_write(VALUE self, VALUE fiber, VALUE io, VALUE return rb_ensure(io_write_loop, (VALUE)&io_write_arguments, io_write_ensure, (VALUE)&io_write_arguments); } -VALUE IO_Event_Selector_EPoll_io_write_compatible(int argc, VALUE *argv, VALUE self) -{ - rb_check_arity(argc, 4, 5); - - VALUE _offset = SIZET2NUM(0); - - if (argc == 5) { - _offset = argv[4]; - } - - return IO_Event_Selector_EPoll_io_write(self, argv[0], argv[1], argv[2], argv[3], _offset); -} - #endif static @@ -1081,13 +1055,9 @@ void Init_IO_Event_Selector_EPoll(VALUE IO_Event_Selector) { rb_define_method(IO_Event_Selector_EPoll, "io_wait", IO_Event_Selector_EPoll_io_wait, 3); #ifdef HAVE_RUBY_IO_BUFFER_H - rb_define_method(IO_Event_Selector_EPoll, "io_read", IO_Event_Selector_EPoll_io_read_compatible, -1); - rb_define_method(IO_Event_Selector_EPoll, "io_write", IO_Event_Selector_EPoll_io_write_compatible, -1); + rb_define_method(IO_Event_Selector_EPoll, "io_read", IO_Event_Selector_EPoll_io_read, 5); + rb_define_method(IO_Event_Selector_EPoll, "io_write", IO_Event_Selector_EPoll_io_write, 5); #endif - // Once compatibility isn't a concern, we can do this: - // rb_define_method(IO_Event_Selector_EPoll, "io_read", IO_Event_Selector_EPoll_io_read, 5); - // rb_define_method(IO_Event_Selector_EPoll, "io_write", IO_Event_Selector_EPoll_io_write, 5); - rb_define_method(IO_Event_Selector_EPoll, "process_wait", IO_Event_Selector_EPoll_process_wait, 3); } diff --git a/ext/io/event/selector/kqueue.c b/ext/io/event/selector/kqueue.c index 49ad85b..b8ba88e 100644 --- a/ext/io/event/selector/kqueue.c +++ b/ext/io/event/selector/kqueue.c @@ -668,19 +668,6 @@ VALUE IO_Event_Selector_KQueue_io_read(VALUE self, VALUE fiber, VALUE io, VALUE return rb_ensure(io_read_loop, (VALUE)&io_read_arguments, io_read_ensure, (VALUE)&io_read_arguments); } -static VALUE IO_Event_Selector_KQueue_io_read_compatible(int argc, VALUE *argv, VALUE self) -{ - rb_check_arity(argc, 4, 5); - - VALUE _offset = SIZET2NUM(0); - - if (argc == 5) { - _offset = argv[4]; - } - - return IO_Event_Selector_KQueue_io_read(self, argv[0], argv[1], argv[2], argv[3], _offset); -} - struct io_write_arguments { VALUE self; VALUE fiber; @@ -776,19 +763,6 @@ VALUE IO_Event_Selector_KQueue_io_write(VALUE self, VALUE fiber, VALUE io, VALUE return rb_ensure(io_write_loop, (VALUE)&io_write_arguments, io_write_ensure, (VALUE)&io_write_arguments); } -static VALUE IO_Event_Selector_KQueue_io_write_compatible(int argc, VALUE *argv, VALUE self) -{ - rb_check_arity(argc, 4, 5); - - VALUE _offset = SIZET2NUM(0); - - if (argc == 5) { - _offset = argv[4]; - } - - return IO_Event_Selector_KQueue_io_write(self, argv[0], argv[1], argv[2], argv[3], _offset); -} - #endif static @@ -1092,8 +1066,8 @@ void Init_IO_Event_Selector_KQueue(VALUE IO_Event_Selector) { rb_define_method(IO_Event_Selector_KQueue, "io_wait", IO_Event_Selector_KQueue_io_wait, 3); #ifdef HAVE_RUBY_IO_BUFFER_H - rb_define_method(IO_Event_Selector_KQueue, "io_read", IO_Event_Selector_KQueue_io_read_compatible, -1); - rb_define_method(IO_Event_Selector_KQueue, "io_write", IO_Event_Selector_KQueue_io_write_compatible, -1); + rb_define_method(IO_Event_Selector_KQueue, "io_read", IO_Event_Selector_KQueue_io_read, 5); + rb_define_method(IO_Event_Selector_KQueue, "io_write", IO_Event_Selector_KQueue_io_write, 5); #endif rb_define_method(IO_Event_Selector_KQueue, "process_wait", IO_Event_Selector_KQueue_process_wait, 3); diff --git a/ext/io/event/selector/uring.c b/ext/io/event/selector/uring.c index d342742..83584bd 100644 --- a/ext/io/event/selector/uring.c +++ b/ext/io/event/selector/uring.c @@ -747,19 +747,6 @@ VALUE IO_Event_Selector_URing_io_read(VALUE self, VALUE fiber, VALUE io, VALUE b return rb_fiber_scheduler_io_result(total, 0); } -static VALUE IO_Event_Selector_URing_io_read_compatible(int argc, VALUE *argv, VALUE self) -{ - rb_check_arity(argc, 4, 5); - - VALUE _offset = SIZET2NUM(0); - - if (argc == 5) { - _offset = argv[4]; - } - - return IO_Event_Selector_URing_io_read(self, argv[0], argv[1], argv[2], argv[3], _offset); -} - VALUE IO_Event_Selector_URing_io_pread(VALUE self, VALUE fiber, VALUE io, VALUE buffer, VALUE _from, VALUE _length, VALUE _offset) { struct IO_Event_Selector_URing *selector = NULL; TypedData_Get_Struct(self, struct IO_Event_Selector_URing, &IO_Event_Selector_URing_Type, selector); @@ -915,19 +902,6 @@ VALUE IO_Event_Selector_URing_io_write(VALUE self, VALUE fiber, VALUE io, VALUE return rb_fiber_scheduler_io_result(total, 0); } -static VALUE IO_Event_Selector_URing_io_write_compatible(int argc, VALUE *argv, VALUE self) -{ - rb_check_arity(argc, 4, 5); - - VALUE _offset = SIZET2NUM(0); - - if (argc == 5) { - _offset = argv[4]; - } - - return IO_Event_Selector_URing_io_write(self, argv[0], argv[1], argv[2], argv[3], _offset); -} - VALUE IO_Event_Selector_URing_io_pwrite(VALUE self, VALUE fiber, VALUE io, VALUE buffer, VALUE _from, VALUE _length, VALUE _offset) { struct IO_Event_Selector_URing *selector = NULL; TypedData_Get_Struct(self, struct IO_Event_Selector_URing, &IO_Event_Selector_URing_Type, selector); @@ -1249,8 +1223,8 @@ void Init_IO_Event_Selector_URing(VALUE IO_Event_Selector) { rb_define_method(IO_Event_Selector_URing, "io_wait", IO_Event_Selector_URing_io_wait, 3); #ifdef HAVE_RUBY_IO_BUFFER_H - rb_define_method(IO_Event_Selector_URing, "io_read", IO_Event_Selector_URing_io_read_compatible, -1); - rb_define_method(IO_Event_Selector_URing, "io_write", IO_Event_Selector_URing_io_write_compatible, -1); + rb_define_method(IO_Event_Selector_URing, "io_read", IO_Event_Selector_URing_io_read, 5); + rb_define_method(IO_Event_Selector_URing, "io_write", IO_Event_Selector_URing_io_write, 5); rb_define_method(IO_Event_Selector_URing, "io_pread", IO_Event_Selector_URing_io_pread, 6); rb_define_method(IO_Event_Selector_URing, "io_pwrite", IO_Event_Selector_URing_io_pwrite, 6); #endif diff --git a/test/io/event/selector.rb b/test/io/event/selector.rb index 64aa3b9..34996e3 100644 --- a/test/io/event/selector.rb +++ b/test/io/event/selector.rb @@ -478,7 +478,7 @@ def transfer fiber = Fiber.new do events << :io_read - offset = selector.io_read(Fiber.current, local, buffer, message.bytesize) + offset = selector.io_read(Fiber.current, local, buffer, message.bytesize, 0) expect(buffer.get_string(0, offset)).to be == message end @@ -499,7 +499,7 @@ def transfer fiber = Fiber.new do events << :io_read - offset = selector.io_read(Fiber.current, local, buffer, message.bytesize) + offset = selector.io_read(Fiber.current, local, buffer, message.bytesize, 0) expect(buffer.get_string(0, offset)).to be == message end @@ -521,7 +521,7 @@ def transfer return unless selector.respond_to?(:io_read) fiber = Fiber.new do - offset = selector.io_read(Fiber.current, local, buffer, message.bytesize) + offset = selector.io_read(Fiber.current, local, buffer, message.bytesize, 0) expect(buffer.get_string(0, offset)).to be == message sleep(0.001) end @@ -559,7 +559,7 @@ def transfer fiber = Fiber.new do events << :io_write buffer = IO::Buffer.for(message.dup) - result = selector.io_write(Fiber.current, local, buffer, buffer.size) + result = selector.io_write(Fiber.current, local, buffer, buffer.size, 0) expect(result).to be == message.bytesize local.close end diff --git a/test/io/event/selector/buffered_io.rb b/test/io/event/selector/buffered_io.rb index ef516ef..38f7ff8 100644 --- a/test/io/event/selector/buffered_io.rb +++ b/test/io/event/selector/buffered_io.rb @@ -21,12 +21,12 @@ writer = Fiber.new do buffer = IO::Buffer.new(128) - expect(selector.io_write(Fiber.current, output, buffer, 128)).to be == 128 + expect(selector.io_write(Fiber.current, output, buffer, 128, 0)).to be == 128 end reader = Fiber.new do buffer = IO::Buffer.new(64) - expect(selector.io_read(Fiber.current, input, buffer, 1)).to be == 64 + expect(selector.io_read(Fiber.current, input, buffer, 1, 0)).to be == 64 end reader.transfer @@ -39,7 +39,7 @@ skip_if_ruby_platform(/mswin|mingw|cygwin/) buffer = IO::Buffer.new(1).slice(0, 0) - expect(selector.io_write(Fiber.current, output, buffer, 0)).to be == 0 + expect(selector.io_write(Fiber.current, output, buffer, 0, 0)).to be == 0 end it "can read and write at the specified offset" do @@ -70,7 +70,7 @@ writer = Fiber.new do buffer = IO::Buffer.new(64) - result = selector.io_write(Fiber.current, input, buffer, 64) + result = selector.io_write(Fiber.current, input, buffer, 64, 0) expect(result).to be < 0 end @@ -88,7 +88,7 @@ output.close reader = Fiber.new do - result = selector.io_read(Fiber.current, input, buffer, 0) + result = selector.io_read(Fiber.current, input, buffer, 0, 0) end reader.transfer @@ -109,7 +109,7 @@ def be_again? result = nil reader = Fiber.new do - result = selector.io_read(Fiber.current, input, buffer, 0) + result = selector.io_read(Fiber.current, input, buffer, 0, 0) end reader.transfer diff --git a/test/io/event/selector/cancellable.rb b/test/io/event/selector/cancellable.rb index b3657dd..22dbb86 100644 --- a/test/io/event/selector/cancellable.rb +++ b/test/io/event/selector/cancellable.rb @@ -25,7 +25,7 @@ buffer = IO::Buffer.new(64) 10.times do - expect{selector.io_read(Fiber.current, input, buffer, 1)}.to raise_exception(Interrupt) + expect{selector.io_read(Fiber.current, input, buffer, 1, 0)}.to raise_exception(Interrupt) end end @@ -44,7 +44,7 @@ 10.times do expect{selector.io_wait(Fiber.current, input, IO::READABLE)}.to raise_exception(Interrupt) - selector.io_read(Fiber.current, input, buffer, 1) + selector.io_read(Fiber.current, input, buffer, 1, 0) end end diff --git a/test/io/event/selector/file_io.rb b/test/io/event/selector/file_io.rb index 6250987..3a02a0e 100644 --- a/test/io/event/selector/file_io.rb +++ b/test/io/event/selector/file_io.rb @@ -20,7 +20,7 @@ writer = Fiber.new do buffer = IO::Buffer.new(128) file.seek(0) - write_result = selector.io_write(Fiber.current, file, buffer, 128) + write_result = selector.io_write(Fiber.current, file, buffer, 128, 0) end reader = Fiber.new do @@ -28,7 +28,7 @@ file.seek(0) # The read will return 0 if the data is not written yet: - read_result = selector.io_read(Fiber.current, file, buffer, 0) + read_result = selector.io_read(Fiber.current, file, buffer, 0, 0) end writer.transfer diff --git a/test/io/event/selector/write_deadlock.rb b/test/io/event/selector/write_deadlock.rb index 27c4207..d37f6ab 100644 --- a/test/io/event/selector/write_deadlock.rb +++ b/test/io/event/selector/write_deadlock.rb @@ -37,7 +37,7 @@ # Writer fiber that should hit EAGAIN and wait for WRITABLE writer = Fiber.new do buffer = IO::Buffer.for("test" * 64) # 256 bytes - @selector.io_write(Fiber.current, local, buffer, buffer.size) + @selector.io_write(Fiber.current, local, buffer, buffer.size, 0) write_completed = true end