This release fixes compatibility with GC.compact on Ruby 3.x. Thanks to Ngan Pham for the patch and Aaron Patterson for the feedback: https://yhbt.net/kgio-public/CAAvYYt5Z5f2rMuXO5DMpR1-6uRvu_gXKDvqcyoZ+oNcLiTH39g@mail.gmail.com/T/ kgio remains obsolete and deprecated, and it's primary dependent will be updated to not depend on it in the future.
Some doc and warning fixes for newer Rubies. We're no longer on bogomips.org since it's due for expiry and I can't pay extortionists for a .org, so s/bogomips.org/yhbt.net/ for now, and be prepared to move again when extortionists move onto the .net TLD. pkg.mk: use --local to "gem install" pkg.mk: use dark216 theme for Earth Day 2019 test: fix warnings with RUBYOPT=-w tests: fix unused variable warnings from newer Rubies test_connect_fd_leak: do not close socket if non-existent test_syssend: avoid warning on cleanup build: remove olddoc from the gemspec doc: remove private email and outdated gmane archives doc: move from bogomips.org/kgio to yhbt.net/kgio
This release fixes a bug affecting the Rainbows! web server which uses Kgio.accept_class: https://bogomips.org/rainbows-public/CANp6QoJXRbPLqmOPpG7XmZBc+oYqLWCcq1ipvOyNEQPXDEwx9Q@mail.gmail.com/ * accept: avoid passing unnecessary arg to rb_funcall
This release fixes compatibility with Ruby 2.5.0 preview and release candidates (and thus should be ready for 2.5.0 final) on some platforms. At least clang 5.0.0 on OpenBSD is affected. Thanks to Jeremy Evans for the fix. There's also minor documentation updates since 2.11.0
Mainly this release reverts back to kgio 2.9.3 behavior by supporting "autopush" functionality in the C extension. Removing this feature in 2.10.0 was a monumental mistake(*) on my part which caused a performance regression for ONE known user of kgio on the deprecated (but supported) Rainbows! server. This release does not affect known users outside of Rainbows!, but we may have unknown users, too. The attempt at a pure Ruby version of autopush had flaws and regressions in real-world testing, so that was abandoned. So yeah, kgio will be supported indefinitely even in the face of internal changes to MRI, but I strongly discourage its use for new projects. Users who only support Ruby 2.3 (and later) are encouraged to use `exception: false` with all *_nonblock methods. 4 changes since 2.10.0: resurrect Kgio.autopush support in pure Ruby [REVERTED] reinstate the original (and dangerous) autopush in C TODO: update with Ruby 2.3 status test: increase test data sizes to fill socket buffers (*) - as was making this a separate project, at all
The largely-unused autopush functionality is now a no-op. Existing applications will probably not notice, and are better off using MSG_MORE anyways if they're on Linux. Our poll(2) wrapper now uses rb_hash_clear if available, reducing global method cache dependence. shortlog of changes since 2.9.3: README: remove reference to Rainbows! writev: update comment on preserving errno poll: avoid rb_funcall for rb_hash_clear minor doc updates remove autopush support and make it a no-op HACKING: update URL for Message-ID lookup
Most notably there's a new RB_GC_GUARD to fix an occasional segfault at load time for Ruby 1.8 users thanks to Petr Novodvorskiy for reporting the issue. There's been a new mailing list for a few months now at: kgio-public@bogomips.org No subscription is required, but if you wish to subscribe (existing librelist subscribers must resubscribe) kgio-public+subscribe@bogomips.org There's also a bunch of code cleanups and packaging cleanups. Our website is faster now thanks to olddoc: http://bogomips.org/kgio/ shortlog: test/lib_read_write: fix trywritev blocking test new mailing list info: kgio-public@bogomips.org relax license to allow LGPLv2.1 or later gemspec: modernize for more recent rubygems doc: switch to olddoc remove references to rubyforge and ancient Rubies TODO: updates for the future of kgio tryopen: add RB_GC_GUARD for Ruby 1.8 LICENSE: prefer URL to FSF address cleanup packaging harder fixup -Wshorten-64-to-32 warnings cleanup: avoid shadowing rb_str_subseq cleanup: avoid shadowing rb_ary_subseq pkg.mk: synchronize with my other projects gemspec: remove invalid rdoc_options gemspec: use SPDX license abbreviation
This release is for compatibility with future releases of mainline ruby, as rb_thread_blocking_region is removed in r44955 of ruby trunk This also avoids deprecation warnings fo rb_thread_blocking_region 2.0 and 2.1.
Thanks to Christopher Rigor for this release. Eric Wong (2): only define and test kgio_syssend on 1.9+ various 1.8.7 fixes
This adds a new kgio_syssend method for Ruby 1.9+ which behaves like BasicSocket#send, but will not raise exceptions on EAGAIN. Eric Wong (12): test_poll: remove race prone test_poll_EINTR_changed test tryopen: remove RARRAY_PTR usage in init read_write: remove the rest of RARRAY_PTR usage my_writev: stylistic fixes Rakefile: kill raa_update task avoid downsizing casts connect: constify RSTRING-related things set RSTRING_MODIFIED where appropriate for Rubinius split read_write.c into {read,write,writev}.c add kgio_syssend method to wrap send(2) write: correct check for various blocking regions tryopen: additional debug information for bad Errno values Hleb Valoshka (1): Don't use deprecated api