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.