- Support for the
ZMQ_REQ_RELAXED
andZMQ_REQ_CORRELATE
socket options, implemented in #285.
-
SocketType
,Mechanism
, andError
can not longer be cast to an integer type and expected to get the correspondinglibzmq
C-level value. The ability to cast to integers and get the C enum values was never a documented part of the API, so this is not considered a breaking change.Unfortunately, the
SocketEvent
can not be future-proofed in this way; the monitoring API needs breaking changes to gain a reasonable level of type-safety.
- A potential panic in
Message::gets
involving messages with non-UTF8 property values has been fixed; see #288.
-
Added
vendored
feature which buildlibzmq
from source viazeromq-src
, see theREADME
for details; discussed in #257 and implemented in #267. -
The installed
libzmq
C library is no longer feature-probed at build time, and all the wrapped API is exposed. Using features unsupported by the installedlibzmq
library will lead to run-time errors, like they would in C.This should enable cross-compiling without jumping through additional hoops.
Implemented in #276.
-
The
Message
data type now implementsFrom<Box<[u8]>
. -
The
Message
data type has gained a new constructorwith_size
, which replaces the now-deprecated, confusingly-namedwith_capacity
constructor. Reported in #215 and fixed in #272. -
New functions
proxy_steerable
andproxy_steerable_with_capture
, which wrap thezmq_proxy_steerable
C function. Implemented in #242.
- The
Message
constructorswith_capacity_unallocated
,with_capacity
andfrom_slice
methods are deprecated, the first one without a planned alternative (#272).
- The codebase has been switched to the Rust 2018 edition and requires
rustc
1.32.0 or newer. Compatibility back to 1.32.0 is now ensured via CI.
-
Requires ZeroMQ 4.1+.
-
The deprecated
Constants
enum has been removed from the API. -
Message allocation, e.g.
Message::new()
directly returnsMessage
instead ofResult<Message>
and will panic on allocation failure, as is customary in Rust. Reported in #118 and fixed by #130.
-
Message
now implementsFrom
for various types that have an obvious byte-level representation. This is possible due to the message allocation API change (see above). -
Message::send()
now works onInto<Message>
types, obsoletingsend_msg()
andsend_str()
. -
Added support for connection timeouts, heartbeats, and xpub welcome messages.
Message::send_msg()
andsend_str()
are deprecated in favor ofMessage::send()
.
- Support for the
zmq_socket_monitor
API. - Added
PollItem::set_events
, which allows for constructing aPollItem
from arbitrary file descriptors.
- Fix feature detection for
zmq_has
(issue #207).
- Support for the
ZMQ_PROBE_ROUTER
andZMQ_ROUTER_MANDATORY
socket options. zmq_disconnect
is now exposed asSocket::disconnect
.
- Fix build on OpenBSD (issue #170).
- Account for OpenBSD not defining
EPROTO
. - Fix build for 32-bit Windows.
- Handle
EINTR
inError::from_raw
(issue #174). - Alignment of
zmq_msg_t
FFI type fixed. - Fix
build.rs
to portably construct paths, instead of hard-coding slash as path separator.
This release fixes the remaining Windows-specific issues exposed by our test suite, as well as improving API convenience a bit.
- Should now work on Windows.
Message
now provides theEq
trait.From<Error>
is now provided forstd::io::Error
(issue #136).- There is now a type alias
PollEvents
mapping toi16
. Use that instead ofi16
to refer to a set of poll events; in 0.9,PollEvents
will become a separate type. PollItem
now has methodsis_readable
,is_writable
andis_error
; use those in preference to using bit masking operations when applicable.- New example zguide example
mspoller
. - Some documentation improvements.
- There is now a Unix-specific test integrating
zmq
with Unixpoll(2)
.
There has been a minor API change that was deemed necessary for cross-platform support and to fix broken parts of the API:
- There is now an internal
RawFd
type alias that maps toRawFd
on Unixoids andRawSocket
on Windows.Socket::get_fd()
andPollItem::from_fd()
now use that instead ofi64
andc_int
, respectively.
This is a feature and bugfix release. The API has changed, partially
in slightly incompatible ways. Typical code, for some suitable value
of "typical", should still compile when it did with 0.7, but expect a
lot of warnings due to reduced mutability requirements for Socket
and Context
.
Note that this release adds initial support for the Windows platform (PR #124). While the code now compiles, the test suite is still broken under Windows (issue #125).
Since these release notes have been assembled post-hoc, they are highly likely to be incomplete.
The following methods of Socket
changed:
- The deprecated
close()
method has been removed. to_raw()
is now known asinto_raw()
.borrow_raw()
is known asas_mut_ptr()
, and takes a&mut self
now.
Note that the added CURVE
and GSSAPI
parts of the API are
conditional, depending on the compile-time detected capabilities of
libzmq.
- Most methods of
Socket
no longer require&mut self
. Context
now can be shared across threads- rust-zmq should now work across a wider range of libzmq versions.
- More functions now have minimal documentation, but there is still lots of improvements to make in this area.
- Initial API coverage for encryption via the
Mechanism
andCurveKeyPair
data types. - Wrappers for the Z85 codec (
z85_encode
andz85_decode
). - New socket option accessors for:
ZMQ_LAST_ENDPOINT
ZMQ_IMMEDIATE
ZMQ_PROBE_ROUTER
,ZMQ_ROUTER_MANDATORY
ZMQ_RCVTIMEO
,ZMQ_SNDTIMEO
- Various Kerberos (aka
GSSAPI
) and encryption-related (akaCURVE
) options.
- New zguide examples
fileio3
,msreader
,rtdealer
,lvcache
,pathopub
andpathosub
. - There now is a test suite.
Constants
will be removed from public API in the next release; it
should not be needed in client code, since corresponding functionality
is provided in a higher-level form.
Yes, there have been bugs that were fixed; hopefully for the next releases, a reasonably accurate list of those will be provided.
Some redundancy in error handling and socket option handling has been abstracted over using macros.