Understand 8.0 build notes
Build 1265
8.0, Oct 9, 2026New Features
Architectures
- Added an automatic architecture for dependency graph layers.
Plugins
- Added a new Shared Tasks Lock Order graph that identifies and highlights potential deadlocks caused by tasks acquiring locks in different orders.
Metrics
- Added a metric for Sonargraph's Maintainability Level.
CodeCheck Checks
- Added new check ADA95_7.2.3: Accuracy Analysis.
- Added new check ADA95_7.2.2: Accuracy Model.
- Added new check ADA95_7.2.1: Predefined Numeric Types.
- Added new check MISRA23_4.1.2: Deprecated features should not be used.
- Added new check MISRA23_0.3.2: A function call shall not violate the function's preconditions.
- Added new check MISRA23_0.1.1: A value should not be unnecessarily written to a local object.
- Added new check ADA95_7.1.9: Arbitrary Order Dependencies.
- Added new check ADA95_7.1.8: Dependence on Parameter Passing Mechanism.
- Added new check MISRA23_18.5.1: A noexcept function should not attempt to propagate an exception to the calling function.
- Added new check MISRA23_19.1.3: All identifiers used in the controlling expression of #if or #elif preprocessing directives shall be defined prior to evaluation.
- Added new check ADA95_7.1.7: Specialized Needs Annexes.
- Added new check MISRA23_8.18.2: The result of an assignment operator should not be used.
- Added new check ADA95_7.1.6: Implementation-Added Features.
- Added new check ADA95_7.1.5: Encapsulating Implementation Dependencies.
- Added new check ADA95_7.1.4: Main Subprogram.
- Added new check ADA95_7.1.3: Comments.
- Added new check ADA95_7.1.2: Global Assumptions.
- Added new check ADA95_7.1.1: Obsolescent Features.
Installer
- Added a new offline ZIP package for Windows.
- Offline installation packages can now be created without requiring Understand to be installed.
CodeCheck
- Enabled the clang-tidy include-cleaner check.
VS Code Extension
- Added the understand.hover setting to customize the information displayed when hovering over code in VS Code.
AI
- Added a script for configuring the local AI server to run as a service.
- Added an API key field for LM Studio.
Graphs
- Added the ability to save a graph legend, from the legend's context menu or with the save_legend parameter of the Python API draw command. Legend arrow tails also point in the right direction, and the crow, tee, vee and box arrow images were updated.
Language - Fortran
- Added a new relation kind, 'declare private', for private access statements.
Language - Web
- For TypeScript/JavaScript, added support for the 'import defer' statement.
Improvements
VS Code
- CodeCheck violations with Informational severity are now displayed in the VS Code Problems panel.
- VS Code now displays CodeCheck violations from background analysis only.
- Added a warning when an excluded path is already covered by an existing exclusion.
- Left protected members out of completion from outside their class.
- Showed the configured severity in the Problems panel.
- Gave the VS Code Info view the API Info report's rows.
- Stopped offering an inline ignore a line already carries.
- Showed an annotation's time as well as its date.
CodeCheck
- CodeCheck baseline changes made in another session are now reflected without reopening the project.
- Synced inspections are now updated automatically when changes are made in another session.
- Restricted inspection syncing to imported inspections.
- CodeCheck violations now retain their associated entity information when results are saved and reopened.
AI
- Updated the bundled Granite AI model to improve chat response reliability.
- Adjusted the reasoning settings for gpt-oss-20b to improve AI Overview completion reliability.
- Updated the Gemma 4 E4B model to use a new quantization-aware version, improving response speed and quality.
- Improved how the local AI service manages temporary files on Windows.
Documentation
- Updated the Gemma4-E4B and Gemma4-12B notes in Choose a model for the quantization-aware build.
- Documented what Understand Local does when an AI service already uses its port.
- Explained how to run the AI server as a service with ullama-service.py.
- Documented which of the six deviation reports needs an inspection.
Japanese
- Updated the Japanese translations in Understand, for AI, and in the documentation.
Licensing
- Fixed the welcome page message displayed when opening an open-source project.
Installer
- The Windows installer now requests administrator privileges only after the installation location has been selected.
Graphs
- Improved Graphviz compatibility by correcting how gradient angles and color lists are handled in graph layouts.
Bug Fixes
Language - Web
- For TypeScript/JavaScript, fixed a bug where an import of a .mjs file from a .ts file with the same prefix in the same directory resulted in an 'Unable to import file' warning.
- Fixed an issue that prevented certain JavaScript imports from being processed correctly.
- For TypeScript/JavaScript, fixed several bugs where valid code triggered syntax errors.
Language - Fortran
- Fixed a bug where an access statement that names a procedure declared only in an interface block didn't bind to that procedure and instead created a local variable.
Language - C/C++ (Strict)
- Fixed an issue that caused unnamed C/C++ parameters to be classified incorrectly.
MCP
- Fixed an issue where MCP could not locate files using forward-slash paths on Windows.
- Fixed agent sessions timing out at startup when Understand is closed.
VS Code
- Newly added CodeCheck checks are now included in subsequent VS Code analyses.
- Fixed an issue where hovering over Python identifiers at the beginning of indented lines failed to display information.
AI
- Fixed an issue where the local AI server failed to fall back to CPU processing after a graphics driver crash.
- Fixed an issue where Understand Local could shut down an AI server started by another process.
- Fixed an issue where AI providers that do not require an API key could incorrectly trigger API key validation.
- Fixed an issue where Understand incorrectly displayed an "AI is disabled" warning while AI features were functioning normally.
- Fixed an issue that could cause multiple unnecessary AI server processes to accumulate on Windows.
- Fixed an issue that caused Understand to become unresponsive while AI chat tools were executing.
Installer
- Fixed an issue where Windows Apps & Features displayed the installer build number instead of the installed Understand build number.
CodeCheck
- Fixed an issue where enabling background analysis for a bundled CodeCheck configuration in Understand was not recognized by VS Code until the project was reopened.
- Fixed inconsistencies in how VS Code displays CodeCheck exclusion settings and violation severity levels.
Graphs
- Fixed a bug in SVG export where a gradient fill starting with the background color was skipped.
Plugins
- Fixed the Shared Tasks CSV to list rows in the same order after reanalysis.
- Fixed Shared Tasks to track globals set through pointer parameters.
Known Issues
- Print preview may not display in the Windows print dialog
- Certain macros aren't being defined when importing VS 2022 SLN and VCXPROJ
Build 1264
8.0, Sep 25, 2026New Features
Language - Web
- For TypeScript/JavaScript, added support for string literal names in import and export specifiers.
CodeCheck
- Added new check MISRA23_4.6.1: Operations on a memory location shall be sequenced appropriately.
- Added new check MISRA23_0.0.2: Controlling expressions should not be invariant.
- Added new check ADA95_6.3.6: Setting Exit Status.
- Added new checks MISRA23_DIR_5.2 and MISRA25_DIR_5.2: There shall be no deadlocks between threads (Partial).
- Added new checks MISRA23_DIR_5.1 and MISRA25_DIR_5.1: There shall be no data races between threads (Partial).
- Added new check ADA95_6.3.5: Circular Task Calls.
- Added new checks MISRA23_23.6 and MISRA25_23.6: The controlling expression of a generic selection shall have an essential type that matches its standard type.
- Added new check ADA95_6.3.4: Abnormal Termination.
- Added new checks MISRA23_23.5 and MISRA25_23.5: A generic selection should not depend on implicit pointer type conversion.
- Added new check ADA95_6.3.3: The Abort Statement.
- Added new checks MISRA23_23.4 and MISRA25_23.4: A generic association shall list an appropriate type.
- Added new checks MISRA23_12.4 and MISRA25_12.4: Evaluation of constant expressions should not lead to unsigned integer wrap-around.
- Added new checks MISRA23_12.1 and MISRA25_12.1: The precedence of operators within expressions should be made explicit.
- Added new check MISRA25_DIR_4.3: Assembly language shall be encapsulated and isolated.
- Added new check MISRA25_DIR_4.2: All usage of assembly language should be documented.
- Added new check ADA95_6.3.2: Normal Termination.
- Added new check MISRA23_DIR_4.15: Evaluation of floating-point expressions shall not lead to the undetected generation of infinities and NaNs.
- Added new check ADA95_6.3.1: Avoiding Undesired Termination.
General
- Added ability to sort and change the order of projects on the welcome page.
Improvements
AI
- The und ai command now fails with a clear error when the configured server answers 404 or does not respond.
- Overview prompts are now fit to a hosted provider's context limit.
- Chats with hosted AI providers now summarize older exchanges when a prompt exceeds the context limit, and provider error messages are shown to the user.
- Shortened MCP server instructions for ibagent mode to prevent truncation by AI agents.
- The AI chat dock now shows status while the server's context is being resized.
General
- File paths are now named by the drive the project is open through.
- Updated Japanese translation.
Editor
- The Previewer now starts at the top of a newly opened file rather than inheriting the previous scroll position, and restores the last scroll position when navigating via history.
Language - VHDL
- Parameter reference kind in subprogram body declarations is now 'body declare' rather than 'declare'.
Language - Web
- Anonymous functions assigned to an array component are no longer implicitly named.
- Unnamed functions now have counts based on their enclosing context instead of the file.
- Unnamed functions that are default exports are now named 'default-export'.
- Anonymous functions passed to addEventListener are now named using the event type followed by '-handler'.
- Anonymous functions and lambda functions used as parameters are now given '-callback' names.
- Improved naming of anonymous functions and lambdas in additional cases.
Annotations
- Retyping a freeform annotation to a template now discards the freeform text (with a warning) since template bodies are read-only.
Bug Fixes
Language - Web
- For HTML, fixed crash on extremely long file names in the src attribute of a script tag.
- For TypeScript/JavaScript, fixed several bugs where valid code triggered syntax errors.
- For TypeScript/JavaScript, fixed sporadic crash when importing a module with syntax errors.
- For TypeScript/JavaScript, fixed problems finding correct imports with the 'Analyze Node.js' option.
- For JavaScript/TypeScript, fixed recursive calls inside named function expressions not resolving correctly.
CodeCheck
- Fixed MISRA23_1.3 and other aliases not showing the Partial tag their check carries.
- Fixed a hang caused by the home page refreshing on violation changes while background CodeCheck is running.
- Fixed MISRA23_22.14 missing an access nested inside another call.
- For Ada, fixed ADA95_6.2.2 and ADA95_6.2.5 incorrectly reporting violations when a nested if, case, loop, or select appeared inside a select alternative.
- Improved the error message shown when a CodeCheck annotation field contains an invalid value.
- Fixed ADA95_6.2.4 missing shared-variable violations when the variable is used across multiple files, and fixed false misses caused by 'end if'/'end case'/'end loop'/'end select' being mistaken for fresh block openers in select-guard analysis.
Command Line
- Fixed failure to import build log command lines with quoted source file paths.
AI
- Fixed AI server error messages reporting the probe URL instead of the configured server address.
- Fixed filename handling to accept either Windows or Unix style paths.
- Fixed AI chat being refused outright when the configured context limit is small.
Graphs
- Fixed some graphs not loading saved states correctly.
- Fixed potential crash in graphs on analyze.
Language - Csharp
- Fixed the short kind name of 'Private Protected Member Indexer Virtual' being reported as 'Protected Internal Virtual Indexer' instead of 'Private Protected Virtual Indexer'.
Licensing
- Fixed a hang at exit after a long licensed session.
- Fixed a licence seat being permanently lost when another process on the same machine deregistered the install while Understand was running.
Language - VHDL
- Fixed overload resolution for distinct type aliases with the same target type.
Language - Fortran
- Fixed syntax error on a 'module procedure' declaration with '::' before the procedure name.
General
- Fixed language server messages arriving during a nested event loop being delayed until the next unrelated message.
Known Issues
- Windows installer may become stuck when selecting an older build
- Print preview may not display in the Windows print dialog
- Certain macros aren't being defined when importing VS 2022 SLN and VCXPROJ
- AI may incorrectly report that it is disabled even when AI features are working
Build 1263
8.0, Sep 11, 2026New Features
Annotation Templates
- Create reusable, team-shared templates with structured fields to standardize annotations across a project. Apply them to entities, source lines, architecture nodes, and CodeCheck ignores for consistent annotation and deviation data that is easier to report, export, and automate.
AI
- Allow a custom AI server's context length to be specified in AI settings, defaulting to 32768.
- Replace the previous AI server with a new lightweight launcher that serves both chat and embeddings and sizes the model to the machine.
CodeCheck
- Add new check MISRA23_22.14: Thread synchronization objects shall be initialized before being accessed.
- Add new check ADA95_6.2.6: Communication Complexity.
- Add new check A18-5-10: Placement new shall be used only with properly aligned pointers to sufficient storage capacity.
- Add new check ADA95_6.2.5: Selective Accepts and Entry Calls.
- Add allowedValues option to check A5-1-1.
- Add new check ADA95_6.2.4: Unprotected Shared Variables.
- Add new check ADA95_6.2.3: Attributes 'Count, 'Callable, and 'Terminated.
- Add new check M5-19-1: Evaluation of constant unsigned integer expressions shall not lead to wrap-around.
- Add new check M5-2-2: A pointer to a virtual base class shall only be cast to a pointer to a derived class by means of dynamic_cast.
- Add new check ADA95_6.2.2: Defensive Task Communication.
- Add new check MISRA08_16-6-1: All uses of the #pragma directive shall be documented.
- Add new check ADA95_6.2.1: Efficient Task Communication.
- Add new check 6.1.8: Extensibility and Concurrent Structures.
Reports
- Add deviation reports: Deviation Register, Guideline Compliance Summary, Deviation Approval Records, Deviation Risk Assessment, and Accepted Risk Register.
Installer
- Ship shortcut and PATH setup scripts in the Windows ZIP kits.
Strict
- Add support for
-imacros,-iquote, and-idirafterflags from compile command import.
MCP
- Add
navigate_toandshow_code_tourtools to "ibagent" mode.
Improvements
AI
- Manage and summarize prompts sent to LM Studio and Ollama to prevent silent truncation when the context limit is reached.
- Avoid using GPUs whose drivers fail when running AI models.
- Rename Understand's AI server executable from
undaiservertoullama. Command-line users should now useullama. - The
und aicommand now exits with an error when the AI server fails to start within 5 minutes, rather than hanging silently. - When AI is disabled by your licence, the message now reads 'Your Administrator has disabled all AI features' across the AI settings page, AI Code Search status, and server responses.
API
- API drawing and reporting functions now use the API licence option rather than the Export option.
Installer
- Detect when an installation is still in use during uninstall from Apps & Features.
Licensing
- Report the server's specific reason when a licence check-in fails, rather than a generic failure message.
- Add a Manage Sessions button to the too-many-instances error dialog.
Bug Fixes
AI
- Fix a crash when a streamed AI response is cancelled while the project is closing.
- Fix a crash when AI is switched off while AI Code Search is showing results.
Command Line
- Fix
und aireporting an error after the AI server successfully recovers. - Fix
und report,und metrics, andund exportfailing with a licensing error for users whose licence has the export option disabled.
CodeCheck
- Fix an issue where background CodeCheck violations could fail to save when closing a project.
- Fix false positives in A3-9-1 when an allowed type matches a shorter pattern.
- Fix false positives in MISRA23_10.2.3 where an enumerator used in an arithmetic expression with a same-typed operand was incorrectly flagged.
- Fix MISRA23_21.13 / CPP_L036 false positives where unsigned char casts and unsigned char typed arguments were incorrectly flagged as non-compliant ctype function arguments.
- Restore the missing MISRA23_15.0.1 check: Special member functions shall be provided appropriately.
- Fix false positives in MISRA23_11.3.1 where pointer-to-array and reference-to-array types were incorrectly flagged as array declarations.
Installer
- Fix several installer issues, including finished page layout, default install folder detection, offline bundle extraction, and prevention of simultaneous setup sessions.
- Fix package version counters restarting below what is already published, which caused the installer to report no update available.
MCP
- Fix ambiguous entity names appearing on the first page of MCP tool results.
- Fix
show_code_tourbeing unavailable in VS Code and Copilot. - Fix the MCP server connection failing on Windows.
Editor
- Fix compile command import incorrectly applying a
-U(undefine) flag when a later-Dflag redefines the same macro. - Fix the editor inserting a matching closing brace inside an unclosed string literal.
VS Code Plugin
- Fix messages that arrive during a nested event loop being silently delayed.
- Fix files opened from mapped or subst drives not matching their project entity, leaving the sidebar empty.
- Fix a crash on shutdown when the language server released its licence after tearing down the analyzer.
Known Issues
- Print Preview is not working in Understand.
- Certain macros aren't being defined when importing VS 2022 SLN and VCXPROJ.
- A warning may appear that AI is disabled even when AI is working.
- Understand may report errors when analyzing Fortran interfaces.
Build 1262
8.0, Sep 1, 2026New Features
CodeCheck Checks
- Add new check ADA95_5.9.10: Abort Statement.
- Add new check ADA95_5.9.9: Protected Objects.
- Add new check ADA95_6.1.7: Delay Statements.
- Add new check ADA95_6.1.6: Priorities.
- Add new check ADA95_6.1.5: Dynamic Tasks.
- Add new check ADA95_6.1.4: Anonymous Task Types and Protected Types.
- Add new check ADA95_6.1.3: Discriminants.
- Add new check ADA95_6.1.2: Tasks.
- Add new check ADA95_6.1.1: Protected Objects.
- Add new check MISRA08_5-0-13: The condition of an if-statement and the condition of an iteration-statement shall have type bool.
- Add new check MISRA08_5-2-1: Each operand of a logical && or || shall be a postfix-expression.
- Add new check MISRA08_5-2-2: A pointer to a virtual base class shall only be cast to a pointer to a derived class by means of dynamic_cast.
- Add new check MISRA08_5-2-7: An object with pointer type shall not be converted to an unrelated pointer type, either directly or indirectly.
- Add new check MISRA08_12-8-2: The copy assignment operator shall be declared protected or private in an abstract class.
Improvements
Installer
- Let the Windows installer choose which build to install, offering a drop-list of available releases on the Advanced page.
- On Windows run the VC++ redistributable on install, and make the offline bundle a portable zip of the selected installation.
- Create Start Menu and desktop shortcuts and add Understand to the PATH on Windows, with per-option controls on the Advanced page.
- Refuse to uninstall while Understand is running, naming the programs to close before proceeding.
Editor
- Convert Unicode curly quotes and em/en dashes to ASCII equivalents on paste.
- Add a context menu action to hard-wrap selected text at the page guide.
General
- Allow the Finder context menu to open source files in Understand on macOS.
CodeCheck Checks
- CPP_E065 now only reports conversions to bool within the condition of an if or iteration statement, including pointer and floating-point ones.
- MISRA08_15-0-3 is now marked as automatically checked during strict analysis, with a updated description explaining that violations are reported as analysis errors.
VS Code Plugin
- Add project Violations list, entity Info, check severities, and path excludes for the VS Code extension.
- Add file status reporting, checks list, and container licensing support for the VS Code extension.
Bug Fixes
Licensing
- Say why a license check-in failed instead of reporting every failure as a generic return error.
- Fix issue during concurrent startup license checkouts where multiple licenses were checked out for one instance.
Language - Web
- For TypeScript, fix a bug where use of 'abstract' in a constructor type caused a syntax error.
- For TypeScript, fix syntax errors from some mapped type declarations, unrecognised imported names when unknown property references share the same name, and incorrect identification of some predefined types.
Installer
- Fix several issues with the initial Windows installer release in 1261
Language - C++
- Fix unexpected unresolved kind for some object member instances in Strict analysis.
CodeCheck
- Restore the ability to enable/disable and customize CodeCheck configurations from the Plugin Manager, lost in build 1260.
AI
- Report an unavailable AI provider with a clear message instead of "manually disabled".
VS Code Plugin
- Fix a hang at shutdown when the license server was unreachable, by polling for the exit notification instead of waiting on a socket event.
Known Issues
- Print Preview is not working in Understand
- Certain macros aren't being defined when importing VS 2022 SLN and VCXPROJ
- Warning about disabled AI even though AI is working
Build 1261
8.0, Aug 29, 2026New Features
AI
- Introducing a new general AI Chat that can answer broader questions across entities, for architectures, and even for the project as a whole, this replaces the entity specific chat dialog.
Crash Reports
- You can now automatically send crash reports to us on all platforms, not just Windows. We look at every one of these so please send them if you can.
Editor
- Add a Markdown viewer to the editor, accessible from the editor toolbar for Markdown files
CodeCheck
- Add new MISRA08_2-10-6: If an identifier refers to a type, it shall not also refer to an object or a function in the same scope
- Add new MISRA08_15-5-1: A class destructor shall not exit with an exception
- Add new MISRA08_16-0-1: #include directives in a file shall only be preceded by other preprocessor directives or comments
- Add new MISRA08_18-2-1: The macro offsetof shall not be used
- Add new MISRA08_18-0-4: The time handling functions of library <ctime> shall not be used
- Add new MISRA08_10-1-1: Classes should not be derived from virtual bases
Parsers
- Add support for C# 13 including partial properties, indexers and 'scoped' parameters
Installer
- Introduce a new web based installer for Windows that allows you to install just the components you want, also allowing for much faster updates. Offline install bundles can still be created from the advanced install option in the installer
Metrics
- Add CountUnreachableStmt, CountUnusedVariable, and CountDanglingElseIf per-function as plugin metrics
Improvements
AI
- MCP: Keep the AI agent on the database given by -db, and allow only one -db
- MCP: The get_information tool now supports sorting architecture entity lists
- MCP: Improve dependency formatting in the get_information tool for large dependent lists and mixed architectures
Search
- Remove the run button from plugins search to improve speed. Running is still available through the command search.
- Remove the customize action from plugins search for built-in plugins which have no file to edit.
Metrics
- Update Category tags for metrics (scripted and built-in). "Solution: Coverage" was updated to "Category: Coverage".
Command Line
- "und arch -generate" now errors when the instance name is already in use; use -force to overwrite an existing custom architecture or -name to choose a different name
- Add command-line flag to set the C++ "Cache AST Files" setting for Bug Hunter
Licensing
- "und license" now reports whether the saved license code is authenticated, so a stored-but-invalid code is not shown as an active license
Parsers
- C++ Strict: Write defined-in-macro annotation for all entity kinds
Bug Fixes
AI
- Fix background MCP server processes holding a project's database open and leaving it locked after using an AI coding agent
Editor
- Fix crash on tab width change from status bar
Entity Filter
- For C/C++, the Classes entity filter now lists unions
Web
- Fix several crashes and hangs on invalid TypeScript/JavaScript code
- Fix TypeScript/JavaScript import paths that use path aliases defined in tsconfig.json or jsconfig.json not finding the imported files
CodeCheck
- MISRA12_10.3, 10.6, and 10.8 violation messages now name the essential types compared
- MISRA12_10.7 violation messages now name the operands it compared
- Fix MISRA12_12.2 false positives on typedefs of fixed width types
- Fix MISRA12_10.8 false positives on narrowing casts
- Fix MISRA12_10.7 false positives on constant expressions
- Fix A5-1-1 flagging enum values and pure virtual functions
- Fix A3-9-1 flagging typedefs of fixed width integers
- Fix MISRA12_10.6 false positives on composite expressions
- Fix MISRA12_10.4 false positives on enums named by a typedef
- Fix MISRA23_10.3 false positives on casts
Metrics
- For C/C++ CountDeclClass now counts structs and unions and classes and not Enums
Licensing
- Fix offline licenses being refused access to non-open-source projects in the New Project wizard
Parsers
- C++ Strict: Fix macOS minimum version setting not being applied for target OS "darwin"
- C++ Strict: Fix calls to make_unique/make_shared with more than two template arguments not being recognized
- Fix some uses of the C# 'scoped' keyword causing syntax errors
- Fix possible crash in parsing C# 'with' expressions containing syntax errors in the expression prefix
- Fix C# standard stub declarations not being parsed when standard DLL files are missing
Known Issues
- Print Preview is not working in Understand
- Certain macros aren't being defined when importing VS 2022 SLN and VCXPROJ
- Warning about disabled AI even though AI is working
Build 1260
8.0, Aug 12, 2026Bug Fixes
Licensing
- Fix license issue where offline licenses were being wrongly classified as open-source licenses and checked-in.
Build 1259
8.0, Aug 7, 2026New Features
Documentation
- Replace the legacy manual and knowledge base with a new task-oriented help site, built into the in-product help bundle and published online at https://docs.scitools.com/
- Improve built-in metric descriptions with inline code samples and links, including sample code for non-C/C++ metrics
AI
- Add undmcp, an MCP server that can communicate with a running Understand GUI
- Enable Understand as an MCP server so AI coding agents such as Claude Code and Cursor can query a project
- AI agents can now find and connect to an Understand instance that is already running
- AI agents now get a clear error when a file path resolves to nothing or to several files, instead of silently acting on the wrong file
- Add an optional non-streaming OpenAI mode and opt-in concurrency controls for the AI server
- Speed up opening a project when background AI overviews are set to "Entire Project"
Command Line
- Add command-line switches to set the C# and Visual Basic .NET framework, matching the project configuration dialog
Import
- Add C# netstandard target support for imported and manually configured projects
Language – C#
- Add support for the C# 'allows ref struct' anti-constraint
Editor
- Add syntax highlighting for Fortran 2018 keywords
Graphs
- Add an option to the Architecture graph to show children by default
- Improve rich text support when exporting graphs to SVG
CodeCheck Checks
- Add new ADA95_5.7.5: Overloading the Equality Operator
- Add new ADA95_5.7.3: Overload Subprograms
- Add new ADA95_5.7.2: The Renames Clause
- Add new ADA95_5.7.4: Overloaded Operators
- Add new ADA95_5.7.1: The Use Clause
- Add new MISRA08_14-7-3: All partial and explicit specializations for a template shall be declared in the same file as the declaration of their primary template
- Add new MISRA08_7-5-3: A function shall not return a reference or a pointer to a parameter that is passed by reference or const reference
- Add new MISRA08_0-1-6: A project shall not contain instances of non-volatile variables being given values that are never subsequently used
- Add new MISRA08_15-5-3: The terminate() function shall not be called implicitly
- Add new MISRA08_0-2-1: An object shall not be assigned to an overlapping object
- Add new MISRA08_5-17-1: The semantic equivalence between a binary operator and its assignment operator form shall be preserved
- Add new MISRA08_5-0-16: A pointer operand and any pointer resulting from pointer arithmetic using that operand shall both address elements of the same array
- Add new MISRA08_14-6-1: In a class template with a dependent base, any name that may be found in that dependent base shall be referred to using a qualified-id or this->
- Add new MISRA08_10-2-1: All accessible entity names within a multiple inheritance hierarchy should be unique
- Add new MISRA08_0-4-2: Use of floating-point arithmetic shall be documented
- Add new MISRA08_7-4-1: All usage of assembler shall be documented
- Add new MISRA08_6-6-3: The continue statement shall only be used within a well-formed for loop
- Add new MISRA08_15-3-4: Each exception explicitly thrown in the code shall have a handler of a compatible type in all call paths that could lead to that point
- Add new MISRA08_5-19-1: Evaluation of constant unsigned integer expressions should not lead to wrap-around
- Add new MISRA08_5-14-1: The right hand operand of a logical && or || operator shall not contain side effects
- Add new MISRA08_5-3-2: The unary minus operator shall not be applied to an expression whose underlying type is unsigned
- Add new MISRA08_6-4-3: A switch statement shall be a well-formed switch statement
- Add new MISRA08_5-0-15: Array indexing shall be the only form of pointer arithmetic
- Add new MISRA08_6-2-1: Assignment operators shall not be used in sub-expressions
- Add new MISRA08_6-4-7: The condition of a switch statement shall not have bool type
- Add new MISRA08_5-18-1: The comma operator shall not be used
- Add new MISRA08_0-4-1: Use of scaled-integer or fixed-point arithmetic shall be documented
- Add new MISRA C 2004 checks: 8.1, 8.4, 10.1, 10.2, 10.3, 10.4, 11.1, 11.2, 11.3, 13.1, 13.2, 13.5, 16.6, 18.1, 19.4, and 19.8
Bug Fixes
CodeCheck
- Fix a crash that could occur after analyzing while background CodeCheck was updating violations
- Remove duplicated description text shown for the Effective C++ configuration
- Point each filter dialog's help at the field reference that actually applies to it
Configure
- Update stale language-version descriptions to match the versions actually supported (C++23, Java 9-21, VHDL-2002/2008, Fortran 2018)
Metrics
- Fix Pascal/Delphi published-method count being generated as CountDeclMethodStrictPublished instead of CountDeclMethodPublished, and add CountDeclMethodStrictProtected
- Fix several Ada complexity metrics, including incorrect Strict Modified Essential Complexity values and Sum Strict Modified Essential Cyclomatic Complexity being unavailable or always zero
Graphs
- Fix the "Members" option of the Type Tree and Type Derived From graphs for variants where it was broken
- Fix a crash that could occur when a graph showed files from a comparison database
- Fix cluster graphs generated from the API always having filled clusters
- Fix graph options such as the Variable Tracker "Level" and "Show Node Children By Default" not being applied when graphs are drawn from the API
UI
- Fix a list view layout regression on Windows 10
General
- Fix a crash when an AI coding agent requests documentation for an MCP tool
Known Issues
- AI generation may incorrectly state it has been disabled due to insufficient specs
- AI generation may use more than 6 GB of RAM in some cases. Systems with 8 GB of RAM may encounter out-of-memory errors. If this occurs, disable AI generation under *Tools > Options > Data*.
- Some macros aren't defined when importing VS 2022 SLN and VCXPROJ
- Print Preview may not function correctly
Build 1258
8.0, Jul 27, 2026New Features
CodeCheck Checks
- Add new MISRA04_16.6: The number of arguments passed to a function shall match the number of parameters
- Add new MISRA04_13.4: The controlling expression of a for statement shall not contain any objects of floating type
- Add new MISRA04_12.5: The operands of a logical && or || shall be primary-expressions
- Add new MISRA04_17.4: Array indexing shall be the only allowed form of pointer arithmetic
- Add new MISRA04_19.16: Preprocessing directives shall be syntactically meaningful even when excluded by the preprocessor
- Add new MISRA04_16.7: A pointer parameter in a function prototype should be declared as pointer to const if the pointer is not used to modify the addressed object
- Add new MISRA04_14.2: All non-null statements shall either (a) have at least one side-effect however executed, or (b) cause control flow to change
- Add new MISRA04_12.11: Evaluation of constant unsigned integer expressions should not lead to wrap-around
- Add new MISRA04_12.9: The unary minus operator shall not be applied to an expression whose underlying type is unsigned
Editor
- Set the cursor position to the requested line and column instead of the start of the line when visiting an anonymous function definition
Language - Fortran
- Add support for Fortran 2018 SYNC TEAM statements.
- Add Fortran 2018 intrinsics to the intrinsic definition file.
Licensing
- Understand now runs without a license code when the open project's source is a public open-source repository. Click here for more information.
Bug Fixes
List Browser
- Fix crash when removing an expanded list
Command Line
- "Und arch -generate" now ignores -name and -options when left blank
Graphs
- Fix dependency graphs to allow expanding namespaces.
- Fix bug where cluster graphs generated from the API always had filled clusters.
Import
- Fix crash on malformed compile_commands.json entry
Language - Fortran
- Fix bug where some uses of [...] caused syntax errors when the language version was set to Fortran 2018.
- Fix bug where some intrinsics were missing from the 2003 and 2008 intrinsics files.
Upython
- Fix crash on
ent.annotate()
Known Issues
- Understand may fail to find primitive aliases when importing a CSPROJ
- AI generation may incorrectly state it has been disabled due to insufficient specs
- AI generation may use more than 6 GB of RAM in some cases. Systems with 8 GB of RAM may encounter out-of-memory errors. If this occurs, disable AI generation under *Tools > Options > Data*.
- Some macros aren't defined when importing VS 2022 SLN and VCXPROJ
- Print Preview may not function correctly
Build 1257
8.0, Jul 15, 2026New Features
AI
- Update AI speed warning when speed test results change in Tools->Options->Data
- Added AI data-handling information to the Privacy settings, including local AI processing, provider-specific data-sharing behavior, and the scope of AI and MCP settings.
CodeCheck
- Allow exporting inspections to sarif from the GUI (license must support export and the inspection must be open and cannot be background checks).
- CodeCheck documentation no longer displays coverage for standards that are under active development.
- Add MISRA C 2025 configuration to the CodeCheck configuration selection drop down box
CodeCheck Checks
- Add new MISRA04_12.7: Bitwise operators shall not be applied to operands whose underlying type is signed
- Add new MISRA04_12.1: Limited dependence should be placed on C's operator precedence rules in expressions
- Add new MISRA04_11.5: A cast shall not be performed that removes any const or volatile qualification from the type addressed by a pointer
- Add new MISRA04_11.4: A cast should not be performed between a pointer to object type and a different pointer to object type
- Add new MISRA04_8.2: Whenever an object or function is declared or defined, its type shall be explicitly stated
- Add new MISRA04_16.8: All exit paths from a function with non-void return type shall have an explicit return statement with an expression
- Add new MISRA04_12.10: The comma operator shall not be used
- Add new MISRA04_12.4: The right-hand operand of a logical && or || operator shall not contain side effects
- Add new MISRA04_9.2: Braces shall be used to indicate and match the structure in the non-zero initialisation of arrays and structures
- Add new MISRA04_12.3: The sizeof operator shall not be used on expressions that contain side effects
- Add new MISRA08_5-0-1 MISRA04_12.2: The value of an expression shall be the same under any order of evaluation that the standard permits
- Update the SEI Cert Java standard to the latest CMU risk assessment values
- Update the SEI Cert C++ standard to the latest CMU risk assessment values
- Update the SEI Cert C standard to the latest CMU risk assessment values
- Add new MISRA08_2-7-3: Sections of code should not be "commented out" using C++ comments
- Add MISRA C++ 2023 rule 9.3.1
General
- Suppress command line progress bars for non-interactive terminals.
- Added Python API environment setup instructions to the documentation home page.
- Added sample script for creating architecture in CMake
- Reduced row height in Project Configuration tables and updated the width of the first column.
- The metrics treemap options dialog now uses friendly metric names in combo boxes when available.
Language - C/C++
- Add support for Cyclomatic Strict Modified metric collection in fuzzy C analysis
- Add Accessed By field in the Information Browser for c++ macros
Language - Fortran
- Add references to dummy arguments when named association is used in a function or subroutine call.
- Add 'local component variable' for components of local derived types.
- The Information Browser now lists a file's program units and groups a routine's nested locals under a Local section.
Language - Visual Basic
- Improved Information Browser member visibility and parameter display. Friend and Protected Friend members are now shown correctly, and Protected members no longer include Protected Friend members.
- The Information Browser now displays the containing namespace for types.
- The Parameters field now renders function signatures correctly.
- Default and parameterized properties, as well as generic classes, now display their parameters.
- Property parameters are now shown in a dedicated Parameters field instead of being grouped with Accessors.
Rust
- Add "features" settings interface
Bug Fixes
CodeCheck
- Fix issue where inspection errors weren't being restored on Windows
- Fix codecheck comment ignore parsing to strip leading and trailing whitespace.
CodeCheck Checks
- Fix: false positives in MISRA12_21.2 for reserved identifiers introduced by library macro expansion
- Fix: false positive in MISRA12_14.2 when a for loop uses different struct members in the bound and body
- HIS_02 Fix possible failure when 'CountPath' metric returns NULL
- Fix: Script error in EXP-44
- Fix MISRA23_8.9.1 false positive on pointer members vs array members
General
- Fix Information Browser visit next/previous keyboard shortcuts not working when drawered.
- Fix possible crash on exit
- Fix brace style in ExampleProjects class declaration
Language - Fortran
- Fix bug where some local entities were given long names that included the full path to the parent entity.
- Add 'local' kinds for procedures, derived types, and enumerators defined within procedures. This change fixes a bug where some unknown entities could merge with these nested entities.
Language - C/C++ Strict
- Fix invalid references to type names introduced by using declarations
Known Issues
- Loading a custom GGUF model may incorrectly report the file as corrupted. This issue does not affect the GGUF models included with Understand.
- AI generation may incorrectly state it has been disabled due to insufficient specs
- AI generation may use more than 6 GB of RAM in some cases. Systems with 8 GB of RAM may encounter out-of-memory errors. If this occurs, disable AI generation under *Tools > Options > Data*.
- Some macros aren't defined when importing VS 2022 SLN and VCXPROJ
- Print Preview may not function correctly
Build 1256
8.0, Jun 25, 2026New Features
CodeCheck Checks
- Add new PEP8_06: Imports
- Add new MISRA12_1.2: Language extensions should not be used
- Add new MISRA12_20.8: The controlling expression of a #if or #elif preprocessing directive shall evaluate to 0 or 1
Editor
- Remember when transient file type is overridden and restore it when the document is reopened
Compilers
- Add support for GHS V850 compiler extension 'asm(x)'.
Language - Fortran 2018
- Add 'select rank' construct.
- Add 'non_recursive' keyword.
- Add support for variants of the 'import' statement.
- Add support for specifying 'type' and 'external' with 'implicit none'.
- Add support for intrinsics file
Rust
- Add support for resolving extern entities with C entities
- Set ABI freetext on foreign interface entities
Bug Fixes
Command Line - Und
- Improve import file error reporting from und.
CodeCheck Checks
- Fix MISRA08_8-4-2 false positive on template array parameters declared in headers
- Fix false positive for MISRA08_2-10-5 caused by static identifiers in third-party / system headers
Language - Basic/C#
- Fix incorrect spelling and visibilty desciptions in the 'short name' text on several C# and Basic entity kinds.
Language - Fortran
- Fix bug where an 'unknown' variable created in a module context could interfere with symbol lookup.
Language - Java
- Fix bugs where the long name of 'public sealed interface' was 'publicsealedinterface' and the long name of 'default sealed generic interface' was 'default sealedgeneric interface'.
Rust
- Fix regression in creating use/call/etc. references to associated items
Known Issues
- AI generation may incorrectly state it has been disabled due to insufficient specs
- Some macros aren't defined when importing VS 2022 SLN and VCXPROJ
- Print Preview may not function correctly
Build 1255
8.0, Jun 12, 2026New Features
CodeCheck Checks
- Add new check MISRA12_1.3: There shall be no occurrence of undefined or critical unspecified behavior
- Add new check MISRA12_DIR_4.11: The validity of values passed to library functions shall be checked
- Add new check MISRA12_18.1: A pointer resulting from arithmetic on a pointer operand shall address an element of the same array as that pointer operand
- Added new checks for Ada Statements [autosync]
Editor
- Unfold folded lines when visiting references
- Split "Fold/Unfold All" toggle action into two separate actions
- Move closing braces to the next line when doing auto-indent on newline
- Add tentative auto-indent for blank lines
- Add automatic matching brace insertion
Language - Fortran
- Added support for FAIL IMAGE statement.
- Added support for EVENT POST and EVENT WAIT statements.
- Added support for locality-specs on DO CONCURRENT statements.
- Added support for Fortran 2018 FORM TEAM and CHANGE TEAM statements.
Language - C/C++
- Add "use implicit" and "assign" references to struct members referenced during structured binding decomposition
- Add C++ Accessed By IB field for global objects (previously shown in Called By) with improved reference annotations in Simple mode
Bug Fixes
CodeCheck Checks
- Fix: false positives in MISRA12_14.4 for preprocessor #if directives
- Fix: false positives in MISRA12_14.2 for pure-function bounds, object-initialized counters, and assignment increments
- Fix: False positives in MISRA12_13.1 for array element assignments
- Fix: false positives in MISRA12_11.4 for address-of and subscripted pointers, and corrected category to Advisory
- Fix: false positives in MISRA12_10.8 for casts of non-composite operands
- Fix: false positive in MISRA12_10.6 from string vs integer size comparison
- Fix: false positive in MISRA08_12-1-1 (helper with virtuals on unrelated objects)
- Fix: bug causing false positive in MISRA08_12-1-1 causing incorrect file context
- Fix: false positive in MISRA12_17.3 for fortified libarary functions and compiler builtins
- Fix: false positive in MISRA08_12-1-1 (indirect-call path)
- Fix false negative in MISRA23_10.1 for parenthesised operands
Command Line (und)
- Fix spurious warning about -verbose being an unused argument.
Editor
- Fix revert to default language setting on document reload
Metrics
- Fix typo in Paths metric description.
Known Issues
- AI generation may incorrectly state it has been disabled due to insufficient specs
- Some macros aren't defined when importing VS 2022 SLN and VCXPROJ
- Print Preview may not function correctly
Build 1254
8.0, May 25, 2026New Features
Sarif Import
- Improve portability when loading results from another machine.
CodeCheck Checks
- Add new MISRA12_13.2: The value of an expression and its persistent side effects shall be the same under all permitted evaluation orders
- Add Ada Checks ADA95_5.5.1, ADA95_5.5.6
- Add new MISRA12_22.6: The value of a pointer to a FILE shall not be used after the associated stream has been closed
- Add new MISRA12:19.1: An object shall not be assigned or copied to an overlapping object
- Add Ada Checks ADA95_5.4.1, ADA95_5.4.5, ADA95_5.4.6
- Add new MISRA12_14.3: Controlling expressions shall not be invariant
- Add new MISRA12_2.2: There shall be no dead code
Command Line
- Add way to enable Automatic Architectures in und - Adds 'und arch [-list] [-generate <name>] db.und' so users can manage automatic architectures (Directory Structure, Language, Calendar, Visual Studio, and plugin archs) from the CLI without opening the GUI. - 'und arch -list' shows each arch with active/available status - 'und arch -generate <name>' persists and runs the arch via TagManager - 'und help arch' documents the remove path via 'und remove -arch'
Localizations - Japan
- Updated Translations
Interactive Reports
- Add new iReport plugin for exporting metrics for certain entities
Language - Basic
- Add 'overrides explicit' references for override relations where a method implements an interface method by explicitly naming it.
Language - Rust
- Add Cargo.toml import
- Add option to add found module files to project
Bug Fixes
CodeCheck Checks
- Fix: False negative for MISRA23_10.4 when comparing a variable to a literal
- Fix: Falsepositives in MISRA08_6-5-5
- Fix: false positive in MISRA08_12-1-1
- Fix: Crash in CPP_L037 Incompatible Pointers on array arguments stinb/crashlogs#789
Shared Tasks
- Shared Tasks CSV now matches graph classification and honors REFERENCE option
- Shared Tasks CSV now matches the graph's lockset-based classification
General
- Fix: prevent duplicate UPL plugins in Manage Plugins window
- Fix bug where old file data can sometimes be left in the db after a file is removed from the project
Import
- Fix spurious project configure dialog "discard changes" prompt for some compile_commands.json imports
Language - Basic
- Fix bug where objects typed using a type alias had a 'typed' reference to the alias entity instead of a 'use name'.
Language - C#
- Fixed bug where objects typed using a type alias had a 'typed' reference to the alias entity instead of a 'use name'.
- Improved handling of type aliases used as base classes and implemented interfaces. A 'use name' relation is now created to the alias entity and a 'base implicit' or 'implements implicit' relation is created to the renamed class or interface. Also, fixed bug where some references using namespace alias prefixes were not correctly recognized.
Language - Pascal
- Fixed Pascal inheritance analysis when classes extend aliased types.
Rust
- Fix missing references when a use statement name references more than one entity
- Fix kind of non-generic traits
- Fix nested function qualified names
- Fix failure to analyze build script generated files
UI
- Potential Fix: prevent crash when renaming a tag in Designer after offline mode cycling
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.
Build 1253
8.0, May 13, 2026New 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.