The previous version, 3.9.0, laid the foundation for using Python language to automate and repeat design tasks in Kactus2.
In this version we wanted to improve those mechanisms before adding more content to the Python API. However, we did add Python access to one important element.
One of the requested features was the option to use the API as any other Python module, without starting Kactus2. This required us to completely decouple the IP-XACT file management from the application core and we created a new shared library for the core functions and utilities. While this adds an extra step in the compilation process, the dependencies, especially for plugins, becomes easier to manage. One negative side effect of this is, that we had to remove the watches for XML files and can no longer detect file modifications outside of Kactus2. The implementation we had relied on having Kactus2 running when the IP-XACT library is loaded, which is not the case when using the Python API independently.
The interactive Python console is fine on the command line mode, but in the GUI the use felt awkward. Scrolling the command history to fix that wrong one character or indentation just is not convenient, so we changed the console to a proper text editor while keeping the functions to run the scripts in the GUI. We don’t expect this to replace everyone’s favorite code editor, but believe it should be good enough for viewing the scripts and making small changes without having to switch between applications. Look for more editor improvements in future releases.
Although the main focus of this release is in the mechanisms required by the Python API, we added one element in the API: Bus interfaces. Creating bus interfaces and mapping physical ports for them is one of the most important aspects of IP-XACT, so we wanted to include that in the API as soon as possible. Consequently, we ended up re-evaluating the way port maps are created and visualized in the GUI. The tree structure for logical signals is good for showing which signals are required, but does not communicate the actual port maps very well and finding invalid port maps was difficult. Therefore we changed the tree structure back to a table format somewhat similar to what it was years ago. This also improved the performance as constructing the tree required reading the port map data multiple times.
Moving forward, we plan to switch to Qt6 and also update the used Python version in the next version of Kactus2.