about summary refs log tree commit homepage
DateCommit message (Collapse)
2020-02-22Ruby io_splice 4.4.2 - URL + doc updates HEAD v4.4.2 master
doc: update URLs to point to YHBT.net bogomips.org is going away since .org isn't going to be affordable, anymore. While we're at it, stop requiring olddoc to just build the gem.
2020-02-22doc: update URLs to point to YHBT.net
bogomips.org is going away since .org isn't going to be affordable, anymore. While we're at it, stop requiring olddoc to just build the gem.
2019-01-02Ruby io_splice 4.4.1 - minor updates v4.4.1
This release fixes mismatched indentation warnings in Ruby 2.6+. There are also some minor doc updates. Of course, all the relevant functionality is also in the "sleepy_penguin" RubyGem. So chances are you won't need this package and increase overhead from DSOs(*) 4 changes since v4.4.0 io/splice: fix mismatched indentation warnings pkg.mk: build system updates doc: update URLs to HTTPS and remove refs to mail software README: add a note on sleepy_penguin providing splice + tee (*) https://udrepper.livejournal.com/8790.html
2019-01-02README: add a note on sleepy_penguin providing splice + tee
2019-01-02doc: update URLs to HTTPS and remove refs to mail software
No need to market or promote anything, here.
2019-01-02pkg.mk: build system updates
Mainly, pass --local to "'gem install"
2018-05-18io/splice: fix mismatched indentation warnings
Ruby 2.6.0dev warns about these
2015-01-11Ruby io_splice 4.4.0 - minor updates v4.4.0
Most notably the mailing list is now subscription-optional on the bogomips.org server: ruby-io-splice@bogomips.org If you want to keep receiving email updates, you'll need to resubscribe by sending a message to: ruby-io-splice+subscribe@bogomips.org Migrating subscribers can't be done automatically as librelist (our old host) doesn't publish subscriber lists. But you don't have to subscribe, either, HTTP archives are available at: http://bogomips.org/ruby-io-splice/ There you'll also find links to ssoma/public-inbox for extracting the mail archives to git. shortlog: move mailing list to ruby-io-splice@bogomips.org switch documentation to olddoc pack internal structs for 64-bit systems favor comparisons against zero instead of -1 doc updates Again, the io_splice 5.x will remove the mistake of the IO::Splice.copy_stream method. Users are encouraged to use IO.copy_stream in Ruby (1.9+) itself instead.
2015-01-11gemspec: remove dead wrongdoc stuff
Old wrongdoc cruft, update for olddoc.
2015-01-11doc updates
Remove LATEST from being rdoc-ed at all, and update the (mostly useless) private email address.
2015-01-10favor comparisons against zero instead of -1
This should allow faster instructions to be used in some cases. Technically this may be less pedantically correct, but there is enough existing code out there which does the same thing to discourage kernel/libc developers from overloading negative return values. ...And glibc even favors comparison against zero, too.
2015-01-10pack internal structs for 64-bit systems
This reduces stack usage in some places, perhaps providing a miniscule improvement in GC performance. struct before after difference splice_args 48 40 8 vmsplice_args 32 24 8
2015-01-10switch documentation to olddoc
wrongdoc was difficult to maintain because of the tidy-ffi dependency and the HTML5 changes in Darkfish could not be handled well by Tidy. olddoc is superior as it generates leaner HTML which loads faster, requires less scrolling and less processing power to render. Aesthetic comparisons are subjective of course but completely unimportant compared to speed and accessibility. ref: http://80x24.org/olddoc/
2015-01-10move mailing list to ruby-io-splice@bogomips.org
The public-inbox + mlmmj setup on bogomips.org allows posting without subscription and offers downloadable archives via git. The lack of rsyncable archives on librelist nowadays and subscription-required nature of librelist are points against it. Repliers are now encouraged to Cc: all recipients (using the reply-all function of their mail client) since many readers are not subscribed. This project has never accepted or encouraged HTML email, but librelist accepted it. The bogomips.org mail server is configured to treat HTML mail as spam, so do not send HTML mail if you expect a response. Users who wish to subscribe may send a message to: ruby-io-splice+subscribe@bogomips.org Similarly, they may unsubscribe via: ruby-io-splice+unsubscribe@bogomips.org HTTP archives are available via: http://bogomips.org/ruby-io-splice/ ssoma users may also use: git://bogomips.org/ruby-io-splice (see README change) Old messages to the librelist addresses will continue to get routed to the new mailing list. ref: http://public-inbox.org/
2014-02-15io_splice 4.3.0 - cleanups and compatibility fixes v4.3.0
This release fixes compatibility with Ruby trunk r44955 and onwards. There are also numerous cleanups. Note: usage of IO::Splice::WAITALL is deprecated and will be removed in 5.x along with IO::Splice.copy_stream.
2014-02-15avoid deprecated rb_thread_blocking_region on 2.0+
rb_thread_blocking_region is not in ruby trunk as of r44955
2014-02-09deprecate and remove docs for IO::Splice::WAITALL
This functionality should not be implemented in Ruby, at least. This flag could also conflict with future flags used by the underlying syscalls.
2014-02-09remove copy_stream tests and references
It is deprecated, so stop testing and advertising it.
2014-02-09prepare for rb_thread_blocking_region removal
It'll be OK to use rb_thread_call_without_gvl when rb_thread_blocking_region is not detectable at all. We still use rb_thread_blocking_region for Ruby 2.0-2.1 because rb_thread_call_without_gvl was detectable in 1.9.3, but not usable as an internal symbol. ref: https://bugs.ruby-lang.org/issues/9502
2013-09-30Rakefile: kill raa_update task
RAA is dead
2013-09-26avoid RARRAY_PTR usage for vmsplice
In case somebody finds vmsplice useful in Ruby, we avoid incurring the performance loss from RARRAY_PTR under Ruby 2.1.0 and Rubinius. However, I still haven't found a useful use of vmsplice under Ruby (or any high-level languages).
2013-05-12.gitignore: add .rbx
Newer versions of Rubinius generate files in .rbx.
2013-05-12io/splice: deprecated potentially unsafe methods
In retrospect, these methods are too infrequently useful and causes problems too easily to be worth supporting.
2013-04-21set close-on-exec in pipe size modification check
This prevents a file descriptor leak in case another thread forks and execs while we are in the middle of loading. This places a hard dependency on pipe2, but pipe2 appeared in Linux before pipe size modification.
2013-01-19io_splice 4.2.0 - several bugfixes and workarounds v4.2.0
We now limit maximum splice length to (1<<30) to avoid EINVAL errors on 64-bit hosts. vmsplice no longer raises Errno::EFAULT optimizations in newer GCC (not that I've found a good use for vmsplice at all with Ruby...) There are several other small cleanups. Eric Wong (6): copy_stream: small cleanup for pipe splicing limit maximum splice length to 1 << 30 avoid uname() for pipe size modification checks doc: s/librelist.com/librelist.org/ vmsplice: avoid referencing invalid stack address for strings vmsplice: more consistent fileno retry handling
2013-01-19vmsplice: more consistent fileno retry handling
While vmsplice is hardly useful, its FD-closed-while-GVL-less handling should be as good as our splice and tee wrappers.
2013-01-19vmsplice: avoid referencing invalid stack address for strings
Newer GCC more aggressively optimizes stack allocations away, so we need to avoid passing out-of-scope addresses to vmsplice. Not that vmsplice is useful in Ruby...
2012-03-08doc: s/librelist.com/librelist.org/
.org makes us look less commercial, which may be important to some folks. Yes, this project is run by a dirty hippie.
2012-03-07avoid uname() for pipe size modification checks
The uname comparison is fragile and we can better detect this during the Init_* function by just using a pipe.
2011-05-18limit maximum splice length to 1 << 30
This is the same value haproxy has to work around the same issue on 64-bit platforms. ref: a9de333aa58e6cb76f08a50e8ba2c5931184068f in http://git.1wt.eu/git/haproxy.git
2011-05-18copy_stream: small cleanup for pipe splicing
No need to loop on IO::Splice.full, it already loops internally whenever it makes sense.
2011-05-17io_splice 4.1.1 - workaround socket -> pipe issues v4.1.1
IO::Splice.copy_stream now uses SPLICE_F_NONBLOCK whenever the destination is a pipe. Our documentation is also updated to reflect the issue of splicing from sockets into pipes. ref: http://lkml.org/lkml/2009/1/13/478
2011-05-17expand doc for non-blocking splice into a pipe
We should warn our users to avoid a blocking splice() from a socket into a pipe if the socket buffers are full unless there's a blocking read/splice on the other end of the pipe.
2011-05-17copy_stream: always use SPLICE_F_NONBLOCK for partial copy
The pipe may be full from small buffers due to how TCP works, so we need to use non-blocking I/O on the pipe. ref: http://lkml.org/lkml/2009/1/13/478
2011-05-16io_splice 4.1.0 - copy_stream enhancement for 1.9 v4.1.0
IO::Splice.copy_stream coerces based on the availability of the #to_path method in source and destination arguments. This is to be compatible with IO.copy_stream and also Rack::File since this may be used in web servers. This is NOT visible with Ruby 1.8 since File.open doesn't coerce with #to_path on the given object.
2011-05-13copy_stream coerces based on #to_path
This is to be compatible with IO.copy_stream and also Rack::File since this may be used in web servers. This is NOT compatible with Ruby 1.8 since File.open doesn't coerce with #to_path on the given object.
2011-05-12io_splice 4.0.0 - easier to use! v4.0.0
Methods now automatically retry on EINTR after checking IO#closed? and executing interrupts. There is a new IO::Splice::WAITALL flag (implemented in userspace) which may be used to cause IO.splice and IO.tee to retry (while the GVL is released) until the operation is complete. IO::Splice.copy_stream now works correctly for large copies if source offset is specified. MRI 1.8 is only weakly supported now, MRI 1.9 is the preferred platform though Rubinius appears to work, too.
2011-05-12fix up documentation for fd vs IO objects
We support both, but IO objects are easier to use so refer to those in the documentation.
2011-05-12copy_stream: enough to get this working under MRI 1.8
This way at least 1.8 users can have something akin to IO.copy_stream.
2011-05-12test_copy_stream: fix userspace buffering assumption
And enable UNIX socket tests for this
2011-05-12add copy_stream test from MRI
This helps flesh out some inconsistencies between our implementation and IO.copy_stream in MRI. Some things we won't care about though, like userspace buffering.
2011-05-12copy_stream: update src_offset on retries
Oops :x
2011-05-10copy_stream attempts to use IO::Splice::WAITALL
This reduces Ruby method dispatches
2011-05-10test_io_splice: disable timeout-related tests in non-MRI
timeout doesn't seem to interrupt C extensions reliably in some cases...
2011-05-09add IO::Splice::WAITALL flag support
This allows splice-in-full and tee-in-full behavior to simplify user code.
2011-05-09test_io_splice_eintr: beef up test
Also works under Rubinius
2011-05-09use ssize_t/size_t instead of long/unsigned long
Easier to read this way since it matches upstream functions.
2011-05-09EINTR test only works under 1.9
Not that we feel like supporting 1.8 any longer..
2011-05-09detect closed descriptors on EINTR
We don't want to retry with the same FD if it somehow got closed and reopened in a different thread. We could possibly have Errno::EBADF, too, but rb_thread_io_blocking_region doesn't allow multiple file descriptors...
2011-05-09my_fileno: use FIX2INT instead of NUM2INT
No chance in hell a file descriptor can be a Bignum...