The indoor mapping component for KDE Itinerary has been moved to a new Git repository and is now undergoing the standard KDE review process for inclusion in the release service for 20.12. Here’s a quick update on what changed.

Repository

The code has been split out from the KPublicTransport repository where this has been growing over the past half year. That has always been the wrong place conceptually, it just had ended up that way due to some building blocks already existing there, and me being lazy.

The new repository is here. This is a hard dependency for building KDE Itinerary, but it in itself doesn’t add any new dependency beyond what was already required anyway.

Review

The high-level review process associated with such moves as usual turned out to be quite useful, with Albert finding severe breakage in the parsing code for certain numeric values in the OSM data when running with a locale that has a different decimal separator.

This is quite annoying to fix, as the proper solution for locale-independent number parsing (std::from_chars) isn’t implemented by current GCC/Clang versions for floating point values yet, despite that being part of the C++17 feature set.

Qt has methods for this in QByteArray, however none that works one a range- or view-like input, so using this on a sub-string always requires an allocation, not ideal for performance-sensitive code processing a larger amount of raw OSM data.

Until std::from_chars becomes available, we are now using an implementation detail of Qt which isn’t official API but fortunately exported nevertheless.

It might also be interesting to explore whether unit tests on the CI can be run with random or rotating locales and timezones, to find such issues more systematically.

Releases

I’m notoriously bad at getting stuff released, as several discussions at Akademy reminded me off again. Nightly builds aren’t cutting it for wider use.

To at least address some of that for Itinerary I’m now trying to get KPublicTransport, KOSMIndoorMap and Itinerary itself into the KDE release service for the 20.12 cycle, which then should hopefully also benefit KTrip.