about summary refs log tree commit homepage
DateCommit message (Collapse)
2023-09-10drop remaining 1.8 and fragile autopush code paths HEAD master
Ruby 1.8 is long gone, and rb_io_t internals are going private so we can't assign fptr->pathv and such, so rely on ivars for that. TCP autopush never seemed worth it, but the ivar fallback remains in case anybody wants to use it.
2023-09-10sock_for_fd: drop 1.8/1.9/2.x/3.0-specific hacks
The generic version works for all Rubies
2023-09-10my_fileno: drop Ruby 1.8 support, really require 1.9.3
I have no idea if 1.8 has worked in a while, but maybe it has. `rb_io_get_io' has been public API since Ruby 1.9.2, so we can use it everywhere. `rb_io_check_closed' has existed since the initial cvs2svn imports of Ruby, so it's safe to depend on for Ruby v1.9.3..v3.0.
2023-09-10doc: various updates ahead of release
Our mail provider has POP3 support, nowadays, and we need to more strongly discourage the use of kgio.
2023-09-05Use rb_io_descriptor if available for Ruby 3.3 compatibility
Ref: https://bugs.ruby-lang.org/issues/19057#note-17 Ruby 3.3 no longer fully expose rb_io_t which cause kgio to think it's being compiled on an older Ruby. The prefered API to use from Ruby 3.1 onwards is rb_io_descriptor. Sent-by: Samuel Williams <samuel.williams@oriontransfer.co.nz>
2021-05-25kgio 2.11.4 v2.11.4
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.
2021-05-25pkg.mk: remove index.html and created.rid from homepage
index.html and README.html are identical, so get rid of it. created.rid has no business being public, anyways. Our homepage is just a directory listing, nowadays, to improve discoverability of non-HTML docs.
2021-05-25fix compatibility with GC.compact
Constants defined in Ruby need to be explicitly marked when made static inside a C extension. Link: https://yhbt.net/kgio-public/CAAvYYt5Z5f2rMuXO5DMpR1-6uRvu_gXKDvqcyoZ+oNcLiTH39g@mail.gmail.com/T/ Commit-message-by: Eric Wong <e@80x24.org>
2021-05-25doc: update to v3 Onion URLs
Tor is dropping v2 .onion in favor of more secure (but less readable) v3 .onion URLs. Zooko's triangle once again :/ (no, we won't support planet-destroying proof-of-work schemes)
2021-05-25HACKING: update docs with "git request-pull" info
"git request-pull" is not a well-known command, so add a mention about it to avoid misleading people into thinking we use a centralized service. While we're in the area, put an extra link to the HTTPS archives, since SMTP-based subscriptions are not centralization-resistant. Thanks to Ngan Pham for the feedback. Link: https://yhbt.net/kgio-public/CAAvYYt6ruhhZcA4OmF=NQZ+-j0RJ0vT5f33tUCrREezo5mUCVQ@mail.gmail.com/
2021-03-25doc: add .onion URLs for Tor users
We shouldn't have to deal with ICANN-controlled TLDs at all
2020-01-08kgio 2.11.3 v2.11.3
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
2019-12-25doc: move from bogomips.org/kgio to yhbt.net/kgio
.org is being sold to extortionists and I couldn't afford to pay the bill to renew bogomips.org either way. So kick it to yhbt.net and be prepared to change when extortionists move onto the .net TLD...
2019-12-25doc: remove private email and outdated gmane archives
I'm not encouraging private bug reports anymore since it's the sender's job to protect privacy. I have no way to protect users' privacy, anyways. Also, the gmane archive is far out-of-date since the move to bogomips.org, and we're moving again...
2019-12-25build: remove olddoc from the gemspec
It's an unnecessary dependency for rebuilding the gem.
2019-12-14test_syssend: avoid warning on cleanup
We don't want to clutter up logs with warnings for cross-thread IO#close
2019-12-14test_connect_fd_leak: do not close socket if non-existent
2019-10-30tests: fix unused variable warnings from newer Rubies
Newer Rubies warn about more things...
2019-10-28test: fix warnings with RUBYOPT=-w
2019-10-28pkg.mk: use dark216 theme for Earth Day 2019
(forgot to commit for a few months)
2019-01-02pkg.mk: use --local to "gem install"
My Internet connection still sucks :<
2018-01-30kgio 2.11.2 - fix Ruby 2.5 compatibility for accept_class v2.11.2
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
2018-01-19accept: avoid passing unnecessary arg to rb_funcall
Followup-to commit aa1da2e47c69302f9bdb2ab4990e81d87bbcaf1f ("wait: avoid passing unnecessary args to rb_funcall")
2017-12-15kgio 2.11.1 - fix Ruby 2.5.0dev compatibility v2.11.1
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
2017-12-15wait: avoid passing unnecessary args to rb_funcall
The extra arg is unnecessary and causes errors on some systems (at least clang 5.0.0 on OpenBSD) under Ruby 2.5.0dev. Note: this may be a regression in Ruby 2.5.0dev itself and might need to be fixed upstream, as other gems may also break. cf. https://bogomips.org/kgio-public/20171215053434.GT7579@jeremyevans.local/t/ Acked-by: Eric Wong <e@80x24.org> [ew: commit message]
2016-12-16HACKING: fix linkifcation for Message-IDs
Oops, this is RDoc.
2016-12-16README: formatting fix
The extra space put the end inside a <pre> tag for RDoc :<
2016-12-16various documentation updates
Use HTTPS URLs when possible, add links to NNTP archives, and note we're a deprecated project.
2016-12-16kgio 2.11.0 - reverting 2.10.0 breakage v2.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
2016-12-16test: increase test data sizes to fill socket buffers
Some Debian build machines use insanely large socket buffers, so increase our test buffers to large values to force EAGAIN: https://bugs.debian.org/830353 In my experience, using setsockopt to clamp buffers to small sizes can lead to unpredictable stalls, too, so it might not be good to do in a test case, either.
2016-12-16TODO: update with Ruby 2.3 status
Since we're on the cusp of Ruby 2.4, I guess 2.3 features are stable.
2016-12-15reinstate the original (and dangerous) autopush in C
The regression for existing users was unnacceptable and completely poor judgement on my part. This change brings us back to potentially not-future-compatible code which will impose maintenance burdens on us in the face of future Ruby changes. But TODAY, it is the most performant option for folks who need to use autopush. Revert "resurrect Kgio.autopush support in pure Ruby" and "remove autopush support and make it a no-op" This reverts commits 64dc570f4b99f68b5ed792b36e7e8abc3df74927 and 4347980fa66115425fa8b765353c8b1bfe5dec24.
2015-10-09resurrect Kgio.autopush support in pure Ruby
This avoids breaking compatibility for existing apps, but is less performant (although safer and more resilient to future changes in Ruby) than the previous C version.
2015-09-06kgio 2.10.0 - slimming down... v2.10.0
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
2015-09-02HACKING: update URL for Message-ID lookup
Prefer to use our own site since it is free of images+JavaScript and may load faster if somebody is already reading bogomips.org and has an open connection and hot DNS cache entry.
2015-08-13remove autopush support and make it a no-op
Maintaining global state in a library like kgio is ugly, and it is not optimal from a performance standpoint compared to using MSG_MORE. TCP_CORK and TCP_NOPUSH require extra syscalls so it still offers sub-optimal performance compared to MSG_MORE. Instead, server developers should use MSG_MORE if their OS supports it (and should add MSG_MORE to their OS if lacking it).
2015-08-12minor doc updates
Ruby version changes, dropping Rubinius and MRI 1.8 support, and clarifying a few other things. "Linux kernel" coding style is probably a more accurate of what we've always used as the style is probably better known than K&R nowadays (and we do try to track Linux kernel changes (and email-oriented development style) closely).
2015-08-12poll: avoid rb_funcall for rb_hash_clear
rb_funcall will always be slower, and currently hits the global method cache in MRI.
2015-04-19writev: update comment on preserving errno
Studying malloc implementations for a while, it's completely reasonable for "free" to alter errno when making syscalls to release/compact memory.
2015-01-12README: remove reference to Rainbows!
Rainbows! never took off and is mostly a stagnant project at this point; so avoid confusing people with it.
2015-01-12kgio 2.9.3 - minor cleanups and fixes v2.9.3
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
2015-01-12gemspec: use SPDX license abbreviation
ref: http://spdx.org/licenses/
2015-01-12gemspec: remove invalid rdoc_options
No longer needed for olddoc
2015-01-12pkg.mk: synchronize with my other projects
We'll get EXTCONF_ARGS support as well as a muscle-memory-friendly "make check" alias.
2015-01-10cleanup: avoid shadowing rb_ary_subseq
Define a MY_ARY_SUBSEQ macro which checks arg counts correctly and avoids throwing off people who may potentially want to debug this code.
2015-01-10cleanup: avoid shadowing rb_str_subseq
Define a MY_STR_SUBSEQ macro which checks arg counts correctly and avoids throwing off people who may potentially want to debug this code.
2015-01-10fixup -Wshorten-64-to-32 warnings
These are emitted by clang on a Ubuntu Trusty amd64 system. clang version 3.5-1ubuntu1 (trunk) (based on LLVM 3.5)
2015-01-10cleanup packaging harder
We don't need references to RubyForge or old images crap.
2015-01-09LICENSE: prefer URL to FSF address
The FSF has and may move again physically, so the URL should be more future-proof.
2015-01-09tryopen: add RB_GC_GUARD for Ruby 1.8
Calling rb_intern(RSTRING_PTR(err)) was unsafe as the `err' value could be GC-ed inside rb_intern. This only affected Ruby 1.8 as Errno.constants returns an array of Symbols under 1.9+ Thanks to Petr Novodvorskiy for reporting the issue. ref: <CAHGF7iJk9-wK5WbSiAgQaRye7y2RJttLBpykRBpnKkxFi=ASHg@mail.gmail.com> Cc: Petr Novodvorskiy <nidd@skytap.com> Cc: Lara Martin <lmartin@skytap.com> Cc: Nick Astete <nastete@skytap.com>