QM Changelog

What's new in QM 5.3.0

Sep 13, 2023
  • Code Generation:
  • The C code generator now generates C++ style comments in C. This matches the transition to C99 and MISRA-C:2012/2023, which accepts C++ style comments in C.
  • The C code generator applies the macros Q_HSM_UPCAST() and Q_MSM_UPCAST() in the transitions to history for QHsm and QMsm state machines, respectively.
  • The internal qpc and qpcpp models have been updated to reflect the new QP 7.3.0 class hierarchy with the QAsm base class.
  • Because of the dependencies on the new QP features and structure, the QM code generator now requires minimum QP version of 7.3.0.
  • Feature Requests:
  • #203 QM: Add conditional compilation support for submachines

New in QM 5.2.5 (Jan 19, 2023)

  • Fixed Bugs:
  • #330 QM: operation does not generate correct output
  • #329 Dark theme not working

New in QM 5.2.4 (Jan 5, 2023)

  • Code Generation:
  • This release removes code generation for the QP-nano framework, which has been discontinued.
  • The generated code requires QP/C/C++ 7.0.0 or newer.
  • Comments for all conditionally declared attributes are now included inside the conditional compilation (after #if).
  • Fixed Bugs:
  • #316 Using History with Submachines does not work
  • Note: The full fix of bug#316 requires QP/C/C++ 7.2.0
  • #314 QM 5.2.1 minor formatting issues
  • #327 QActive_recall documentation incorrect in QM

New in QM 5.2.3 (Nov 16, 2022)

  • Code Generation:
  • This release changes the licensing policy with respect to QMsm-style state machines. Starting with this release, commercial license certificate is no longer required to generate code for QMsm-style state machines.
  • Fixed Bugs:
  • #318 QM incorrectly generates code for external files

New in QM 5.2.2 (Sep 22, 2022)

  • Code Generation:
  • extended the free operation model item to also support function templates in C++
  • removed spurious spaces generated in operations after the parameter list.

New in QM 5.2.1 (Aug 1, 2022)

  • Code Generation:
  • corrected handling of "namespaces" in C

New in QM 5.2.0 (Aug 1, 2022)

  • Code Generation:
  • added new "visibility==type" for free attributes and class attributes. This allows models to specify types (e.g., typedef ... in C and using xxx=... in C++)
  • added the $declare1 code generation directive for generating of non-recursive declarations (useful for packages)
  • removed the legacy "me->" pointer state machine implementation for C++
  • the comments are generated from documentation after the model link comments
  • the declaration comment is no longer used in the definition in case a definition comment is missing
  • added empty line right before every divider comment
  • operation parameters are generated one per line when the number of parameters is greater than 2. This is to avoid extra long lines exceeding the line limit of 80 characters.
  • corrected handling of nested namespaces
  • modified the top-level file comment and the licensing language.
  • Fixed Bugs:
  • #310 Incorrect code generated by QM.
  • User Interface:
  • Relaxed the order of items inside packages. Now, the items of different types (e.g., class, free-attribute, free-operation, etc.) can be rearranged in any order suitable for code generation.
  • Added support for the "block-indent" (TAB) and "block-unindent" (Shift-TAB) operations in the documentation editor (in property sheets).
  • The statechart property sheet no longer has "use me->" checkbox.
  • The C++ state machine implementation with the "me-> pointer" is considered now obsolete and has been removed from QM.
  • Documentation:
  • Updated the documentation for the introduced/changed elements
  • Updated styling of the documentation to the new "QL-awesome" look.

New in QM 5.1.4 (Apr 23, 2022)

  • Fixed Bugs:
  • bug#303 QM generates code with trailing whitespace
  • bug#307 QM reports incorrect location of code generation errors
  • bug#308 QM doesn't print .c/​.h files on Windows

New in QM 5.1.3 (Apr 23, 2022)

  • Corrections in Property Sheets:
  • This release corrects the property sheets for attributes (both class and free attributes), to remove "pseudocode" fields for "initializer". Similarly, the property sheets for operations have been corrected to remove the "pseudocode" for "operation".
  • Code Generation:
  • Additionally, this release adds code generation for "initializer" of static class attributes.
  • Preparation for Qt 6:
  • The internal code structure has been scrutinized for future migration to the new Qt6. Specifically some deprecated APIs have been replaced with the new, recommended versions.

New in QM 5.1.2 (Jun 4, 2021)

  • Corrections in Property Sheets:
  • This release corrects the property sheets for attributes (both class and free attributes), to remove "pseudocode" fields for "initializer". Similarly, the property sheets for operations have been corrected to remove the "pseudocode" for "operation".
  • Code Generation:
  • Additionally, this release adds code generation for "initializer" of static class attributes.
  • Transition to Qt 6:
  • The internal code structure has been scrutinized for future migration to the new Qt6. Specifically some deprecated APIs have been replaced with the new, recommended versions.

New in QM 5.1.1 (Apr 12, 2021)

  • Improved Out-of-Box Experience:
  • This release improves the "out-of-box experience" for first-time QM users by openining the New Model Dialog Box when there are no "Recent Models" in the File Menu. This allows the first-time users to immediately create and work with a QM model based on the provided examples. The provided examples have been improved and now come with session files, so that a chosen QM model opens up immediately showing the diagrams and files. Also, the Manage Tools Dialog Box is populated, so that the generated code from the models can be immediately built directly from QM.
  • Implemented Feature Requests:
  • feature#183 "Add documentation section in the property sheet for top-most initial transtion"
  • Additional Enhancements:
  • Additionally, this release improves the vertical layout of property sheets with the collapsible "documentation" section. Also, some problems in registeing and changing code-generation licenses have been fixed.

New in QM 5.1.0 (Dec 7, 2020)

  • Improved Out-of-Box Experience:
  • This release improves the "out-of-box experience" for first-time QM users by openining the New Model Dialog Box when there are no "Recent Models" in the File Menu. This allows the first-time users to immediately create and work with a QM model based on the provided examples. The provided examples have been improved and now come with session files, so that a chosen QM model opens up immediately showing the diagrams and files. Also, the Manage Tools Dialog Box is populated, so that the generated code from the models can be immediately built directly from QM.
  • Implemented Feature Requests:
  • feature#183 "Add documentation section in the property sheet for top-most initial transtion"
  • Additional Enhancements:
  • Additionally, this release improves the vertical layout of property sheets with the collapsible "documentation" section. Also, some problems in registeing and changing code-generation licenses have been fixed.

New in QM 5.0.4 (Sep 18, 2020)

  • Fixed bugs:
  • bug#281 "Scrollbars in QM disappear"

New in QM 5.0.3 (Aug 31, 2020)

  • This release changes the auto-generated dictionaries in QP/C++. Specifically, the function dictionaries for state handlers in C++ now contain the class-name prefix (e.g., Philo::thinking). This is to make the states unique within the application, which in turn helps in creating monitoring solutions with QView.
  • Fixed bugs:
  • bug#275 "Export diagram not working Ubuntu 20.04 QM 5.0.2"

New in QM 5.0.2 (Jul 19, 2020)

  • Fixed bugs:
  • bug#275 "QM 5.0.1 trailing spaces in generated comments in C++"
  • bug#274 "QM 5.0.1 assertion failed in propshhet:366"

New in QM 5.0.1 (Apr 23, 2020)

  • Fixed bugs:
  • bug#265 "QM External File generation bug"
  • Implemented feature requests:
  • feature#175 "Class Attribute Initializer"

New in QM 5.0.0 (Mar 20, 2020)

  • Fixed bug#257 QM Code Editor has unused space on > 1080p resolution monitors

New in QM 4.6.0 (Jan 6, 2020)

  • Fixed bugs:
  • bug#251 "Assertion failed in QM version 4.5.1, module connglyph"
  • bug#253 "Model-links comments in generated code sometimes don't work"
  • Implemented feature requests:
  • feature#170 "Model-link comments that don't cause 'dead code' PRQA warnings" Added "no dead code" character ('.') to generated comments (e.g., //.${...})
  • feature#171 "A way to provide 'explicit' specifier for C++ class constructor and operators"
  • feature#172 "Generate top-level file comment without '//' to comply with MISRA 2012 Rule 3.1"

New in QM 4.5.1 (May 8, 2019)

  • Fixed bug#239 Assertion failed in QM version 4.3.1, module statediagramscene:486
  • Fixed bug#240 Assertion failed in QM version 4.5.0, module statediagramscene:442

New in QM 4.5.0 (Mar 29, 2019)

  • This QM release matches the new state machine implementation style in QP/C++. Specifically, the models based on QP/C++ now can choose to generate code with the no me-> pointer style, where state-handler functions are true member functions of the state machine class. Because of this, they can conveniently and naturally access all members of their class via the implicit this pointer, and without the need to use the "me->" pointer.
  • The new feature is available for both QHsm-style and QMsm-style implementation strategies and is selectable via the Statechart Property Sheet

New in QM 4.4.0 (Mar 29, 2019)

  • Fixed bugs#233 Generated Source Files marked as external duplicates the QP version check
  • Implemented feature#161 Easier way to show state diagram from Model Explorer
  • Added SVG diagram export (Scalale Vector Graphics format)
  • Added Dark Style to the UI
  • Improved consistency of custom styling via the QM Style Sheet
  • Added custom properties to Code-Edit Section of the QM style sheet to customize syntax highlighers
  • Improved Python syntax highlighting by styling the QUTest script commands.

New in QM 4.3.1 (Mar 29, 2019)

  • Added support for Python files in QM (recognized file type with syntax coloring).
  • Fixed bugs:
  • bug#221 QM 4.3/Linux - Permissions of generated (external) files
  • bug#222 Compilation error in QM generated code for QP/C++ in Spy configuration

New in QM 4.3.0 (Jul 16, 2018)

  • This release introduces several improvements to code generation by implementing the following feature requests:
  • feature#141 Support default function parameters for QM/qpcpp
  • feature#142 Allow initialization of free attributes in the definition
  • Additionally, this release fixes the following bug:
  • bug#216 Generated code for QP version check violates MISRA-C Rule 10.1

New in QM 4.2.1 (Jun 5, 2018)

  • This release partially implements the following feature:
  • feature#117 "Automaticly generate QS_FUN and QS_SIG dictionary calls"
  • "Partially" means that the QS_FUN_DICTIONARY() macros are generated for a given state machine in the top-most initial transition (if selected in the Statechart property sheet). The QS_SIG_DICTIONARY() macros are not generated at this point, because it might be repetitious (for signals shared with other state machines).
  • Additionally, this release improves the output from running external tools in that the output sent to stderr is shown in magenta to distinguish it from the output to stdout, which is shown in black.

New in QM 4.2.0 (May 11, 2018)

  • This release adds an additional check in code generators for QP/C (qpc) and QP/C++ (qpcpp) for eXit-Point Segments. Specifically, any choice segments attached to an eXit-Point Segment must be complementary, meaning that you must use the else guard to complement any other choices attached to the end of an eXit-Point Segment. A non-complementary set of choice segments results in the code generation ERROR C113 "exit-point with non-complementary guards".
  • This means that qm called from command-line will return non-zero code when code generation fails (-c option) or when diagram generation fails (-d option).
  • This release removes the extra new-lines from the log output for external tools. Specifically, the output for long-running tools (e.g., avrdude), which update the log frequently to report progress no longer contains superfluous new-lines.
  • Fixes several issues with submachines, especially when used in the Spy build configuration. Specifically, the following bugs have been fixed:
  • bug#213 "QP/C/C++ applications with submachines occasionally crash in Spy build configuration"
  • bug#212 "QM 4.1.x crashes when closing a model with submachines"
  • bug#211 "QM 4.1.x C++ code generated for a submachine does not compile"
  • bug#210 "QM 4.1.x $define1 directive generates submachines recursively"
  • bug#209 "QM 4.1.x generates comments with a typo 'intitial' instead of 'initial'"
  • bug#208 "QM 4.1.x QP/C code causes assignment from incompatible pointer type warnings in submachines"
  • Attention:
  • The fix for bug#213 required changes in the QP/C/C++ code. Therefore, this version of QM requires QP/C/C++ 6.3.0 or newer.
  • This release also implements the feature request:
  • feature#138 "Return non-zero exit codes when errors occure with generating files"

New in QM 4.1.3 (May 6, 2018)

  • This release adds a check in code generators for QP/C (qpc) and QP/C++ (qpcpp) regarding eXit-Point Segments. Specifically, any choice segments attached to an eXit-Point Segment must be complementary, meaning that you must use the else guard to complement any other choices attached to the end of an eXit-Point Segment. A non-complementary set of choice segments results in the code generation ERROR C113 "exit-point with non-complementary guards".
  • Additionally, this release removes the extra new-lines from the log output for external tools. Specifically, the output for long-running tools (e.g., avrdude), which update the log frequently to report progress no longer contains superfluous new-lines.

New in QM 4.1.2 (Mar 7, 2018)

  • This release implements the feature request: feature#104 "Enable command line option in qm to export state machine diagrams".
  • Specifically, the QM application has been re-architectured to support the console-mode, in which it does not launch the GUI but instead it processes the command-line arguments, prints the results to the console and exits.

New in QM 4.1.1 (Jan 12, 2018)

  • Fixes the following bugs:
  • bug#194 "Code generation for C++ misses new line after the end of namespace"
  • bug#195 "Syntax highlighting missing for the new code-generation directives"
  • bug#196 "Assertion for classes not descending from a state machine"
  • bug#197 "Generated file header contains absolute local file path instead of relative file path"

New in QM 4.1.0a (Nov 23, 2017)

  • This release has two main goals. First, it implements the feature request:
  • feature#135 "Allow external files that can be edited outside QM"
  • This frequently requested feature allows developers to designate files as external files and to edit such files with an editor/IDE of choice. Still such external files participate in the code generation process.
  • Second, this release fixes bugs still found in the sub-machine support. Specifically, this release fixes bugs in transitions out of eXit-Point Segments (to Entry-Points and to History):
  • bug#190 "Exit-Point segment targeting History doesn't work
  • bug#189 "Exit-Point segment targeting an Entry-Point to sub-machine state doesn't work"
  • Additionally, this release disallows attaching History connectors to sub-states nested within a sub-machine. (Sub-machines support History only on the boundary, but not inside sub-machines). This is a resolution of the bug#187:
  • bug#187 "History not working in sub-state machines"
  • Finally, version 4.1.0a fixes the bug#192:
  • bug#192 "Crash in module codec:286, QM version 4.1.0"
  • Attention:
  • This QM release 4.1.0 requires QP/C/C++/nano version 6.0.1 or newer. This is because QM 4.1.0 assumes the modified QMsm-state machine implementation strategy in order to properly handle the various transitions out of eXit-Points in sub-machine states

New in QM 3.3.0 (Oct 9, 2015)

  • This QM release updates the internal models of the QP frameworks to match the recent QP 5.4.x
  • Specific changes include:
  • Updated class hierarchy such that QMActive is the superclass of QActive. The QFsm class and state machine implementation strategy is now deprecated. Any existing models that use QFsm will still load correctly, but the code generated witll be in QHsm-style.
  • Implemented the following feature requests:
  • #93 "Display full path of recent projects in File menu". QM 3.3.0 adds the "Recent Model" sub-menu to the File menu. This "Recent Models" sub-menu contains a list of up to 16 most recently used models with full paths. Also, the "Recent Models" list can be cleared by the "Clear Menu" action.
  • #101 "extend Conditional Compilation to class attributes". In fact, QM 3.3.0 recognizes conditional compilation for attributes (class attributes and free attributes) as well as for operations (class operations and free operations).

New in QM 1.1.08 (Aug 29, 2011)

  • This release is the first one available for all three platforms:
  • Windows, Linux, and Mac OS X.
  • The directory structure of the QM installation has been modified
  • to accomodate Mac OS X and to make it common for all platforms.
  • Changed the behavior of the "Generate Code" command to
  • save the model to disk before generating code.
  • Changed the keys for panning and zooming of diagrams with the
  • mouse to make it consistent with popular programs such as GIMP
  • or Google Maps (bug #3381122). Now SHIFT activates panning and
  • horizontal scrolling with the mouse wheel. When SHIFT is
  • depressed, rotating the mouse wheel towards the back of the
  • mouse will scroll horizontally right (i.e., the horizontal
  • scroll bar will move right). This is exactly as in GIMP.
  • CTRL activates selecting and zooming with the mouse wheel.
  • When CTRL is depressed, rotating the mouse wheel towards the
  • back of the mouse will zoom out.
  • Fixed the problem with C-style comments at the end of a file
  • (bug #3355437).
  • Fixed the problem with print crashing QM on Linux (bug #3325130).
  • Added drag-and-drop of model elements inside the Model Explorer.
  • Now you can drag packages, classes, attributes, operations,
  • and paramters as well as directories and files (feature request
  • #3116849). The drag-and drop feature verifies the types of the
  • elements and allows only the meaningful operations. For example,
  • dragging a class operation to another class, but not allowing
  • dragging a state to a directory.
  • Added drag-and-drop of model elements from the Model Explorer
  • to files. This allows quick generation of code directives
  • without manually typing the element paths.
  • Added drag-and-drop of model files from the File Explorer
  • (File Finder on the Mac) to the QM manin window, to open
  • the model file.
  • Added "Close Model" command to the File menu.