Releases: Project-OSRM/osrm-backend
v5.17.0
- 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:
- 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
- ADDED:
- NodeJS:
- Internals
- Documentation:
- ADDED: Add documentation about OSM node ids in nearest service response #4436
- Performance
- Misc:
- ADDED: expose name for datasource annotations as metadata #4973
- Bugfixes:
v5.16.4: - Changes from 5.16.3:
- Bugfixes:
- FIXED: Properly calculate annotations for speeds, durations and distances when waypoints are used with mapmatching #4949
OSRM v5.14.2
OSRM v5.14.1
-
Changes from 5.14.0
- Bugfixes:
- FIXED: don't use removed alternative candidates in
filterPackedPathsByCellSharing
- FIXED: don't use removed alternative candidates in
- Bugfixes:
-
Changes from 5.13
- API:
- ADDED: new RouteStep property
driving_side
that has either "left" or "right" for that step
- ADDED: new RouteStep property
- 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
- ADDED: Bundles a rough (please improve!) driving-side GeoJSON file for use with
- 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.
- CHANGED: Remove dependency on turn types and turn modifier in the process_turn function in the
- 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
- API:
OSRM v5.13.0
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
andbackward_ref
support - Left-side driving mode is specified by a local Boolean flag
is_left_hand_driving
inExtractionWay
andExtractionTurn
- Support literal values for maxspeeds in NO, PL and ZA
- Append cardinal directions from route relations to ref fields to improve instructions; off by default see
- 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
- Because of boost/program_options#32 with boost 1.65+ we needed to change the behavior of the following flags to not accept
- 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.
- Profile:
OSRM v5.12.0
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
andexit 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.
- New query parameter for route/table/match/trip plugings:
- NodeJS:
- New query option
exclude
for the route/table/match/trip plugins. (e.g.exclude: ["motorway", "toll"]
)
- New query option
- 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.
- New property for profile table:
- 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).
- If traffic data files contain an empty 4th column, they will update edge durations but not modify the edge weight. This is useful for
- Infrastructure:
- New file
.osrm.cell_metrics
created byosrm-customize
.
- New file
- Debug tiles:
- Added new properties
type
andmodifier
toturns
layer, useful for viewing guidance calculated turn types on the map
- Added new properties
OSRM v5.11.0
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).
OSRM v5.10.0
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 wherefrom
,via
andto
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.
OSRM v5.9.0
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 anexits
property to the response'sRouteStep
. The companion project osrm-tag-rewriter now also re-writes exit numbers / names intojunction:ref
. - #4252 - stxxl (
libstxxl-dev
) is optional now but still on by default. Disable it viacmake .. -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 extraUseLane
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-styleconstruction=*
andproposed=*
ways.
OSRM v5.8.0
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
toosrm-extract
. This option saves conditional turn restrictions to the.restrictions
file for parsing later. Addedparse-conditionals-from-now=utc time stamp
and--time-zone-file=/path/to/file
toosrm-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.