ChangeLog in posix_mq-0.4.0 vs ChangeLog in posix_mq-0.5.0

- old
+ new

@@ -1,339 +1,55 @@ -ChangeLog from git://git.bogomips.org/ruby_posix_mq.git () +ChangeLog from git://git.bogomips.org/ruby_posix_mq.git (v0.4.0..v0.5.0) - commit aa9beecf64739ea084158ff63a92f626bfb5717d + commit f3605c820fd73713e34950170bf759e1af204038 Author: Eric Wong <normalperson@yhbt.net> - Date: Sat Mar 13 00:28:14 2010 -0800 + Date: Tue May 4 19:48:18 2010 -0700 - posix_mq 0.4.0 + posix_mq 0.5.0 - Small bugfixes and small API changes to avoid potential - issues/misuse are the focus of this release. + Uncommonly raised exceptions due to programmer error are now + raised more safely with respect to the MRI garbage collector. - For non-blocking operation, the GVL is no longer bounced. This - reduces synchronization/scheduling overhead when used in - non-blocking applications. + The "posix-mq.rb" executable has been renamed to "posix-mq-rb" + to respect RPS and is also hopefully easier to type/read when + used in scripts. I'm preserving the "rb" in the name since I + hope to have a more portable, C-only version someday. - Small cleanups and documentation improvements, too. - - * make POSIX_MQ#dup and POSIX_MQ#clone no-op - * do not release GVL for non-blocking operations - * do not release GVL when unlinking/opening - * POSIX_MQ#<< does not release GVL when non-blocking - * avoid shadow warnings - * README: add mailing list archives info - * POSIX_MQ#to_io works under FreeBSD, too - * fix potential race with notify(&block) - * add TODO item for using netlink under Linux - * remove non-portable #warning CPP directive - * ensure POSIX_MQ#name is clobber-proof + Minor cleanups and documentation now uses RDoc 2.5.x - commit 437cbe78cb0f239e34f9dbf1341f5b85f96f2f25 + commit f4d7d9d14cf65595aa3d98429a6732bd6b007b4a Author: Eric Wong <normalperson@yhbt.net> - Date: Sat Mar 13 00:22:22 2010 -0800 + Date: Tue May 4 19:37:37 2010 -0700 - ensure POSIX_MQ#name is clobber-proof - - We don't want folks to accidentally clobber the value for - others, so allocate a new string object for it (don't worry, - rb_str_dup() is cheap in 1.9). + doc: updates for RDoc 2.5.x - commit 74e1f75b238416d9ac402f291431a5e457ae313f + commit 7b1b8a1cbbedc2764d4a8ab0d992f9f2ef73d9b7 Author: Eric Wong <normalperson@yhbt.net> - Date: Sat Mar 13 00:08:37 2010 -0800 + Date: Tue May 4 19:31:47 2010 -0700 - remove non-portable #warning CPP directive + rename `posix-mq.rb' executable to `posix-mq-rb' - There's a good chance they're not using GCC if they're on some - weird platform that we'd emit a warning for. - - commit 9881f136858ac8f3a77a6cea8ce15b1cdb4ad55a - Author: Eric Wong <normalperson@yhbt.net> - Date: Tue Mar 2 22:47:29 2010 -0800 - - add TODO item for using netlink under Linux - - commit 19668b0edc9b09cfd72247f7041390e0328032a0 - Author: Eric Wong <normalperson@yhbt.net> - Date: Tue Mar 2 21:20:28 2010 -0800 - - fix potential race with notify(&block) + ".rb" in the executable name is discouraged by the + {Ruby packaging standard}[http://github.com/chneukirchen/rps] + and probably confusing. - We need to assign the notify_thread before assigning the - notification. Otherwise, there's a chance the notification - could fire and the notify_thread is not properly assigned for - the POSIX_MQ object when the pipe becomes readable. + If I ever get around to it, a non-Ruby version of this + executable is planned, and that will be called "posix-mq" - commit 0f4a8ef81479f9eff9037011d81b96cf402cbe7b + commit 33368c839dc8c63489591bda6e60c78025be8852 Author: Eric Wong <normalperson@yhbt.net> - Date: Sat Feb 20 17:36:16 2010 -0800 + Date: Thu Apr 22 00:02:25 2010 -0700 - POSIX_MQ#to_io works under FreeBSD, too - - commit 44cd880c96a76d43f6dcc7f7cdf7f687e32bda0c - Author: Eric Wong <normalperson@yhbt.net> - Date: Sat Feb 20 17:35:08 2010 -0800 - - README: add mailing list archives info - - commit 4b56e475483454cd6616dd3c310c251940e9368b - Author: Eric Wong <normalperson@yhbt.net> - Date: Sat Feb 20 17:19:52 2010 -0800 - - avoid shadow warnings - - commit 97ef1cfd699640e40d2d63746d005f4f4cf6a863 - Author: Eric Wong <normalperson@yhbt.net> - Date: Sat Feb 20 14:52:16 2010 -0800 - - POSIX_MQ#<< does not release GVL when non-blocking + GC safety fixes - Missed this with the other change + Avoid the RSTRING_PTR(rb_inspect(val)) construct, as it may not + preserve the value of rb_inspect() on the stack. - commit 5849a3ca8e0691a7f39c5cdbfc09fc34ee4da308 + commit a9a365326ea0f7a37852d25adfb03049c0b24c22 Author: Eric Wong <normalperson@yhbt.net> - Date: Sat Feb 20 14:46:04 2010 -0800 + Date: Wed Apr 21 23:58:25 2010 -0700 - do not release GVL when unlinking/opening + cleaner lookup "Signal" of constant - Since the message queue is not actually on a (slow) block - device, it's unlikely to block in a way where other tasks may be - scheduled by the kernel. So avoid complicating things and - unnecessary task switching and assume mq_open/mq_unlink can - be executed as fast as the CPU/memory subsystems allows. - - commit a90d0f97c9eb5d9683af09b60ef7af9e94a255c3 - Author: Eric Wong <normalperson@yhbt.net> - Date: Sat Feb 20 14:40:16 2010 -0800 - - do not release GVL for non-blocking operations - - There's no point in wasting cycles releasing and reacquiring - a lock when we know we won't block. Since most non-blocking - users are expected to be single/few-threaded processes, this - will likely help them. - - commit 67a59023164bc039129b34a742f06ba376687684 - Author: Eric Wong <normalperson@yhbt.net> - Date: Wed Feb 17 00:37:43 2010 -0800 - - make POSIX_MQ#dup and POSIX_MQ#clone no-op - - It'll cause problems for the automatic mq_close() during GC - otherwise, as dup(2) on an mqd_t isn't portable. - - Of course there's no point in cloning or duping, either, as - mq_send/mq_receive operations are always atomic at the kernel - level and only one thread can have a notification registered - for it. - - commit 05e577616b74bea99a0e43e07f28823ddda1aaf9 - Author: Eric Wong <normalperson@yhbt.net> - Date: Sat Feb 13 03:39:17 2010 -0800 - - posix_mq 0.3.1 - - This fixes a misuse of the Ruby API leading to memory leaks in - cases where message queues are continually opened and closed - throughout the lifetime of the application. - - Fortunately applications have little reason to repeatedly open - and close message queue descriptors: they are - multi-thread/multi-process-safe in every way imaginable and also - capable of non-blocking operation. - - commit 9adbee0ab71bf408db5c3befb43b2bab0d86ebb2 - Author: Eric Wong <normalperson@yhbt.net> - Date: Sat Feb 13 03:30:44 2010 -0800 - - use GC correctly and avoid memory leaks - - We still need to explicitly free the pointer we're given, and - not just close the associated file descriptor. Fortunately most - people to not spend all day opening/closing message queue - descriptors so this leak may not be noticeable. - - commit c07cf2979036b9550566d59d6d4899be98f3e553 - Author: Eric Wong <normalperson@yhbt.net> - Date: Thu Jan 21 20:44:22 2010 -0800 - - add #shift test with destination buffer - - commit 1d0bf6f1d39e085948008c2c6d381ed929ac109e - Author: Eric Wong <normalperson@yhbt.net> - Date: Sat Jan 9 15:16:40 2010 -0800 - - Rakefile: fix raa_update task - - commit 2e420820d3b3fb228c810937539f95a618a2c271 - Author: Eric Wong <normalperson@yhbt.net> - Date: Sat Jan 9 22:52:27 2010 +0000 - - posix_mq 0.3.0 - - This release adds a few new API methods, fixes MRI 1.8.6 - support. We should now have full feature parity with - underlying POSIX message queue C API. - - * POSIX_MQ#notify(&block) - RDoc: http://bogomips.org/ruby_posix_mq/POSIX_MQ.html#M000001 - This is only supported on platforms that implement - SIGEV_THREAD with mq_notify(3) (tested with glibc + Linux). - Other platforms will have to continue to rely on signal - notifications via POSIX#notify=signal, or IO notifications - in FreeBSD (and Linux). - - * POSIX_MQ#shift([buffer [,timeout]]) - Shorthand for the common "POSIX_MQ#receive.first" - when you do not care for priority of the received message. - - Rev, EventMachine and Reactor support are planned for - Linux, FreeBSD and possibly any other platforms where POSIX - message queues are implemented with a file descriptor. - - commit 2c71257b2b95e737088726ffc963b4e72f1b5455 - Author: Eric Wong <normalperson@yhbt.net> - Date: Sat Jan 9 22:49:49 2010 +0000 - - MRI 1.8 does not have rb_str_flush - - It's Rubinius-specific and we use rb_str_resize - there anyways... - - commit 531106e51e519458d37bed3721da4eff2f163206 - Author: Eric Wong <normalperson@yhbt.net> - Date: Fri Jan 8 11:30:49 2010 -0800 - - no point in non-blocking for fd notifications - - It's not needed since the native thread will retry in the - unlikely case of EINTR/EAGAIN. And writing one byte to a pipe - that's guaranteed by POSIX to be at least 512 bytes is highly - unlikely. - - It's also bad because F_SETFL takes the big kernel lock under - Linux (and possibly other systems), and doing it unnecessarily - is a waste of system cycles. - - commit d03c76ae11ca6294e05262df747e4d43822ada73 - Author: Eric Wong <normalperson@yhbt.net> - Date: Fri Jan 8 11:25:06 2010 -0800 - - mode_t is usually unsigned - - Most used open modes are well under INT_MAX, however - - commit b3c31cf444e2ca3dae0f6d2370944bfbf3382d88 - Author: Eric Wong <normalperson@yhbt.net> - Date: Thu Jan 7 01:45:25 2010 -0800 - - add POSIX_MQ#shift helper method - - This acts like POSIX_MQ#receive but only returns the message - without the priority. - - commit 3700db51399e4949ed314ad0545d037b7762064e - Author: Eric Wong <normalperson@yhbt.net> - Date: Thu Jan 7 09:28:57 2010 +0000 - - POSIX_MQ#notify only works on GNU/Linux for now - - SIGEV_THREAD is not easy to implement, so many platforms - do not implement it. - - commit 40d61f55ac53e3cd2f229d0b032da03032e3d53d - Author: Eric Wong <normalperson@yhbt.net> - Date: Thu Jan 7 00:37:57 2010 -0800 - - POSIX_MQ#notify block execution on message received - - This is implementation uses both a short-lived POSIX thread and - a pre-spawned Ruby Thread in a manner that works properly under - both Ruby 1.8 (green threads) and 1.9 (where Ruby Threads are - POSIX threads). - - The short-lived POSIX thread will write a single "\0" byte to - a pipe the Ruby Thread waits on. This operation is atomic - on all platforms. Once the Ruby Thread is woken up from the - pipe, it will execute th block given to it. - - This dual-thread implementation is inspired by the way glibc - implements mq_notify(3) + SIGEV_THREAD under Linux where the - kernel itself cannot directly spawn POSIX threads. - - commit d8c8fb4155c1feea454abc3ed3f0a4b26e90be68 - Author: Eric Wong <normalperson@yhbt.net> - Date: Sun Jan 3 05:26:00 2010 +0000 - - fix warnings on platforms where mqd_t != int - - The POSIX manpages specify the return values of all - mq_* functions besides mq_open(3) to be "int", not "mqd_t". - - commit dbe5ed46e07b853e79e44141924a0166016e3e44 - Author: Eric Wong <normalperson@yhbt.net> - Date: Sat Jan 2 23:19:34 2010 -0800 - - bump GIT-VERSION-GEN - - Shouldn't affect most people since they should just - take code from git... - - commit fd2fcdeee6b44f7854255cb7e01c81db3cd2d99c - Author: Eric Wong <normalperson@yhbt.net> - Date: Sun Jan 3 05:46:45 2010 +0000 - - posix_mq 0.2.0 - - This release fixes notification (un)registration and should be - fully-supported on modern FreeBSD (7.2+) releases. - - POSIX_MQ#notify=nil correctly unregister notification requests. - POSIX_MQ#notify=false now provids the no-op SIGEV_NONE - functionality. Under FreeBSD, using IO.select on POSIX_MQ - objects is now possible as it has always been under Linux. - - commit 350bfc831938d84cc2d478f2cf88583863cb64fb - Author: Eric Wong <normalperson@yhbt.net> - Date: Sun Jan 3 05:35:50 2010 +0000 - - support POSIX_MQ#to_io under FreeBSD - - FreeBSD implements an __mq_oshandle(mqd_t mqd) function - to convert mqd_t to integer file descriptors. - - commit 26015d39e9c848a536b4ea44802f858a4e6e74f7 - Author: Eric Wong <normalperson@yhbt.net> - Date: Sun Jan 3 04:17:56 2010 +0000 - - fix build under FreeBSD 7.2 - - FreeBSD seems to need some files explicitly included. - - commit e7ac70686b3c09953f6c41966dbd77f77368a9ec - Author: Eric Wong <normalperson@yhbt.net> - Date: Sat Jan 2 21:19:58 2010 -0800 - - doc: FreeBSD-specific notes + example code - - commit 6f24b5626f89fbb6445c0943ba71f56c8945e18f - Author: Eric Wong <normalperson@yhbt.net> - Date: Sat Jan 2 20:41:39 2010 -0800 - - Fix mq.notify = nil to unregister notifications - - "mq.notify = false" also works now, doing what - "mq.notify = nil" used to do (using SIGEV_NONE). - - I was confused by SIGEV_NONE usage vs using a NULL pointer for - the notification passed mq_notify(3). SIGEV_NONE does not - actually unregister, it registers a no-op notification which - prevents other processes from taking us. - - This also fixes the test case to pass under both Linux and - FreeBSD. - - commit 522d4d1472c216bd95a16ca5b118bc14693aad64 - Author: Eric Wong <normalperson@yhbt.net> - Date: Sat Jan 2 02:33:23 2010 -0800 - - initial commit + Instead of blindly defining a module, this is more flexible in + case Signal in Ruby itself becomes something other than a + module.