Note that the initial version of the MQI did not have a version predicate so The proper way for callers to check the version is:
use_module(library(mqi))
, ( current_predicate(mqi_version/2)
->
mqi_version(Major_Version, Minor_Version)
; Major_Version = 0, Minor_Version = 0 )
Major versions are increased when there is a change to the protocol that will likely break clients written to the previous version. Minor versions are increased when there is new functionality that will not break clients written to the old version
This allows a client written to MQI version’Client_Major_Version.Client_Minor_Version’to check for non-breaking compatibility like this:
Client_Major_Version = MQI_Major_Version and Client_Minor_Version <=
MQI_Minor_Version
Breaking changes (i.e. Major version increments) should be very rare as the goal is to have the broadest adoption possible.
Protocol Version History:
- 0.0 First published version. Had a protocol bug that required messages sent to MQI to count Unicode code points instead of bytes for the message header.
- 1.0 Breaking change: Fixed protocol bug so that it properly accepted byte count instead of Unicode code point count in the message header for messages sent to MQI.