Skip to content
Tags give the ability to mark specific points in history as being important
  • v5.2.0
    Release 5.2.0
    
    Changes form 5.2.0 RC2
     - Bugfixes:
       - Fixed crash when loading shared memory caused by invalid OSM IDs segment size.
       - Various small instructions handling fixes
    
    Changes from 5.1.0
     - API:
       - new parameter `annotations` for `route`, `trip` and `match` requests.  Returns additional data about each
         coordinate along the selected/matched route line per `RouteLeg`:
           - duration of each segment
           - distance of each segment
           - OSM node ids of all segment endpoints
       - Introducing Intersections for Route Steps. This changes the API format in multiple ways.
           - `bearing_before`/`bearing_after` of `StepManeuver` are now deprecated and will be removed in the next major release
           - `location` of `StepManeuvers` is now deprecated and will be removed in the next major release
           - every `RouteStep` now has property `intersections` containing a list of `Intersection` objects.
       - Support for destination signs. New member `destinations` in `RouteStep`, based on `destination` and `destination:ref`
       - Support for name pronunciations. New member `pronunciation` in `RouteStep`, based on `name:pronunciation`
    
     - Profile changes:
       - duration parser now accepts P[n]DT[n]H[n]M[n]S, P[n]W, PTHHMMSS and PTHH:MM:SS ISO8601 formats.
       - `result.destinations` allows you to set a way's destinations
       - `result.pronunciation` allows you to set way name pronunciations
       - `highway=motorway_link` no longer implies `oneway` as per the OSM Wiki
    
     - Infrastructure:
       - BREAKING: Changed the on-disk encoding of the StaticRTree to reduce ramIndex file size. This breaks the **data format**
       - BREAKING: Intersection Classification adds a new file to the mix (osrm.icd). This breaks the fileformat for older versions.
       - Better support for osrm-routed binary upgrade on the fly [UNIX specific]:
         - Open sockets with SO_REUSEPORT to allow multiple osrm-routed processes serving requests from the same port.
         - Add SIGNAL_PARENT_WHEN_READY environment variable to enable osrm-routed signal its parent with USR1 when it's running and waiting for requests.
       - Disable http access logging via DISABLE_ACCESS_LOGGING environment variable.
    
     - Guidance:
       - BREAKING: modifies the file format with new internal identifiers
       - improved detection of turning streets, not reporting new-name in wrong situations
       - improved handling of sliproads (emit turns instead of 'take the ramp')
       - improved collapsing of instructions. Some 'new name' instructions will be suppressed if they are without alternative and the segment is short
    
     - Bugfixes
       - fixed broken summaries for very short routes
  • v5.2.0-rc.2
    OSRM v5.2.0-rc.2
  • v5.2.0-rc.1
    Changes from 5.1.0
    
    - API:
     - new parameter `annotate` for `route` and `match` requests.  Returns additional data about each
       coordinate along the selected/matched route line.
     - Introducing Intersections for Route Steps. This changes the API format in multiple ways.
         - `bearing_before`/`bearing_after` of `StepManeuver` are now deprecated and will be removed in the next major release
         - `location` of `StepManeuvers` is now deprecated and will be removed in the next major release
         - every `RouteStep` now has property `intersections` containing a list of `Intersection` objects.
    
    - Profile changes:
     - duration parser now accepts P[n]DT[n]H[n]M[n]S, P[n]W, PTHHMMSS and PTHH:MM:SS ISO8601 formats.
    
    - Infrastructure:
     - Better support for osrm-routed binary upgrade on the fly [UNIX specific]:
       - Open sockets with SO_REUSEPORT to allow multiple osrm-routed processes serving requests from the same port.
       - Add SIGNAL_PARENT_WHEN_READY environment variable to enable osrm-routed signal its parent with USR1 when it's running and waiting for requests.
     - BREAKING: Intersection Classification adds a new file to the mix (osrm.icd). This breaks the fileformat for older versions.
     - Disable http access logging via DISABLE_ACCESS_LOGGING environment
       variable.
    
    - Guidance:
     - improved detection of turning streets, not reporting new-name in wrong situations
  • v5.1.0
    Release OSRM 5.1.0
    
    Changes with regard to 5.0.0
    - API:
      - added StepManeuver type `roundabout turn`. The type indicates a small roundabout that is treated as an intersection
         (turn right at the roundabout for first exit, go straight at the roundabout...)
      - added StepManeuver type `on ramp` and `off ramp` to distinguish between ramps that enter and exit a highway.
      - reduced new name instructions for trivial changes
      - combined multiple turns into a single instruction at segregated roads`
    
    - Profile Changes:
     - introduced a suffix_list / get_name_suffix_list to specify name suffices to be suppressed in name change announcements
     - street names are now consistently assembled for the car, bike and walk profile as: "Name (Ref)" as in "Berlin (A5)"
     - new `car.lua` dependency `lib/destination.lua`
     - register a way's .nodes() function for use in the profile's way_function.
    
    - Infrastructure
     - BREAKING: reordered internal instruction types. This breaks the **data format**
     - BREAKING: Changed the on-disk encoding of the StaticRTree for better performance. This breaks the **data format**
    
    - Fixes:
     - Issue #2310: post-processing for local paths, fixes #2310
     - Issue #2309: local path looping, fixes #2309
     - Issue #2356: Make hint values optional
     - Issue #2349: Segmentation fault in some requests
     - Issue #2335: map matching was using shortest path with uturns disabled
     - Issue #2193: Fix syntax error position indicators in parameters queries
     - Fix search with u-turn
     - PhantomNode packing in MSVC now the same on other platforms
     - Summary is now not malformed when including unnamed roads
     - Emit new-name on when changing fron unanmed road to named road
  • v5.1.0-rc.2
    Release OSRM 5.1.0 RC2
    
    This includes the StaticRTree improvements and breaks the data format to RC1.
  • v5.1.0-rc.1
    Release 5.1.0 RC 1
    
    Changes with regard to 5.0.0
    
       - API:
         - added StepManeuver type `roundabout turn`. The type indicates a small roundabout that is treated as an intersection
            (turn right at the roundabout for first exit, go straight at the roundabout...)
         - added StepManeuver type `on ramp` and `off ramp` to distinguish between ramps that enter and exit a highway.
         - reduced new name instructions for trivial changes
         - combined multiple turns into a single instruction at segregated roads`
    
       - Profile Changes:
        - introduced a suffix_list / get_name_suffix_list to specify name suffices to be suppressed in name change announcements
        - street names are now consistently assembled for the car, bike and walk profile as: "Name (Ref)" as in "Berlin (A5)"
        - new `car.lua` dependency `lib/destination.lua`
        - register a way's .nodes() function for use in the profile's way_function.
    
       - Infrastructure
        - BREAKING: reordered internal instruction types. This breaks the **data format**
    
       - Fixes:
        - Issue #2310: post-processing for local paths, fixes #2310
        - Issue #2309: local path looping, fixes #2309
        - Issue #2356: Make hint values optional
        - Issue #2349: Segmentation fault in some requests
        - Issue #2335: map matching was using shortest path with uturns disabled
        - Issue #2193: Fix syntax error position indicators in parameters queries
        - Fix search with u-turn
        - PhantomNode packing in MSVC now the same on other platforms
        - Summary is now not malformed when including unnamed roads
        - Emit new-name on when changing fron unanmed road to named road
  • v5.0.0
    807aa71a · Merge branch 'develop' ·
    OSRM Release 5.0.0
    
    Changes with regard 5.0.0 RC2:
    - API:
     - if `geometry=geojson` is passed the resulting geometry can be a LineString or Point
       depending on how many coordinates are present.
     - the removal of the summary field was revered. for `steps=flase` the field will always be an empty string.
    
    Changes with regard to 4.9.1:
    - API:
     - BREAKING: Complete rewrite of the HTTP and library API. See detailed documentation in the wiki.
     - BREAKING: The default coordinate order is now `longitude, latidue`. Exception: Polyline geometry
         which follow the original Google specification of `latitdue, longitude`.
     - BREAKING: Polyline geometries now use precision 5, instead of previously 6
     - BREAKING: Removed GPX support
     - New service `tile` which serves debug vector tiles of the road network
     - Completely new engine for guidance generation:
        - Support for highway ramps
        - Support for different intersection types (end of street, forks, merges)
        - Instruction post-processing to merge unimportant instructions
        - Improved handling of roundabouts
    
    - Tools:
     - BREAKING: Renamed osrm-prepare to osrm-contract
     - BREAKING: Removes profiles from osrm-contract, only needed in osrm-extract.
     - Abort processing in osrm-extract if there are no snappable edges remaining.
     - Added .properties file to osrm-extract ouput.
     - Enables the use of multiple segment-speed-files on the osrm-contract command line
    
    - Profile changes:
     - Remove movable bridge mode
     - Add `maxspeed=none` tag to car profile.
     - A `side_road` tag support for the OSRM car profile.
    
    - Fixes:
     - Issue #2150: Prevents routing over delivery ways and nodes
     - Issue #1972: Provide uninstall target
     - Issue #2072: Disable alternatives by default and if core factor < 1.0
     - Issue #1999: Fix unpacking for self-loop nodes not in core.
    
    - Infrastructure:
     - Cucumber test suit is now based on cucumber-js, removes Ruby as dependency
     - Updated to mapbox/variant v1.1
     - Updated to libosmium v2.6.1
     - Remove GeoJSON based debugging output, replaced by debug tiles
  • v5.0.0-rc.2
    d01b34f5 · Forgot changelog entry ·
    Changes to 5.0.0 RC1:
    - Profiles:
       - `properties.allow_uturns_at_via` -> `properties.continue_straight_at_waypoint` (value is inverted!)
    - API:
       - Removed summary from legs property
       - Disable steps and alternatives by default
       - Fix `code` field: 'ok' -> 'Ok'
       - Allow 4.json and 4.3.json format
       - Conform to v5 spec and support "unlimited" as radiuses value.
       - `uturns` parameter was replaced by `continue_straight` (value is inverted!)
    - Features:
       - Report progress for gennerating edge expanded edges in the edge based graph factory
       - Add maxspeed=none tag to car profile.
       - Optimize StaticRTree code: speedup 2x (to RC1)
       - Optimize DouglasPeucker code: speedup 10x (to RC1)
       - Optimize WebMercator projection: speedup 2x (to RC1)
    - Bug fixes:
       - issue 2195: Resolves issues with multiple includedirs in pkg-config file
       - issue 2219: Internal server error when using the match plugin
       - issue 2027: basename -> filename
       - issue 2168: Report correct position where parsing failed
       - issue 2036: Add license to storage and storage config exposed in public API
       - Fix uturn detection in match plugin
       - Add missing -lz to fix linking of server-tests
  • v4.9.1
    Release bug fix release v4.9.1
    
    Fixes the following critical bugs:
    - #1850: Crash in trip service when specifing two coodinates
    - #1908: Inconsistent instructions format in last instruction
    - #1888: Race condition when running `osrm-datastore`
    - #1896: U-Turn error in one-way streets
  • v4.9.0
    a2e114e8 · Merge branch 'develop' ·
    4.9.0 Changelog
    
    API changes:
    - BREAKING: Changed response code for ok to `200`
    - BREAKING: Fix off-by-one in via_indices (was one index too high)
    - BREAKING: Removed `osrm/server_path.hpp`
    - Add max value for viaroute and trip to osrm-routed. Default: 500 for viaroute and 100 for trip
    - Allow POST request without POST data
    - Add response code 208 for no segment found (important for bearing filter)
    - New temporary file `.level` created by osrm-prepare (see level caching)
    - New temporary file `.edge_segment_lookup` and `.edge_penalties` created by `osrm-extract` if passing the `--generate-edge-lookup` options.
    - API grammar got more strict to discard invalid requests faster. Options like `hint`, `u` and `b` now need to follow directly after a `loc` (or `src` and `dst`). Example: `&loc=..&u=true&b=0,10&loc=...&u=false&loc=...`. The following is illegal: `&loc=..&loc=..&loc=...&b=0,10&u=true&u=false`.
    - Pre-turn bearing is now available in the `route_instructions` array as last field
    - Remove short option name `-m` from `osrm-routed` as it conflicted
    - New option `--segment-speed-file` for `osrm-prepare`. CSV file using `from_osm_id;to_osm_id;edge_value`.
    
    Bug fixes:
    - Support 64bit OSM node ids
    - Fixed u-turn penalty, value from lua profiles was not used
    - Fix street name corruption for large datasets
    - Properly initialize UUID used in Fingerprint class.  Fixes #1721
    
    Maintenance:
    - Rewrite nearest neighbor search code
    - Rewrite via-route search and fix multiple related bugs
    - Add test for small component snapping
    - Update variant library which fixes GCC 5.1.2 compile errors
    - Silence warnings with GCC, LTO does not yet respect the -isystem switch
    - Use ccache by default if available and a suitable compiler is used.
    - Switch Travis builds over to trusty for Linux
    - Fix pkgconfig cmake template
    
    Features:
    - Support general nxm queries to table query (thanks to @fab-girard) `loc`, `dst`, `src` parameters
    - Add edge update step to `osrm-prepare`. Enables fast edge weight updates
    - Add level caching `--level-cache` for `osrm-prepare`. This allows to speed up consecutive runs of `osrm-prepare` **on the same dataset** (only edge weights updates allowed).
    - Small component size is now configurable over parameter for `osrm-routed`
    - Support adding bearing filtering. Use `b=BEARING,RANGE`
    - Add support for advisory speed limits
    - Add duration and distance fields to `match` response
    - Human-readable error messages for out of memory
    - Include (road) name of matched nodes in addition to coordinate.
    - Add `is_startpoint` property to `result` ways in the lua profiles. Determines if a way can be a start point for a route (e.g. is set to `false` for ferry ways).
  • v4.8.1.rect
  • v4.8.1
    8f6fc014 · Merge branch 'develop' ·
    Fix regression in v4.8.0
    
    The format of `alternative_instructions` broke in v4.8.0.
    The depth of the error was accidentally reduced by one level.
  • v4.8.0
    6ad1cd3f · Merge branch 'develop' ·
    Feature highlights:
    - Add `trip` plugin for TSP computation
    - Implement raster source feature to read data (currently only .asc) from third-party sources, to be used in lua profiles.
    - Instructions are now returned in match plugin (thanks to Andreas Gruß)
    - Partial contraction support, new file .core
    - Update to libosmium 2.3.0
    - Remove protobuf dependencies (libosmium ships with an own minimal decoder)
    - Parse specific restriction:* tags based on profile exceptions
    - Make an exception for block barriers in bicycle and foot profile.
    - Make pedestrian roads marked as destination routable with car profile.
    - Make map matching more resilient against low sample rates
    - Enable turn penalties on car profile, using values tuned by comparing real-world sample routes with map-matched routes.
    - Add rising bollard exception to barriers for car profile.
    
    Bug fixes:
    - Fix race condition in osrm-routed
    - Fix processing for data files with incorrect node references
    - Fix postgis lua example
    - gps_precision and matching_beta can be used as a float value
    - Fix typo in foot profile that removed traffic lights
    - SCC search is now run on edge-expanded graph
    - Fix off-by one error in hint decoder and make padding deterministic.
  • v4.7.1
    4ec323c5 · Merge commit '9958937f' ·
    Release v4.7.1
  • v4.7.0
    300d9016 · Merge branch 'develop' ·
    This release mostly brings bug fixes and profile changes.
    
    Some highlights:
    
    * Fixed filetype checks for input data
    * Add penalty if there is only one lane for both directions
    * Fix tag misspellings in profiles + tests: forestry, pebblestone
    * Server supports POST requests
    * Don't remove small segments at start/begin if they are vias
    * `locs` parameter added that accepts via coordinates as polyline
    * Deduplicate edges in contractor correctly and add better graph validation.
    * Add running tracks to foot profile
    * Use 'name (ref)' for way names if both are present
    * Content Type validation added
    * Update bicycle profile to ignore crossing nodes
    * Fixed #1424 and all related bugs.
    * Fixed Coverity issues
    * Refactor ProcessingChain by splitting into sub functions
    * Refactor ExtractionContainers by splitting into sub functions
    * Return error message when lua error occurs.
    * Cleanup the default profiles (formating, style, removed duplicate code)
    * Follow symlinks to profiles
    * Use distance based search radius for coordinates (limited to 1100m)
  • v4.6.1
    fd6daa58 · Merge branch 'develop' ·
    Bug fix release.
    
    The default behaviour of OSRM if no data paths are given should be to use
    shared memory. This fixes a crash in the node bindings when using shared memory.
  • v4.6.0
    c2fc47df · Merge branch 'develop' ·
    The biggest addition in this release is the map matching plugin.
    
    Please note that the library interface changed! The naming convention of the
    headers now follows the new style guidelines for the rest of OSRM.
    
    Some highlights:
    
    - Library includes now follow the new style convention
    - Library interface now uses the internal JSON object
    - Add map matching plugin
    - way id, node id and node location available thru Lua bindings
    - traffic signal penalty ignored on white-listed barriers, cf. #1365
    - fix escaping of double quote in JSON response, fixes #1410 and also adds a unit test for that case.
    - Add test for building as shared library
    - fix incorrect behavior when via point was on same one-way street as destination but should have been reached before, closes #1424
    - fix rounding error/uncertainty on some systems
    - implement ISO 8601 durations parsing, cf. #1399
    - use CRTP instead of virtual functions in routing plugins
    - add movable bridge support to the car profile. Implements #1399
    - Allow CORS requests in osrm-routed.
    - check if stxxl compiles with or without libgomp, fixes #1361
    - speed up nearest neighbor query by pruning, move coordinate calculations away from library interface
    - Add regression test for FixedpointCoordinate
    - remove copy of libosmium, to be replaced by a subtree
    - use static graph for component exploration, closes #1288
    - Move server configuration from method parameter to a struct
    - Add a commande line option to osrm-routed for max locations supported in distance table query
  • v4.5.0
    725b93a9 · Merge branch 'develop' ·
    First of all, we are using the great libosmium[2] for parsing OSM data files now. It's developed by Jochen Topf and we have been impressed with the speed and reliability of the code. Thus, we retired our own parsing code. Expect a speedup when parsing files!
    
    Please note that this is a breaking change if you have been using custom speed profiles with your OSRM installation. If you have any questions or concerns porting your speed profile, please don't hesitate to get in contact.
    
    This is the shortened change log:
    
    - implement parsing thru libosmium
    - reimplemented incremental nearest neighbor query
    - nearest neighbor is chosen from nearest small and big component
    - updated cucumber tests
    - refactored SCC traversal code, same interface as BFS components code
    - move application logic, i.e. shape file generation, from SCC traversal class to calling tool code
    - enable gcc color output when available
    - continued stream-lining of source files to remove camel case
    - fixed a number of unintended implicit un/signed casts
    - fixed a number of of old-style casts
    - reformatted code of phantom node c'tor for legibility
    - add better checks for forbidden routes
    - made implementation of restriction map independent of graph type
    - replace insecure std::rand by C++11's random number generation
    - fix coverity issue 1258907 Division or modulo by float zero
    - use JSON container to hold all intermediate results:
    - fix #1255 assume lift gates are passable
  • v0.4.4
  • v4.4.0
    d42772a2 · bump variant dependency ·
    - Merge pull request #889 from Project-OSRM/experimental/cuke_datastore
    - change of travel_mode is now indicated, ie. ferries, shuttle trains, etc.
    - update car and foot profiles, add ferry mode
    - support for maxspeed tags in the form of 'countrycode:zone type' for car profile
    - support way surface, tracktype, smoothness tags in car profile
    - ability to get multiple points from /nearest by using num_results argument
    - use double precision floating point math to fix some rounding issues
    - fixed a number of bugs in the compressed graph format
    - use smarter caching in the test suite, speeds up re-runs.
    - remove compile-time time stamps for less rebuilds
    - replace boost::variant w/ mapbox::util::variant
    - tighter C++11 integration
    - enable partitioning on link-time optimization, good riddance GCC 4.7
    - better checking for luabind compilation, fixes some OSX woes
    - use object libraries in cmake
    
    Potentially breaking changes:
    - removed remaining GCC 4.7 support
    - the server API has changed to include travel mode
    - bumped minimum CMake to 2.8.8