Release History

See the release procedure section for more details on version numbering and how releases are made.

Development Version

  • Python 3.6 or later is now required. Support for versions 2.7, 3.4 and 3.5 has been removed.

  • Revised command line interface.

    The new interface is more straightforward and more flexible than the old one, and makes it easier to catch — and provide helpful messages — in the case of errors. However, it is incompatible; scripts will have to be updated for the new version.

  • More flexible interface “endpoints”.

    Rather than simply specifying a port to listen on, or the combination of a hostname and a port to connect to, connections in Comet are now specified in terms of Twisted endpoints. This makes it possible to run, or connect to, Comet services over any data transport supported by Twisted, rather than just using TCP. For example, Comet can now operate using Unix domain sockets rather than TCP/IP networking.

  • Event receiver and broadcaster can listen on multiple endpoints.

    Comet’s event subscriber has long been able to connect to multiple remote brokers (“subscribe to that one and this one simultaneously”). This capability is now extended to the receiver and broadcaster, which can simultaneously listen for connections on multiple interfaces (e.g., a TCP port and a Unix domain socket).

  • Use the COMET_PLUGINPATH environment to set the plugin search path.

Version 3.1.x

3.1.0 (2019-01-19) [Download]

  • Add support for Windows.

    More accurately, the test suite has been updated so that no tests fail on Windows (tested with Windows 10 Version 1803 running Python 3.7.1). Test coverage is pretty good, so this should be a fair indication that Comet is functional, but I’m not aware of anybody actually deploying Comet on Windows in the wild.

    A few tests are skipped. Most of these refer to spawning external commands. That functionality should be regarded as untested; if it works for you, please let me know.

Version 3.0.x

3.0.0 (2018-05-30) [Download]

  • This is the last major release of Comet to support Python 2.7. Future major (4.0.0) and minor (3.1.0) releases will only run on Python 3. Critical bugfixes to this version of Comet will be provided as patch releases (3.0.x) until the next major release.
  • This release adds support for Python 3.4 and later. Earlier versions of Python 3 are not tested. Note that event databases generated by Comet running on Python 2 might not be compatible with Comet running on Python 3: this depends on the underlying Python installation. For safety, remove old event databases before upgrading; Comet will automatically create new ones as it needs them.
  • Rename --whitelist command line option to --author-whitelist. This limits the IP addresses which are authorized to submit new events to the broker.
  • Introduce the --subscriber-whitelist command line option. This limits the IP addresses which are authorized to subscribe to event feeds from the broker. Thanks to Tim-Oliver Husser. (GitHub #10, GitHub #39, GitHub #41)
  • Log the return code of failed external commands at level WARN. Log standard output and error at level DEBUG.
  • Automatically create the event DB directory if it doesn’t exist. Thanks to Tim Staley for the suggestion. (GitHub #54, GitHub #55)
  • Per the VTP standard, it’s not necessary for subscribers to specify IVOIDs (or, in older terminology, IVORNs). Although there’s no downside protocol-wise to doing so, dropping this requirement makes for a simpler user interface. (GitHub #50)
  • Per the VTP standard, timestamps in transport messages must be UTC. We now check that all timestamps in transport messages generated by Comet have a Z suffix. (But, of course, we are permissive in what we accept, and don’t reject transport messages from the remote end of a connection which don’t do this.) (GitHub #52)
  • Events submitted by authors to the broker running in --receive mode are now required to have IVORNs which validate according to the IVOA Identifiers Version 2.0 specification for IVOIDs. This is somewhat better defined than the earlier (version 1.12) specification for IVORNs. (GitHub #51)
  • Comet now uses the term “IVOID” in preference to “IVORN” throughout its code and documentation. This follows current IVOA usage. Note, though, that the VOEvent standard (version 2.0) refers to the term IVORN, and any user supplied code, such as filters, which interact directly with the contents of VOEvent packets will need to stick to that terminology. (GitHub #51)

Version 2.0.x

2.0.1 (2016-03-17) [Download]
2.0.0 (2016-01-31) [Download]
  • Switch dependency from ipaddr-py to py2-ipaddress. The latter is a backport of the Python 3 functionality, so this helps clear the way for an eventual Python 3 version of Comet.
  • Use the $TMPDIR environment variable, if set, to store the event database. Otherwise, fall back to tmp.
  • Drop support for Python 2.6, following the same change made in Twisted.
  • Improve checking for valid IVORNs.
  • Some extremely old versions of Comet (dating from before the 1.0.0 release) used a different format for the database of seen events. All released versions through 1.2.2 automatically update old-style databases to the new format when run. As of this release, this support for legacy databases has been dropped. It is necessary to use a previous Comet release to update the database format before upgrading to this version.
  • Refactoring the codebase caused a minor API change: logging facilities are now available from the comet.log module. End user code — notably event handling plugins — should replace statements to the effect of from comet.utility import log with import comet.log as log. The convenience aliases log.msg and log.warning have been removed: use log.info and log.warn instead.

Version 1.2.x

1.2.2 (2015-04-20) [Download]
  • Disable XML entity expansion for documents received from the network. This eliminates a class of potential resource exhaustion attacks.
  • Update documentation to request citation of the paper in published work which makes use of Comet.
1.2.1 (2014-09-02) [Download]
  • Correctly check that the (required) --local-ivo command line option was provided (GitHub #35).
1.2.0 (2014-08-26) [Download]
  • When subscribing to a remote broker, we wait for a short period after the initial connection is made before marking it as successful. This means that if the broker rapidly drops the connection (e.g. due to an authentication failure), we retry the connection with an exponential back-off rather than an immediate reconnection (GitHub #29).
  • Timestamps in iamalive messages are marked as being in UTC.
  • authenticate messages which specify XPath filters are schema compliant (GitHub #31).
  • Subscriber refuses to start if an XPath --filter is specified with invalid syntax (GitHub #33).
  • Require that a valid IVOA identifier (IVORN) be supplied by the end user when starting Comet rather than relying on a default.
  • Require that events submitted to the broker by authors have valid IVORNs.

Version 1.1.x

1.1.2 (2014-08-26) [Download]
  • Fix a bug which could result in malformed event IVORNs exhausting the available resources and ultimately rendering Comet unable to process more events (GitHub #34).
1.1.1 (2014-07-08) [Download]
  • Fix a bug which could result in the same VOEvent message being processed multiple times (GitHub #30).
  • Add compatibility with DBM-style databases which do not provide an .items() method.
1.1.0 (2014-02-26) [Download]
  • Improved documentation.
  • Interval between broadcast test events is user configurable, and they may be disabled. See the --broadcast-test-interval option.
  • Test events now include details of the version of Comet used to generate them.
  • Event handler plugin system reworked. Plugins may now take command line options. See the event handler documentation for details. Note that the syntax for invoking the print-event handler has changed (now --print-event rather than --action=print-event).
  • Plugin which writes events received to file (--save-event).

Version 1.0.x

1.0.4 (2013-11-13) [Download]
  • comet-sendvo will choose its Python interpreter based on the environment.
1.0.3 (2013-11-12) [Download]
  • Update MANIFEST.in so that requirements.txt is included in the distribution. This changes nothing on an installed system.
1.0.2 (2013-11-12) [Download]
  • Add a requirements.txt file and specify the installation requirements in setup.py. This makes installation easier, but changes nothing on an installed system.
1.0.1 (2012-08-28) [Download]
  • Fix for badly formed XML Transport element.
1.0.0 (2012-08-27) [Download]
  • Initial public release