ChangeLog in kgio-2.7.4 vs ChangeLog in kgio-2.8.0

- old
+ new

@@ -1,6 +1,204 @@ ChangeLog from http://bogomips.org/kgio.git + commit 8be51237720fd18cb45188f29c717bbac0ca1964 + Author: Eric Wong <normalperson@yhbt.net> + Date: Fri Jan 18 10:25:20 2013 +0000 + + kgio 2.8.0 - TCP Fast Open, writev/trywritev + + TCP Fast Open in Linux 3.7 and later is now supported + in the client via Kgio::Socket#kgio_fastopen. + + This release also adds the kgio_writev and + kgio_trywritev methods, thanks to funny-falcon + + commit 3e555a62c75406d15199fd7bdb287704e5738352 + Author: Eric Wong <normalperson@yhbt.net> + Date: Fri Jan 18 10:50:28 2013 +0000 + + rename fastopen => kgio_fastopen in Kgio::Socket + + In the unlikely case the Ruby Socket class implements its + own "fastopen" method, we will avoid conflicting. + + commit c751f42f5f6a5e54a399df472015ab6d2ffc3f7a + Author: Eric Wong <normalperson@yhbt.net> + Date: Sun Dec 30 11:43:10 2012 +0000 + + accept: do not set blocking if non-blocking is set + + This is prone to race conditions in multiprocess situations + where one process is relying on non-blocking operation while + another (likely newer process) relies on blocking operation. + + Since the blocking process can always fall back to calling + rb_io_wait_readable(), use that instead and give up some + scalability for higher reliability. + + Those interested in avoiding thundering herds will have to + stop/start their processes using blocking sockets (and tolerate + some downtime). + + commit c63ad2b2e0e25f0765605e8ba2d7038b5e28d878 + Author: Eric Wong <normalperson@yhbt.net> + Date: Thu Dec 27 02:16:26 2012 +0000 + + fastopen: fix argument order in RDoc example + + Oops :x + + commit 5f696156e097a1e66cb0c5c2a7cf62b38fd97605 + Author: Eric Wong <normalperson@yhbt.net> + Date: Thu Dec 27 01:29:01 2012 +0000 + + read_write: remove unused variable + + commit f61cef65b8a8816160c622324b4f1aad55034e4a + Author: Eric Wong <normalperson@yhbt.net> + Date: Thu Dec 27 01:16:56 2012 +0000 + + implement TCP Fast Open support (client + server) + + Server support just requires exposing one constant for + setsockopt: Kgio::TCP_FASTOPEN + + Client support implements a new Kgio::Socket#fastopen method. + This new method wraps the the sendto() syscall. With TCP Fast + Open, the sendto() syscall is overloaded for stream sockets to + implement the functionality of both connect() + write() + + Since it only makes sense to use _blocking_ I/O for sendto(), + TFO clients are only supported in Ruby implementations with + native threads. + + commit 7a3fc55424338ad458cc719d4cb3c4e28802d5cb + Author: Eric Wong <normalperson@yhbt.net> + Date: Thu Dec 13 00:02:50 2012 +0000 + + Kgio::Socket.new retains compatibility with Socket.new + + This allows us to create an unconnected socket, just like + the normal Socket class it inherits from. + + commit 48fc432a3b9dfd2b0435f0975556d4a321a5239b + Author: Eric Wong <normalperson@yhbt.net> + Date: Wed Dec 12 21:40:50 2012 +0000 + + connect: factor out tcp_getaddr() function + + This will be reused for TCP fast open support. + + commit 9ddd17b0e296eb279f05d418da6ad46319bcf0b5 + Author: Eric Wong <normalperson@yhbt.net> + Date: Wed Dec 12 21:21:29 2012 +0000 + + connect: split out my_socket() function + + This makes the retry logic for mismatched libc headers/kernel + versions easier to understand and follow. + + commit 8b4df8ece93ddc4e2fb685905461c1ed27b22295 + Author: Eric Wong <normalperson@yhbt.net> + Date: Wed Nov 21 23:16:00 2012 +0000 + + tryopen: include errno.h header just in case + + errno.h is not guaranteed to be included in existing headers, + so we need to #include it to ensure errno and friends are + usable. + + Thanks to stuart on the kgio mailing list for noticing + ref: <062571308.133355.1353536890665.JavaMail.sas1@172.29.251.236> + + commit f020550fc802f299fdcdec695ac80d53ef3d24d9 + Author: Eric Wong <ew@debkfreebsd.(none)> + Date: Mon Jul 2 04:21:40 2012 +0000 + + test workaround for platforms with unreliable signals + + Ruby may not respond well to signals on all platforms, especially not + after fork()-ing in the face of a running pthread (timer thread on + 1.9.2). SIGKILL bypasses Ruby (and all userspace) signal handling on + Debian GNU/kFreeBSD. + + commit 488a148d8b172e152e3450062b172ba516ab84b3 + Author: Eric Wong <ew@debkfreebsd.(none)> + Date: Mon Jul 2 04:20:20 2012 +0000 + + test/lib_read_write: wait for readability before tryread + + On FreeBSD, writing to a loopback TCP socket does not guarantee + immediate readability on the other end. + + Tested on Debian GNU/kFreeBSD 6.0 + + commit c79babfd175aa7b4be9d4d1a10a64c17b93730a0 + Author: Eric Wong <ew@debkfreebsd.(none)> + Date: Mon Jul 2 03:16:09 2012 +0000 + + test_poll: skip signal torture on Debian GNU/kfreebsd + + This cascades test failures on a platform with questionable + signal/fork handling. + + Tested on: Debian GNU/kFreeBSD 6.0 + + commit ff27e74a49bf6746ffe74cfc865430221f0bafe0 + Author: Sokolov Yura 'funny-falcon <funny.falcon@gmail.com> + Date: Fri Jun 1 13:42:58 2012 +0400 + + add `#kgio_writev` and `#kgio_trywritev` + + Add methods for using writev(2) syscall for sending array of string in + a single syscall. This is more efficient than concatenating strings on + Ruby side or sending them one by one. + `#kgio_trywritev` returns array of strings which are not sent to the + socket. If there were objects other than string, they could be converted + using `#to_s` method, but this is not strictly applied, cause + `#kgio_*writev` tries to write at most `sysconf(_SC_IOV_MAX)` items + at once (for Linux its value is 1024). First string of returned array + could be part of string from array, so that you should assume it is not + in consistent state. + + `#kgio_writev` semantic differs a bit from `#kgio_write` in term of + buffers mutability: currently `#kgio_write` tries to follow string changes + made concurrently, but `#kgio_writev` works with array's lightweight copy. + + Signed-off-by: Eric Wong <normalperson@yhbt.net> + + commit fa52cc5d0ef7d04b844868e08e2e7ec3c9e3396e + Author: Eric Wong <normalperson@yhbt.net> + Date: Wed May 30 12:31:19 2012 -0700 + + tryopen: avoid ambiguous name for subst function + + Define rb_thread_blocking_region as a macro for MRI 1.8 + to prevent confusing output in tools such as valgrind/gdb. + + commit a72e6cd0dd3038ae2a1b5ef94780143f5ab041c0 + Author: Sokolov Yura 'funny-falcon <funny.falcon@gmail.com> + Date: Wed May 30 17:56:55 2012 +0400 + + use rb_str_subseq for tail string on write + + Use rb_str_subseq for taking string's tail. rb_str_subseq do not allocate + additional memory in this case. And although it prevents from collecting + original string, it seems that tests wins both in performance and in memory + usage. + + Use fallback to rb_str_substr on ruby1.8 + + Signed-off-by: Eric Wong <normalperson@yhbt.net> + + commit 021eaddbfb41d82c0082657f60021bad52b3a6dc + Author: Sokolov Yura 'funny-falcon <funny.falcon@gmail.com> + Date: Wed May 30 17:56:54 2012 +0400 + + Fix UnixClientReadServerWrite test class name + + Signed-off-by: Eric Wong <normalperson@yhbt.net> + commit ab3fa8e85c02227985c56261d4898339f85d2b20 Author: Eric Wong <normalperson@yhbt.net> Date: Fri Mar 23 21:10:22 2012 +0000 kgio 2.7.4 - small fixes and cleanups