Image attribution

Gaphor 2.12 is out

By Arjan Molenaar on September 26, 2022

The last update was in January, when Gaphor 2.8 was released. However, we’ve been working hard to improve all aspects of Gaphor.

The biggest highlight by far is the move to GTK4. At this point we support GTK4 only for Flatpak on Linux, but as support for Windows and macOS improves, we will also move those over. The biggest advantage is that GTK4 is a lot faster.

But there’s more&ellipsis;

Modeling improvements

A lot of new features have been added to the models:

  • Activity diagrams now support pins, and have separate object and control flow relations.
  • State machines have been improved by adding region support, along with support for all types of pseudo elements.
  • Stereotypes can now be inherited, for those of you that make heavy use of stereotypes.
  • Attributes in classes and the like now support generic and union syntax, making them much more versatile.

Improved state machines

One of the big improvements is an application wide approach to grouping (containment) of elements. This means that you can group elements in the tree view by dragging one on the other. You can also perform the grouping visually in a diagram. The result is the same.

One of the more exotic improvements is that it’s now possible to associate activities with classifiers. This is useful if you want to express where activities will take place (e.g. which component).

Elements can also now be added to a diagram by double-clicking them. There’s no need to drag elements on the diagram anymore. Now everything in Gaphor can be accomplished without relying on drag-and-drop. You can even run Gaphor on a Chromebook!

Extensive testing

In gaphor 2.9 we introduced Hypothesis, a property based test framework. This helped us tremendously to improve the stability of Gaphor. Quite a few (obscure) issues were exposed. Those have been fixed over the past months.

We’ve also implemented a self-test feature. This allows us to test the installation of Gaphor, and we can check if the application will actually run on a clean system. This gives us a lot of confidence the application will actually work, and we do not have to check that by hand on all supported platforms.