www/posts/2012/08/version-1-0-released.md
This is a feature and bugfix release. This is the most significant release for the mosquitto project so far. It encompasses >20% of the total commits for the project and has an increase in source tarball size of 95%, mostly down to the new bundled tests and new man pages. It introduces lots of new features for the broker and improves the API of the client libraries, although this does mean that the libraries are incompatible with previous releases. I apologise for this and hope you'll agree that the changes are worth it.
I've been overwhelmed with the amount of feedback that I've received recently, thanks to everyone that has got in touch to let me know where something could be improved. I'd particularly like to thank Nicholas Humfrey for setting me on the continuous integration path.
On a slightly different note, my wife was expecting our first child two days ago so it's quite likely I'll be less responsive to support requests for a little while.
These are what I think are the exciting changes for this release.
Source is available on the download page, the binary packages will follow as soon as possible. Windows and Ubuntu packages are currently available, more to follow.
The complete list of changes is below:
try_private config option for bridge connections.autosave_on_changes config option.include_dir config option.notification_topic option.restart_timeout to control the amount of time an automatic bridge will
wait before reconnecting.persistence_file and persistence_location.struct mosquitto *mosq parameter for all callbacks in the client
library. This is a binary incompatible change so the soversion of the
libraries has been incremented. The new parameter should make it easier to
use callbacks in practice.mosquitto_want_write() for use when using own select() loop with
mosquitto_socket().mosquitto_connect_async() to provide a non-blocking connect client call.mosquitto_user_data_set() to allow user data pointer to be updated.mosquitto_disconnect().mosquitto_strerror() for obtaining a string description of error numbers.mosquitto_connack_string() for obtaining a string description of MQTT
connection results.mosquitto_will_clear() and change mosquitto_will_set() to only set the
will.mosquitto_sub_topic_tokenise() and mosquitto_sub_topic_tokens_free()
utility functions to tokenise a subscription/topic string into a string
array.mosquitto_topic_matches_sub() to check whether a topic matches a
subscription.mosquitto_log_init() with mosquitto_log_callback_set() to allow
clients to decide what to do with log messages.mosquitto_new() will now generate a random client id if the id parameter
is NULL.max_packets to mosquitto_loop(), mosquitto_loop_read() and
mosquitto_loop_write() to control the maximum number of packets that are
handled per call.clean_session parameter has been moved from mosquitto_connect() to
mosquitto_new() because it is a client parameter rather than a connection
parameter.mosquitto_new() now sets errno to indicate failure type.MOSQ_ERR_INVAL on zero length topic.mosquitto_loop_misq() can now return MOSQ_ERR_NO_CONN.lib_init(), lib_version() and lib_cleanup() are now in the mosqpp
namespace directly, not mosquittopp class members.--help arguments to pub/sub clients.