8.0 Release Highlights
Rust Language Support
Analyze and navigate Rust code with the same deep insight and precision you expect across all supported languages. Checkout our Rust example project to see what's possible at Help > Open Example Project > datafrog - Rust
VHDL 2008 (feedback requested)
Understand 8.0 adds support for VHDL 2008. This implementation is actively evolving, and we are seeking feedback from users working with VHDL 2008 to help refine coverage, accuracy, and usability in future updates.
Expanded AI Capabilities
Understand’s AI functionality has been significantly enhanced. With support for multiple models, including local, offline, and third-party options, you can tailor AI to your environment and security needs.
Combined Bookmarks and Favorites
We’ve combined the Bookmarks and Favorites features into a single unified widget. This streamlined experience makes it easier to organize, access, and manage important code locations all in one place. Go to View > Favorites / Bookmarks to see the new widget.
Windows UI Update
Understand for Windows has been updated with a refreshed native Windows appearance and now follows your Windows theme settings, including light and dark mode preferences. With this change dark mode will no longer be supported in Windows 10.
Enhanced Python API
A more powerful and flexible Python API enables faster scripting, deeper integrations, and improved automation across your workflows. Stay up to date on the latest API syntax here.
Perl API TransitionPerl scripting remains fully supported, including running existing scripts and creating new ones. However, the Perl API will no longer receive updates, improvements, or ongoing maintenance, as future enhancements will be focused on the Python API.
New Features
CodeCheck Checks
- Add Ada Checks ADA95_5.3.1, ADA95_5.3.2, ADA95_5.3.3, ADA95_5.2.2, ADA95_5.2.3, ADA95_5.2.4
- Add new MISRA12_20.12: A macro parameter used as an operand to the # or ## operators, which is itself subject to further macro replacement, shall only be used as an operand to these operators
- Add new MISRA12_20.9: All Identifiers used in the controlling expression of #if or #elif preprocessing directives shall be #define'd before evaluation
- Add new MISRA12_20.8: The controlling expression of a #if or #elif preprocessing directive shall evaluate to 0 or 1
- Add new MISRA12_20.7: Expressions resulting from the expansion of macro parameters shall be enclosed in parentheses
- Add new MISRA12_DIR_4.7: If a function returns error information, then that error information shall be tested
All Languages
- Made changes to standardize Rename/Renameby as the relation kind and Alias as the entity kind for renaming declarations. Ada, Basic, C# and Fortran have the entity kind changed to Alias.
Language - Ada
- Add 'Begin' and 'Begin Body' relations.
- Replace dual References fields with unified rename-group field
Language - Basic
- Add implicit calls to constructors in object allocation expressions. Added 'use alloc' references to type Alias entities when used in object allocations.
- Add 'Begin' and 'Begin Body' references.
Language - C#
- Made calls to constructors using a rename be 'call implicit' relations.
- Changed call to constructor to an 'implicit call' instead of a regular 'call'.
- Added 'Begin Body' references.
Language - Fortran
- Change call to an Alias for a subroutine or function to a 'name' reference and added a 'call implicit' to the renamed entity.
Language - Java
- Added 'Begin Body' references.
Language - Web (JavaScript, PHP, TypeScript)
- Changed call to an Alias for a function to a 'use name' reference and added a 'call implicit' to the renamed entity.
- Change entity kind to Alias for JavaScript, TypeScript, and PHP renaming declarations.
- For TypeScript and JavaScript, changed relation kinds for calls through Alias entities from 'Renamecall/Renamecally' to 'Name/Nameby' for the Alias reference, and 'Call Indirect/Callby Indirect' to 'Call Implicit/Callby Implicit' for the reference to the renamed entity.
Language - Python
- Changed call to an Alias for a function to a 'use name' reference and added a 'call implicit' to the renamed entity.
- Change entity kind to Alias for renaming declarations.
Language - VHDL
- Add entity filters for Components, Constants, Contexts, Signals, Types
- Update Information Browser for VHDL 2008
UI
- Replaced the split-workspace checkbox with a new Follow Active Window workspace setting, enabled by default.
- In split workspaces, the active area now follows the window the user is working in, based on subwindow activation and mouse clicks.
- Added a thin accent-colored underline to the selected tab in the active area, making it clearer which split will receive newly opened windows.
- Closing the last editor in a split now automatically collapses the empty area and returns focus to the remaining area.
- The active-area checkbox is now hidden except when the workspace is split and the target area has no tabs, reducing unnecessary UI clutter.
Bug Fixes
Compilers
- For IAR EWRX compiler, add support for __section_begin, __section_end, __section_size and fix large-alignment parse error on Windows
CodeCheck Checks
- Many typos are now fixed.
Graphs
- Graph view api command fix directory separators in project name on Windows to be escaped for Python.
Language - Basic
- Fix bug where generic short class names contained '<>' characters.
- Fix bug where entity kinds 'basic class mustinherit', 'basic class notinheritable', and 'basic class generic' were not generated by the parser. These entities were identified as plain 'basic class' entities.
Language - C#
- Fixed bug where entities that should he identified as 'protected abstract generic class' were identified as 'protected abstract class'. Fixed bug where entities that should be identified as 'unresolved public extern member method' were identified as 'public member method'.
Language - Fortran
- Change 'rename/renameby' relation in type bound procedures to 'bindsto/isboundto'. Changed 'declare/declarein' relation in interfaces to 'bindsto/isboundto'. Fixed bug where some type bound procedures were not identified as 'virtual'.
Language - JavaScript/TypeScript
- Fixed bug where names were treated as case insensitive and resulted in names differing only by case being merged into a single database entity.
Language - PHP
- Fixed a bug where constant declarations sometimes created two entities.
Language - VHDL
- Fix failure to resolve record types
- Fix failure to accept full subprogram bodies in package declarations
Known Issues
- Some macros aren't defined when importing VS 2022 SLN and VCXPROJ
- Print Preview may not function correctly
- CodeCheck may repeatedly request an analysis even when no changes are present. Run Analyze All once to fix.
