← Back to all sparks
O

OSRM

DEVOPS
Velocity2.5

High performance routing engine for shortest paths in road networks

A routing engine spending its release budget on the toolchain, not the router

routingcpp20-migrationbuild-toolingopenstreetmapmaintenance
Current state
OSRM ships frequently — nine releases in three months — but the changelogs are commit lists dominated by dependency bumps, CI plumbing, and a systematic C++20 concepts migration replacing legacy SFINAE patterns. Genuine routing changes are rare and small: an access=unknown reclassification in the car profile, a laterite surface type, a contractor self-loop correction. Several releases exist only to fix the Docker release workflow.
Where it's heading
This is a codebase being modernized rather than extended. The SFINAE-to-concepts sweep across partitioner, extractor, and util, the Alpine-to-Debian Docker base swap, and the move to Ubuntu 26.04 with clang-format-22 all point at reducing maintenance drag on an engine whose routing semantics are already settled. New surface area is arriving at the edges — ARM Linux bindings, an --output option on the preprocessing tools.
Prediction
The concepts migration looks close to complete, so expect the remaining refactor releases to taper and profile-level corrections to become the main visible change.

Recent moves

  1. 9d ago

    Car profile now treats access=unknown as restricted

    The one behavioral change in an otherwise dependency-bump release: access=unknown is reclassified from fully allowed to restricted in the car profile, which will shift routes on OSM data with ambiguous tagging. Everything else is CI and dev-dependency churn.

    View source ↗
  2. 1mo ago

    ARM Linux bindings and an --output option for the preprocessing tools

    Adds ARM Linux binding builds, an --output flag across osrm-contract, osrm-customize and osrm-partition, and a laterite surface type in the car and bicycle profiles. Modest but real additions to how the toolchain is deployed and driven.

    View source ↗
  3. 1mo ago

    26.7.2 removes a stale CMake reference

    A version bump and a CMake lint removing a dead Boost regex mention. No user-visible effect.

    View source ↗
  4. 1mo ago

    26.7.1 repairs missing CI permissions

    Exists solely to correct a missing actions.read permission in the release workflow. Pure release plumbing.

    View source ↗
  5. 1mo ago

    C++20 concepts migration lands across partitioner, extractor and util

    The largest batch of the concepts sweep, alongside a contractor fix inserting self-loops for all needed cases rather than only one-ways and a change to ignore incoming hints during phantom node lookup. The refactor is invisible to users; the contractor and hint changes are not.

    View source ↗
  6. 2mo ago

    Docker base image moves from Alpine to Debian

    Swaps the container base from Alpine to Debian and makes the latest tag a proper multi-arch manifest. A deployment-level change that anyone pulling the official image will notice, even though the engine itself is untouched.

    View source ↗