Explanation (and bulk of the work is in patch 2/3). I wrote patch 1/3 over 4 years ago since it was simple and didn't rely on "newer" Ruby 2.3 features. Patch 2/3 completes the change and actually depends on 2.5+; while patch 3/3 updates the gemspec, docs and dependencies for Ruby 2.5+. I haven't actually used Ruby 2.5 in a while, but I'm still on Ruby 2.7 since that's what I have in Debian bullseye (oldstable). Patch 2/3 could use an extra set of eyes since it's fairly big, but passes all tests. Note: I can't benchmark anything since I have limited (shared) hardware Eric Wong (3): remove kgio from all read(2) and write(2) wrappers kill off remaining kgio uses update dependency to Ruby 2.5+ HACKING | 2 +- README | 2 +- lib/unicorn.rb | 3 +- lib/unicorn/http_request.rb | 18 ++++----- lib/unicorn/http_server.rb | 38 +++++++---------- lib/unicorn/oob_gc.rb | 4 +- lib/unicorn/socket_helper.rb | 50 +++-------------------- lib/unicorn/stream_input.rb | 20 +++++---- lib/unicorn/worker.rb | 10 ++--- lib/unicorn/write_splat.rb | 7 ---- t/README | 2 +- t/oob_gc.ru | 3 -- t/oob_gc_path.ru | 3 -- test/unit/test_request.rb | 47 ++++++++------------- test/unit/test_socket_helper.rb | 72 +++++++-------------------------- test/unit/test_stream_input.rb | 2 +- test/unit/test_tee_input.rb | 2 +- unicorn.gemspec | 5 +-- 18 files changed, 87 insertions(+), 203 deletions(-) delete mode 100644 lib/unicorn/write_splat.rb