[Contents] [Intro] [Reference] [Tutorial] [Questions [New [Index]
Overview -> General Information -> Release Notes for daVinci V2.0.2

Release Notes for daVinci V2.0.2

daVinci V2.0.2 is a minor release where a few extensions related to improving performance and usage of the previous 2.0.1 release have been made based on user feedback. The features of daVinci V2.0.2 are nearly the same as in V2.0 and V2.0.1, with the exception of some small innovations. Important: programmers using daVinci's API should read the notes below before upgrading from V2.0/V2.0.1 to V2.0.2.

What is new in daVinci V2.0.2:

Performance Improvements
Some optimizations are implemented in daVinci V2.0.2 to speed up visualization of large graphs. The benefit is that large graphs are displayed substantially faster after loading. For example, very large graphs with many thousands of edges are visualized up to three times faster with the new release.

Improved backward Compatibility
The application programmer interface (API) of daVinci V2.0.2 has been modified to increase compatibility with applications written for the former daVinci V1.x. API. Read the upgrade notes for API programmers below for details.

Support for Attributes of Self-Edges
In the new release, the attributes of self-edges are considered in the visualization of the graph. For example, a self-edge with attribute a("EDGECOLOR","red") is now drawn with a red line, as expected.

Elimination of empty Graph Levels
By using menu Layout/Compact All, empty levels (that do not contain any nodes) at the top and bottom of a graph are now eliminated. Such empty graph levels may occur after using vertical fine-tuning. For example, a graph visualization gets an empty level by moving an arbitrary node of the topmost level up and down again with the mouse.

Two new API Commands
The API of daVinci V2.0.2 is extended by two new commands to set some user interface options:

Extensions to the Graph Editor
After connecting the graph editor application to daVinci's API, graphs can now be saved both in status file format and term representation format with menu File/Save As.... Note: when using the graph editor, menu File/Save now saves the current graph in status file format. The graph editor delivered with daVinci V2.0 and V2.0.1 has saved in term representation format when using this menu. This was inconsistent with the usual behaviour of daVinci (i.e. without connecting the editor), where the graph is saved as status file.

Another new feature of the graph editor allows the user to delete more than one selected node in one step by using the editors menu Edit/Node/Delete Node.

New debugging Option -verify
daVinci V2.0.2 has a new commandline option -verify for debugging. By using this option, daVinci verifies internal data structures after updating a graph with API command graph(update(...)). You should start daVinci with this option if you get strange effects or bugs after graph updates. The verification costs some time, so usually the function is switched off for performance reasons and must be explicitly switched on by the user.
Bug fixes
In daVinci V2.0.2, the bugs 12-V2.0 till 24-V2.0 of the previous V2.0.1 release are fixed.
Note: A serious bug was found in daVinci V2.0.2 after the code freeze. This bug (26-V2.0, see bugreport) may hang the user interface after closing the first (initial) graph window in multi-view mode. In this situation, all mouse events are ignored. To get control back, press Alt-f in the freezed daVinci window. This will pop up the file menu, you can close it without performing any file operation. Afterwards, mouse operations are enabled again as usual.

Upgrade Notes for API Programmers

daVinci users who have written applications that are communicating with the
API should read the following notes before upgrading from daVinci V2.0/V2.0.1 to V2.0.2.
Initial Answer ok is now sent in any Case
Basically, there are two ways to connect an application program with daVinci's API. Either the application process connects daVinci by starting it with commandline option -pipe or the application is connected by daVinci using option -startappl resp. menu File/Connect Application.... In the previous releases daVinci V2.0 and V2.0.1, an initial answer ok was sent by the API for synchronization only in the first case (when the application process starts daVinci with -pipe), but not in the second case. Unfortunately, the old daVinci V1.x had a different policy. Here, the initial ok was sent in both cases, so applications written for the V1.x API may hang in V2.0 and V2.0.1 if they are connected by daVinci and wait for the initial ok from the API.

In the new release V2.0.2, the ok is now sent in both cases again to guarantee compatibility with existing applications. So API programmers must expect the ok as the first answer from the API in any case.

Nodes are no longer deselected explicitly with a new Edge Selection
Basically, nodes and edges cannot be selected at the same time in daVinci. In the previous releases daVinci V2.0 and V2.0.1, nodes were explicitly deselected with a new edge selection. For example, if a node is currently selected and the user clicks on an edge with identifier "E", then in V2.0 and V2.0.1, the API sends the following answers to the application:
  1. node_selections_labels([])
  2. edge_selection_label("E")
So first the previously selected node is deselected (1.) and afterwards the new edge is selected (2.). This is inconsistent with node selection when an edge is selected. Here, the edge is not explicitly deselected. For example, if an edge is currently selected and the user clicks on a node with identifier "N", then in V2.0 and V2.0.1, the API sends only the following answer:
  1. node_selections_labels(["N"])

To be consistent, daVinci V2.0.2 does not deselect the currently selected nodes when a new edge is selected. This means, answer node_selections_labels([]) is no longer sent in the first example shown above. The new semantic of API answer node_selections_labels([]) (with an empty list as argument) is that neither a node nor an edge is currently selected, i.e. everything is always deselected in this situation.

Reminder: Communication with daVinci API is (and was) asynchronous
Some daVinci users were confused about the communication behaviour of the API. The daVinci developers would like to clarify that API communication between daVinci and an application is asynchronous, so both processes can send messages at any time. The absence of hand-shaking in the API protocol has the following consequence: generally, each API command is directly confirmed with an answer (mostly ok). After receiving an API command, daVinci does not send any other answers (e.g. selection events) until the command is completely executed and confirmed with the corresponding answer.

But this does not mean that for the application, the confirmation answer will directly follow after sending a command to the API. Answers for event notification may occur at any time, even if a command is not yet confirmed! The reason is that the event may have happened in the time interval after a command is send by the application, but before the command is received by daVinci. For daVinci, the event answer is then sent to the application before receiving the next command (which blocks sending of event answers). But for the application, the event answer is received from daVinci before getting the confirmation answer for the command.

Corollary: your daVinci application should expect to receive event answers at any time, even if a command, sent to the API, is not yet confirmed with the corresponding answer.


daVinci V2.0.3 Online Documentation - Page update: Nov 20, 1996