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.
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.
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 (
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.
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.
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.