Ruby posix_mq 2.4.1 / 2018-01-31 00:02 UTC
This release fixes a problem affecting users of newer clang (5.x+)
and Ruby 2.5.0: https://bugs.ruby-lang.org/issues/14425
There is no need to upgrade if using gcc or Ruby <= 2.4.
* drop extra args to rb_funcall
Ruby posix_mq 2.4.0 / 2017-03-20 19:43 UTC
Most notably there are some FreeBSD fixes. There are also
some minor internal cleanups and doc updates.
7 changes since 2.3.0 (2016-02-02):
doc: remove private email address
doc: update bogomips.org URLs to HTTPS
set correct condition for setting id_autoclose
test_posix_mq: get tests passing under FreeBSD 10.3
TypedData C-API conversion
freeze internal objects
build: remove build-time olddoc dependency
Ruby posix_mq 2.3.0 - updates for Ruby 2.3+ / 2016-02-02 23:28 UTC
This release updates our POSIX_MQ#close to match the idempotent
IO#close behavior under Ruby 2.3 and later. Previous Ruby versions
continue to be supported, but POSIX_MQ#close remains non-idempotent
when built against old Ruby versions.
4 changes since v2.2.0:
enable frozen_string_literal for Ruby 2.3+
support idempotent POSIX_MQ#close
README: remove cgit and ssoma references
build: use '--local' domain for dev gem install
Ruby posix_mq 2.2.0 - support FD adoption / 2015-01-16 20:23 UTC
The major feature of this release is the POSIX_MQ.for_fd class
method thanks to Christopher Lord. The addition of the
POSIX_MQ#autoclose? and POSIX_MQ#autoclose= round out the new
feature set. All of the new methods are analogous to their
counterparts in the core IO class.
The mailing list is also moved to email@example.com
and no longer requires subscription. Existing librelist
subscribers will need to resubscribe manually (as I have no
way of doing so automatically):
HTTP archives and instructions for extracting the mail archives
via git are available at:
Christopher Lord (1):
Ability to adopt file descriptors
Eric Wong (16):
for_fd: delay assigning to mq->des until after mq_getattr
test_posix_mq: rewrite test to not depend on DL or alarm
support autoclose= and autoclose?
pack rw_args struct
change mailing list to firstname.lastname@example.org
doc: remove --sanitize-html option for pandoc
switch documentation to olddoc
LICENSE: allow all future versions of LGPLv3+
favor comparisons against zero instead of -1
pkg.mk: misc tweaks and updates
gemspec: remove rdoc_options setting
.gitignore: add placeholder
gemspec: use SPDX license abbreviation
misc doc updates
POSIX_MQ#autoclose= propagates to IO
GNUmakefile: ordering fix for building gem
posix_mq 2.1.0 - ensure compatibility with future Rubies / 2014-02-15 13:35 UTC
* avoid deprecated rb_thread_blocking_region in Ruby 2.0/2.1
* prepare for rb_thread_blocking_region removal
posix_mq 2.0.0 - a minor API change + FreeBSD fixes / 2012-08-06 21:02 UTC
Blocking methods no longer raise Errno::EINTR (to match
Ruby IO semantics, making code easier to work with).
There are also many FreeBSD-related fixes thanks to
Hleb Valoshka <email@example.com> and small code cleanups.
posix_mq 1.0.0 - kinder, gentler message queues / 2011-03-01 09:17 UTC
There is one backwards-incompatible API change:
POSIX_MQ#send returns +true+ on success instead of +nil+
for consistency with POSIX_MQ#trysend.
This release adds the POSIX_MQ#trysend, POSIX_MQ#tryreceive and
POSIX_MQ#tryshift interfaces to avoid exceptions on common
EAGAIN errors for users of non-blocking queues.
Bugfixes: non-blocking behavior changes to a shared descriptor
in a different process are reflected immediately in the child
(this won't fix race conditions in your code, however).
Minor bugfixes for posix-mq-rb(1) and quieted warnings for
posix_mq 0.8.0pre - kinder, gentler and less exceptional / 2011-02-27 11:13 UTC
This adds trysend, tryreceive, and tryshift interfaces to avoid
exceptions on common EAGAIN errors for non-blocking users. EAGAIN
during non-blocking messages is common when there are multiple
readers/writer threads/processes working on the same queue.
trysend is like send, except it returns true for success and false for
EAGAIN. send (still) returns nil, which I now consider a mistake but
won't change until post-1.0...
tryreceive and tryshift are like receive and shift respectively,
but they return nil for EAGAIN and the same return values
for their non-shift variants.
None of these methods call mq_setattr() beforehand to set the
non-blocking flag, it assumes the user set it once before they were ever
called and never changes it. Checking/setting the non-blocking flag
every time is needless overhead and still subject to race conditions if
multiple processes/queues keep flipping flag on the same queue
These interfaces are not yet final, feedback is appreciated
posix_mq 0.7.0 - cleanups + portability fixes / 2011-02-24 00:32 UTC
This release now works for systems other than Linux and FreeBSD
that support POSIX message queues. This is usable for systems
without mq_timedsend() or mq_timedreceive() but with the
non-timed variants (timeouts wont work).
Thanks to Tadeusz Bochan for testing.
Ruby posix_mq is now dual-licensed under the GPLv2 (as well as the
preferred LGPLv3) for compatibility with existing GPLv2-only code.
posix_mq 0.6.0 - Rubinius support / 2010-12-25 08:28 UTC
Rubinius 1.2 as well as Ruby 1.9. Ruby 1.8 works except it will
block the entire interpreter for blocking operations. Spurious
errors during GC for POSIX_MQ#to_io users are now avoided.
posix_mq 0.5.1 / 2010-05-09 08:10 UTC
Fix POSIX_MQ#notify(&block) usage, this regression was
introduced in 0.4.0 and our tests for it were broken, as well.
posix_mq 0.5.0 / 2010-05-05 02:54 UTC
Uncommonly raised exceptions due to programmer error are now
raised more safely with respect to the MRI garbage collector.
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.
Minor cleanups and documentation now uses RDoc 2.5.x
posix_mq 0.4.0 / 2010-03-13 09:44 UTC
Small bugfixes and small API changes to avoid potential
issues/misuse are the focus of this release.
For non-blocking operation, the GVL is no longer bounced. This
reduces synchronization/scheduling overhead when used in
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
posix_mq 0.3.1 / 2010-02-13 12:05 UTC
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.
posix_mq 0.3.0 / 2010-01-09 23:11 UTC
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.
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.
posix_mq 0.2.0 / 2010-01-03 05:52 UTC
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.
posix_mq 0.1.0 - initial release / 2010-01-02 11:01 UTC
mail archives: https://bogomips.org/ruby-posix-mq/
source code: git clone https://bogomips.org/ruby_posix_mq.git
git clone git://bogomips.org/ruby_posix_mq.git