- The typing in the text area can be undone and redone.
- Messages can consist of several lines separated by a literal
- Atomic actions can be modelled, these are actions that take
place inside a method, apart from invokations of other methods.
- Dynamic loading of plugins.
- SVG plugin available (see download page).
- Due to a bug, it may have been possible in former versions to
declare messages being sent by objects that are not active. This
is prohibited now.
18.104.22.168 - A bug was fixed that made it impossible
for actors to send a message when there was a synchronous activity
22.214.171.124 - As suggested by Konrad Anton, the name
of an sd file to be loaded can be passed as a single argument to
the application. Also, it is again possible to convert sd files
into png files on the command line.
126.96.36.199 - A bug was fixed that caused comments on
messages that were sent from a sub lifeline to be laid out wrong.
Instead of allocating an image and incrementally drawing the
whole of the diagram on it, this version first creates a collection of
diagram elements, calculates their positions and draws only the
elements that are located within certain bounds, as requested by the
AWT. This minimizes memory usage and speeds up the drawing process.
2.0.1 - The diagram is large enough to include
all comment boxes in their full dimensions. Invisible objects
remain entirely invisible when no new message occurs. Arrows of
self answers are dashed, not dotted. Some examples are included.
Messages without answers can be properly commented. The set of
active levels of an object is described correctly when a level
that is too high is specified.
Diagrams can be edited in parallel thanks to tabs. Message
arrows can be clicked, then the cursor will move to the line in the
text area where the message to which the arrow corresponds is
- When there is an error message and the label it is in is
clicked, the cursor will move to the line where the error
- A bug was fixed that implied that at least two key strokes
were necessary in order to make the tab-close-button turn red.
- A bug was fixed that made it possible for an update thread
to be started even though the text area was empty. This could
lead to a state where the association between diagram elements
and their source code line was lost.
- A bug was fixed that caused the "upper margin" value to
only affect the positions of the lifeline heads but not of the
Some changes about comments. They look different and they
enclose blocks of messages.
The program can be started with a diagram server running. There
is a small Perl script (
in the sd-client package) that can connect to the server by means
of a TCP socket and that can be used as a reasonably fast command line
tool. It is capable of saving images in SVG format, if the plugin is
- Menu mnemonics and accelerator keys added.
- Lifeline mnemonics added (allow to identify a lifeline without
specifying a thread or level number).
- For objects that are used by a single thread only no thread
number needs to be specified.
asynchronous messages (including an example) added.
- Example illustrating the use of level numbers and mnemonics
Some layout bugs fixed, including the
obscured arrow head bug.
Active objects introduced. A bug was fixed that made it
impossible to associate a mnemonic to a lifeline if a new thread
was spawned and the corresponding object was already active.
A bug was fixed that made two threads be spawned when a
message was sent from an actor to an active object.
A bug was fixed that could make a lifeline overlap its
caller lifeline, if the former was activated by a spawning
self-message. Primitive messages can be empty, which is useful for
creating space between messages.
There are no longer answers to spawning self-messages. Empty
answers from objects to actors can be disabled.
A bug was fixed that producted endless but harmless
NullPointerExceptions when a diagram text was entered from
Fullscreen mode. Layout
- FreeHEP instead of Batik is used for exporting diagrams, so
there are more output formats available (pdf, ps, swf, gif, ...).
- Processes aka secondary actors introduced.
- Lifeline labels introduced.
- Diagrams can be scaled.
- (Parts of) the diagram source text can be piped through a filter.
- When multithreading is enabled, messages can return instantly
(otherwise the callee stays active as long as the thread is idle).
An instantly returning message is suffixed by an
diagram server added.
2.6.2 - 2.6.5
After discovering a minor bug related to thread creation and
numbering, I decided to rewrite an elementary class
(MessageProcessor). Unfortunately, from version 2.6.2 to
2.6.4, this class featured new bugs. 2.6.4 was even mistakenly
built from the not yet stable HEAD sources. It was quickly
replaced by 2.6.5.
- Fonts and encoding configuration added.
- List of recent files added.
- On-diagram notes added.
- Statically spawned threads: objects start with their own thread
when they are declared with the t flag set.
- Nicer fragments with sections.
- Colons and periods can be escaped.
- Associations between notes and answers. For instance, (1,2)
foo:answer=bar.message associates the
"message" message with note 1 and the
"answer" answer with note 2.
- The next free note number appears in the status bar.
- A message text is always placed between two lifelines (it
cannot overlap any lifeline).
- Constructors with a multiline message do no longer break the
- All font sizes are configurable.
- Note links (allow to switch to another tab on clicking a note).
A bug was fixed that prevented sub-lifelines from vanishing
in some situations (when the sub-lifeline belonged to another
thread than both its neighbours)
- Printing through an external program.
- Diagram title and description.
- Automatic destruction of objects (with 'x' flag set).
A bug was fixed that caused a fatal NullPointerException
when multithreading was disabled and the first message was sent by