Skip to content

Releases: Project-OSRM/osrm-backend

v5.17.0

19 Apr 11:34
Compare
Choose a tag to compare
  • Changes from 5.16.0:
    • Bugfixes:
      • FIXED: deduplication of route steps when waypoints are used #4909
      • FIXED: Use smaller range for U-turn angles in map-matching #4920
      • FIXED: Remove the last short annotation segment in trimShortSegments #4946
      • FIXED: Properly calculate annotations for speeds, durations and distances when waypoints are used with mapmatching #4949
      • FIXED: Don't apply unimplemented SH and PH conditions in OpeningHours and add inversed date ranges #4992
      • FIXED: integer overflow in DynamicGraph::Renumber #5021
    • Profile:
      • CHANGED: Handle oneways in get_forward_backward_by_key #4929
      • FIXED: Do not route against oneway road if there is a cycleway in the wrong direction; also review bike profile #4943
      • CHANGED: Make cyclability weighting of the bike profile prefer safer routes more strongly #5015
    • Guidance:
      • CHANGED: Don't use obviousness for links bifurcations #4929
      • FIXED: Adjust Straight direction modifiers of side roads in driveway handler #4929
      • CHANGED: Added post process logic to collapse segregated turn instructions #4925
      • ADDED: Maneuver relation now supports straight as a direction #4995
      • FIXED: Support spelling maneuver relation with British spelling #4950
    • Tools:
      • ADDED: osrm-routed accepts a new property --memory_file to store memory in a file on disk. #4881
      • ADDED: osrm-datastore accepts a new parameter --dataset-name to select the name of the dataset. #4982
      • ADDED: osrm-datastore accepts a new parameter --list to list all datasets loaded into memory. #4982
      • ADDED: osrm-datastore accepts a new parameter --only-metric to only reload the data that can be updated by a weight update (reduces memory for traffic updates). #5002
      • ADDED: osrm-routed accepts a new parameter --dataset-name to select the shared-memory dataset to use. #4982
    • NodeJS:
      • ADDED: OSRM object accepts a new option memory_file that stores the memory in a file on disk. #4881
      • ADDED: OSRM object accepts a new option dataset_name to select the shared-memory dataset. #4982
    • Internals
      • CHANGED: Updated segregated intersection identification #4845 #4968
      • REMOVED: Remove .timestamp file since it was unused #4960
    • Documentation:
      • ADDED: Add documentation about OSM node ids in nearest service response #4436
    • Performance
      • FIXED: Speed up response time when lots of legs exist and geojson is used with steps=true #4936
      • FIXED: Return iterators instead of vectors in datafacade_base functions #4969
    • Misc:
      • ADDED: expose name for datasource annotations as metadata #4973

v5.16.4: - Changes from 5.16.3:

18 Mar 12:18
0a1418c
Compare
Choose a tag to compare
  • Bugfixes:
    • FIXED: Properly calculate annotations for speeds, durations and distances when waypoints are used with mapmatching #4949

OSRM v5.14.2

18 Dec 17:21
Compare
Choose a tag to compare
  • Bugfixes:
    • FIXED #4727: Erroring when a old .core file is present.
    • FIXED #4642: Update checks for EMPTY_NAMEID to check for empty name strings
    • FIXED #4738: Fix potential segmentation fault

OSRM v5.14.1

01 Dec 15:07
Compare
Choose a tag to compare
  • Changes from 5.14.0

    • Bugfixes:
      • FIXED: don't use removed alternative candidates in filterPackedPathsByCellSharing
  • Changes from 5.13

    • API:
      • ADDED: new RouteStep property driving_side that has either "left" or "right" for that step
    • Misc:
      • ADDED: Bundles a rough (please improve!) driving-side GeoJSON file for use with osrm-extract --location-dependent-data data/driving_side.geojson
      • CHANGED: Conditional turn parsing is disabled by default now
      • ADDED: Adds a tool to analyze turn instruction generation in a dataset. Useful for tracking turn-by-turn heuristic changes over time.
      • CHANGED: Internal refactoring of guidance code as a first step towards a re-runnable guidance pipeline
      • ADDED: Now publishing Node 8.x LTS binary modules
    • Profile:
      • CHANGED: Remove dependency on turn types and turn modifier in the process_turn function in the car.lua profile. Guidance instruction types are not used to influence turn penalty anymore so this will break backward compatibility between profile version 3 and 4.
    • Guidance:
      • ADDED: New internal flag on "segregated intersections" - in the future, will should allow collapsing of instructions across complex intersection geometry where humans only perceive a single maneuver
      • CHANGED: Decrease roundabout turn radius threshold from 25m to 15m - adds some "exit the roundabout" instructions for moderately sized roundabouts that were being missed previously
    • Docker:
      • CHANGED: switch to alpine 3.6, and use a multistage build to reduce image size
    • Build:
      • FIX: use LUA_LIBRARY_DIRS to propertly detect Lua on all platforms
    • Docs:
      • FIX: clarify description of roundabout exit instructions
    • Bugfixes:
      • FIXED: Fix bug where merge instructions got the wrong direction modifier (PR #4670)
      • FIXED: Properly use the profile.properties.left_hand_driving property, there was a typo that meant it had no effect
      • FIXED: undefined behaviour when alternative candidate via node is same as source node (#4691)
      • FIXED: ensure libosrm.pc is pushed to the correct location for pkgconfig to find it on all platforms
      • FIXED: don't consider empty names + empty refs as a valid name for u-turns

OSRM v5.13.0

01 Nov 13:51
Compare
Choose a tag to compare

5.13.0

This release has some exciting new features: We know have relation support in the lua profiles, and support using location dependent data. In addition to that we deprecated CoreCH, since MLD is superior.

  • Changes from 5.12:
    • Profile:
      • Append cardinal directions from route relations to ref fields to improve instructions; off by default see profile.cardinal_directions
      • Support of distance weight in foot and bicycle profiles
      • Support of relations processing
      • Added way:get_location_tag(key) method to get location-dependent tags https://github.com/Project-OSRM/osrm-backend/wiki/Using-location-dependent-data-in-profiles
      • Added forward_ref and backward_ref support
      • Left-side driving mode is specified by a local Boolean flag is_left_hand_driving in ExtractionWay and ExtractionTurn
      • Support literal values for maxspeeds in NO, PL and ZA
    • Infrastructure:
      • Lua 5.1 support is removed due to lack of support in sol2 ThePhD/sol2#302
      • Fixed pkg-config version of OSRM
      • Removed .osrm.core file since CoreCH is deprecated now.
    • Tools:
      • Because of boost/program_options#32 with boost 1.65+ we needed to change the behavior of the following flags to not accept ={true|false} anymore:
        • --use-locations-cache=false becomes --disable-location-cache
        • --parse-conditional-restrictions=true becomes --parse-conditional-restrictions
        • The deprecated options --use-level-cache and --generate-edge-lookup
    • Bugfixes:
      • Fixed #4348: Some cases of sliproads pre-processing were broken
      • Fixed #4331: Correctly compute left/right modifiers of forks in case the fork is curved.
      • Fixed #4472: Correctly count the number of lanes using the delimter in turn:lanes tag.
      • Fixed #4214: Multiple runs of osrm-partition lead to crash.
      • Fixed #4348: Fix assorted problems around slip roads.
      • Fixed #4420: A bug that would result in unnecessary instructions, due to problems in suffix/prefix detection
    • Algorithm
      • Deprecate CoreCH functionality. Usage of CoreCH specific options will fall back to using CH with core_factor of 1.0
      • MLD uses a unidirectional Dijkstra for 1-to-N and N-to-1 matrices which yields speedup.

OSRM v5.12.0

04 Oct 17:42
9912b26
Compare
Choose a tag to compare

This release brings some exciting new changes. On the guidance front we now emit additional exit roundabout and exit rotary instructions for roundabouts.
There is now an option to exclude certain road classes at runtime using the exclude= HTTP/Node option. By default we support exclude=motorway, exclude=toll and exclude=ferry in the car.lua profile. Keep in mind that each additional exclude combination impact the pre-processing and memory usage. This option is available both for CH and MLD.

  • Guidance
    • now announcing turning onto oneways at the end of a road (e.g. onto dual carriageways)
    • Adds new instruction types at the exit of roundabouts and rotaries exit roundabout and exit rotary.
  • HTTP:
    • New query parameter for route/table/match/trip plugings:
      exclude= that can be used to exclude certain classes (e.g. exclude=motorway, exclude=toll).
      This is configurable in the profile.
  • NodeJS:
    • New query option exclude for the route/table/match/trip plugins. (e.g. exclude: ["motorway", "toll"])
  • Profile:
    • New property for profile table: excludable that can be used to configure which classes are excludable at query time.
    • New optional property for profile table: classes that allows you to specify which classes you expect to be used.
      We recommend this for better error messages around classes, otherwise the possible class names are infered automatically.
  • Traffic:
    • If traffic data files contain an empty 4th column, they will update edge durations but not modify the edge weight. This is useful for
      updating ETAs returned, without changing route selection (for example, in a distance-based profile with traffic data loaded).
  • Infrastructure:
    • New file .osrm.cell_metrics created by osrm-customize.
  • Debug tiles:
    • Added new properties type and modifier to turns layer, useful for viewing guidance calculated turn types on the map

OSRM v5.11.0

17 Aug 22:14
1cd1d18
Compare
Choose a tag to compare

Fresh off the press is OSRM 5.11.0.

The main new feature in this release is support for conditional turn restrictions that use ways as the via elements. Via-way turn restrictions also now work when there is a traffic-light node on the via way.

There were also a collection of guidance improvements, and several cleanups to the build system (the API docs are now buildable again, we don't crash GCC6, and various Visual Studio problems were corrected).

Full Changelog

OSRM v5.10.0

07 Aug 14:33
eeff4be
Compare
Choose a tag to compare

The v5.10 release comes with a major feature: via-way turn restrictions. These turn restrictions occur in OpenStreetMap in the form of a restriction relation: (fromWayId, viaWayId, toWayId) and prevent multiple specific turns depending on the way the driver is coming from and going to.

Below are some more notable changes. Please note that in the future we plan to speed up the release process to push out stable and tested releases more often.

Give it a try!

osrm-extract berlin.osm.pbf
osrm-partition berlin.osrm
osrm-customize berlin.osrm
osrm-routed --algorithm=MLD berlin.osrm

Features:

  • #2681 - We now handle (from, via, to) way restrictions where from, via and to are ways in addition to (from,via,to) node restrictions we always handled. These turn restrictions prevent turns from a way via a specific way onto a way:
  • #4333 - We now handle Throughabouts:
  • Emil Tin did large-scale profile refactoring work: a new version 2 profile API was added which cleans up a number of things and makes it easier to for profiles to include each other. Profiles using the old version 0 and 1 APIs are still supported.

Full Changelog

OSRM v5.9.0

19 Jul 17:05
Compare
Choose a tag to compare

With the v5.9 release we continue to stabilize our Multi-Level Dijkstra (MLD) pipeline which we introduced in v5.7 allowing for incredibly fast traffic updates while still being able to handle requests in the milliseconds. In addition to feature parity for the Contraction Hierarchies (CH) table plugin in MLD this release implements a brand new alternative routes algorithm which we tailored specifically for MLD making heavy use of its partitioner. We also radically decreased our preprocessing times by partially removing STXXL, without any significant memory increase.
Other great features of this release is the support for exit numbers and user-defined classes in the response.

Give it a try!

osrm-extract berlin.osm.pbf
osrm-partition berlin.osrm
osrm-customize berlin.osrm
osrm-routed --algorithm=MLD berlin.osrm

  • #4202 - Implements the table plugin for MLD. The pull request contains some performance measurements.
  • #3905 and #4047 - Implements multiple alternative routes for MLD: you can now request multiple alternative routes. Please read the issue and pull request for details, images and gifs.
  • #4215 - Implements exit numbers / names. Picks up the junction:ref way tag; adds an exits property to the response's RouteStep. The companion project osrm-tag-rewriter now also re-writes exit numbers / names into junction:ref.
  • #4252 - stxxl (libstxxl-dev) is optional now but still on by default. Disable it via cmake .. -DCMAKE_BUILD_TYPE=Release -DENABLE_STXXL=Off. Processing will then happen in memory which should be fine unless you try to process the planet on your toaster.
  • #4204 and #4290 - Adds a classes property to the response intersection array indicating a road's class. Can be set in the profiles on each way. The use-case for this is flagging a road as a toll, ferry or motorway road class which clients can than pick up from the response.
  • #4260 and #4296 - Deprecates the UseLane instruction which was needed for lane anticipation (guide users in the correct lane for multi-hop steps) before there was an intersection array in the response. Lane anticipation will continue to constrain lanes in the response intersection array but we will no longer emit an extra UseLane instruction. In addition lane anticipation will now trigger based on a distance threshold of some hundreds of meters (depending on numbers of lanes to cross).
  • #4258 - In addition to respecting highway=construction tags we now discard old-style construction=* and proposed=* ways.

Full Changelog

OSRM v5.8.0

21 Jun 07:56
Compare
Choose a tag to compare

The 5.8 release is focused on long overdue memory and disk usage reductions across the board (on the planet roughly: memory 10% decrease, disk 15% decrease). With some minor issues fixed in the guidance engine this release targets stability and benefits on the infrastructure side. Notable additional changes and features are listed below. The full changelog is here.

Give it a try!

osrm-extract berlin.osm.pbf
osrm-partition berlin.osrm
osrm-customize berlin.osrm
osrm-routed --algorithm=MLD berlin.osrm

Infrastructure

  • #4096 - Command-line tools (osrm-extract, osrm-contract, osrm-routed, and others) now return error codes and legible error messages for common problem scenarios. You can find the list of error codes here.
  • #4036 - .osrm.nodes file was renamed to .nbg_nodes and .ebg_nodes was added.

Conditional Turn Restrictions

  • #3841 - Added conditional restriction support with parse-conditional-restrictions=true|false to osrm-extract. This option saves conditional turn restrictions to the .restrictions file for parsing later. Added parse-conditionals-from-now=utc time stamp and --time-zone-file=/path/to/file to osrm-contract.

Profiles

  • #4147 - Speed up pre-processing by only running the Lua node function for nodes that have tags (by default, can be changed). Cuts OSM file parsing time in half.

API

  • #4039 - Adds an approaches parameter to the API. The use-case is to approach a waypoint on the side of the road that deposits or picks up your passenger without needing to cross the road and then continue routing you without issuing a u-turn. Read about it here.
  • #4134 - Adds a polyline6 option to the HTTP API for sending coordinates in the request polyline encoded with a precision of 6.

Full Changelog