DBus binding for Tcl

Artifact [7c900656c8]
Login

Artifact 7c900656c885c5f2fcf38a91b6da587dd87f88861e6e00bd8cc5dac20b2fe597:


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.