Version 0.5 - Jul 24 2008
Initial check-in of the TEA structure and source files.
Version 0.6 - Oct 9 2008
Turn the dbus command into an ensemble. This meant that the location
of the argument specifying the bus type had to move to a different
location. This change will cause scripts that specified the bus type
to break.
Version 0.7 - Dec 20 2008
Introduced some new features suggested by Alexander Galanin:
- Add -async option to dbus register to make event handling much
more flexible.
- Add new return and error subcommands, allowing method_call results
to be generated from anywhere inside or outside the event handler.
- Remove the -signature option in the return value of the event
handler as that can now be handled more elegantly by the return
subcommand.
- Add a -signature option to the signal subcommand.
Other bug fixes:
- A returned dict came out as a list of lists with 2 elements (the
dict key and the dict value) in each sublist.
- Specifying invalid name, interface, or path values would terminate
the application.
Version 0.8 - Feb 12 2009
- Avoid conflicts when using dbus-tcl from slave interpreters
- Add new dbus validate subcommand
- Add option to call subcommand to control autostarting of
applications
- Add support for signature and object path type specifiers in
signatures
- Fix memory leak when a dbus method call returns a single value
- Split up big source files into smaller ones
- Allow compilation on MS windows with msys
- Make the dbus interface a little more high-level: replace the
register subcommand by the new subcommands listen, method, and
monitor.
- Provide a third well-known bus: starter, the bus that auto-started
the application.
- Allow connecting to other than only the well-know busses.
- Add a new "close" subcommands for disconnecting from the bus.
- The connect subcommand now returns a busId to use in other
subcommands.
- Added a new "info name" subcommand to obtain the unique bus name
of the connection.
- Clean up all interpreter related data when an interpreter is
deleted.
Version 1.0 - Feb 16 2010
- Changed strategy: Load the dbus dynamic library at runtime instead
of linking to it at compile time. This allows the package to be
compiled on a machine that does not have dbus installed (notably
the Activestate build machines).
- Variant arguments now pass list or dict values as arrays of
strings or arrays of dicts, instead of strings.
- If the value provided for a variant argument is a 2-element list
where the first element is a valid signature containing exactly
one complete type, the variant value is generated by encoding the
second list element according to the signature specified in the
first list element (FR #2925853).
- Received variant arguments were doubly nested in the argument
list. One nesting level has been removed.
(### POSSIBLE INCOMPATIBILITY!)
- Fixed a few problems with the standard TEA tcl.m4 file
(Patch #2677515)
Version 1.1 - Mar 03 2012
- The strategy of dynamically loading the dbus library at runtime
didn't work out very well. On most systems that didn't have the
dbus devel package installed the dbus library could not be found.
After heated discussions on the Tcl chat the best option turned
out to be to return to the normal method of linking against the
dbus library.
- Use a better method to determine how to declare a 64-bit integer
- Check the arguments handed to the dbus call command before passing
them on to libdbus, as libdbus will panic if they are not in the
right format.
- When a dbus error message is returned, add the dbus error name to
the Tcl errorCode variable.
- The dbus specification defines a byte as an 8-bit *unsigned* integer
- Prevent double error message occurring in some situations
- Provide a way to get the dbus argument type of variant arguments
- The [dbus info name] command was not described in the manual page
Version 2.0 - Aug 17 2013
- Rename the package from dbus-tcl to just dbus.
- Add eavesdrop filter option.
- Do monitoring via a filter, rather than a fallback handler. This
allows also method_return- and error messages to be captured.
- By default return a dbus error when a non-existing method is called.
- New subcommand "unknown", for customizing how non-existing method
calls are handled.
- Using a global variantdetails switch turned out to be clumsy. Now
it is possible to specify if variant details are desired on each
individual invocation of a subcommands where variant details could
be relevant.
- Properly handle 32- and 64-bit unsigned arguments
- Listing all handlers should include path-less (default) handlers
Version 2.1 - Jun 18 2015
- Add support for passing file handles over the dbus.
- Add a new dbus info subcommand to check if a dbus connection supports
file descriptor passing.
- Allow method scripts to decide at runtime if the response will be
given asynchronous or not.
- Do monitoring via a filter, rather than a fallback handler. That way
also method_return- and error messages can be seen.
- Accept server addresses as dbus identifiers for all commands.
- Allow specifying an empty string for the dbus call -handler option,
which will be handled the same as not having the option at all,
i.e.: synchronous operation.
- Properly handle 32- and 64-bit unsigned arguments
- The unknown subcommand should also understand the -details option
- Make sure type signatures and object paths are valid before passing
them to dbus functions, because the library will panic on invalid
values.
- Implement "integer constant is too large" patch provided by Stuart.
- Fix wrong return code from [dbus info capabilities]
Version 2.2 - Jun 16 2018
- Assign symbolic names to dbus connections (possible incompatibility)
- Switch off the default libdbus behavior to terminate the application
when the connection to one of the standard dbusses breaks.
Applications that want this behavior can set up a handler for the
Disconnect signal.
- Accept symbolic values (like true, false, on, off, y, n) for boolean
dbus arguments.
- Make sure initial signals (like NameAcquired) are reported without
delay.
- Populate the errorcode return option in case of an error.
- Switch to watching for dbus messages using a select-based setup
instead of by polling.
- Follow the Tcl appartment threading model by using per thread
(private) DBUS connections. This is achieved by putting the formerly
static "bus" hash table into a thread specific struct as suggested
by chw.
- Attach data to the dbus connection instead of a separate hash table.
- Turn fd into a Tcl_Channel for attaching event handlers to avoid
problems when using threads.
- Duplicate the callback script on definition to prevent issues when
using threads.
- Make Makefile fit for both gmake and BSD make, as suggested by stu.
- Update to the latest TEA.
- Fix crash when trying to send a string containing '\0' over the dbus.
- Fix segfault when libdbus starts the same timeout multiple times.
- Fix memory leaks.
- Clean up the Tcl timer in case the dbus library cancels the timeout.
- Invalid input could lead to the dbus library panicking before the
error could be reported back to the Tcl script.
- Protect callback execution from interp deletion while it is running.