zmq_event_t has gone; in 4.0 the socket monitor sent this C/C++ structure across the connection. This did not however work well for other languages. In 4.1, the socket monitor sends a binary formatted message that is consistent across all languages.

ZMQ_STREAM sockets now return an empty message upon client connect and/or disconnect. This no longer happens unless you set the ZMQ_STREAM_NOTIFY option on the socket.

Previously an outgoing connection had a pipe before authentication. In 4.1, the pipe is created after successful authentication. This means sending to a socket without any successfully authenticated socket will now block unless there's a timeout or poll.