This release was made on 21st April 2026 and was based on commit 83d9e4faf.
The previous release, 9.4, was made on 9th February 2026 and was based on commit 9.4-2-gd8a253a4d.
The main changes are a complete redesign of the custom road type system, significant speed optimizations for the makemap tool and routing engines, and the introduction of experimental support for OpenLR traffic data.
Restoration and expansion of custom road types
The system for handling road types has been overhauled to provide greater flexibility and restore support for custom road types. The RouteProfile arrays have been expanded to allow for up to 32 custom route types in addition to standard types. To support this, the CTM1 map version has been bumped to 8.4 to store custom-route-type data within the extended road type attributes.
Significant speed increases in makemap
The makemap tool has been further optimized to reduce processing time for large-scale map creation:
- Concurrent TECH Profiles: Creation of TECH route table profiles now happens concurrently, saving approximately 25% of run time when building maps with multiple profiles.
- Smarter OSM Importing: Import speed increased by about 20% by skipping rule applications for nodes and ways that have no tags.
- Object Caching: Speed was improved by a further 10% by avoiding redundant copies of cached output object arrays.
- Parallel CH Data: Contraction Hierarchy route data for multiple profiles is now created in parallel, and internal parameters were refined to improve overall build speed by 8%.
Major routing performance gains
The routing engines have undergone substantial internal refactoring to improve efficiency and memory management:
- Turn-Expanded Router: Now performs over 30% faster by supplying junction road data directly during turn creation and avoiding unnecessary non-local memory access. Redundant map object loads were also eliminated, saving a further 10% of route creation time.
- Priority Queues: Both A-star and turn-expanded routers now utilize std::priority_queue for open node lists, reducing stack churn and improving general performance.
- Memory Management: A new custom memory pool for CTextBox allocations reduces overhead and prevents potential memory leaks.
Experimental OpenLR and traffic support
This release introduces initial, experimental support for OpenLR location referencing and traffic data parsing. This includes a new traffic updater class to poll DATEX II feeds and parsers for OpenLR XML situation records. These features are currently implemented for C++, .NET, and UWP; implementation for iOS and Android is pending further evaluation.
Platform-specific changes
.NET and UWP: The .NET target has been reverted to 4.7.2 for broader backward compatibility. A new comprehensive UWP demo program has been added, featuring support for 3D buildings and optimized 24-bit EGL depth sizes. Additionally, the number of file buffers and cached tiles in UWP builds has been reduced to optimize run-time RAM use.
Android and iOS: Support for custom route types has been added to both SDKs. The iOS demo has been updated to use the UIScene lifecycle and various deprecations have been addressed. New traffic source files have also been integrated into both build systems.
General improvements and bug fixes
- Hardened String classes against buffer overflows and illegal parameter pointers.
- Abolished the WritableTextView class, which is no longer used.
- Fixed a crash in the Maps App on Linux when performing text searches.
- Corrected "z-fighting" issues for 3D buildings and fixed a bug where buildings were sometimes drawn below ground level.
- Improved text rendering by ensuring Font::DrawText and the glyph cache correctly skip C0 control characters.
- Fixed a bug where fixed labels appeared incorrectly in perspective mode.
- Standard import rules now correctly import the dual_carriageway attribute from OSM data.

