π OSRM V6.0.0 is here! This major release introduces exciting new features and improvements:
- Obstacle Support: Generic support for obstacles enhances routing flexibility.
- Pedestrian Routing: Routes now include highways marked as platforms.
- Performance Boosts: Micro-optimizations improve API performance across Route, Table, Trip, and Match.
- Modernized Build System: Upgraded to Clang 15, Conan 2.x, and Debian Bookworm for better compatibility.
- NodeJS Updates: Transitioned to Node-API, dropping support for older Node versions.
- Enhanced Testing: Comprehensive CI updates and new unit tests ensure reliability.
- Optimized Codebase: Reduced dependencies and improved memory efficiency.
What's Changed
- Fix bindings compilation on latest Node by @SiarheiFedartsou in #6416
- Fix annotations=true handling in NodeJS bindings & libosrm by @SiarheiFedartsou in #6415
- Handle snapping parameter for all plugins in NodeJs bindings, but not for Route only by @SiarheiFedartsou in #6417
- Fix adding traffic signal penalties during compression by @mjjbell in #6419
- Update actions/cache to v3 by @SiarheiFedartsou in #6420
- Add link to Discord server by @SiarheiFedartsou in #6422
- Make edge metrics strongly typed by @mjjbell in #6421
- Fix typo historgram -> histogram by @DennisOSRM in #6427
- Replace boost::unordered_{map/set} with std, also remove code duplication by @DennisOSRM in #6429
- Delete CloudFormation templates by @SiarheiFedartsou in #6435
- Drop support of Node 12 & 14 by @SiarheiFedartsou in #6431
- Fix
npm audit
warnings in NPM package by @SiarheiFedartsou in #6437 - Apply workaround for Conan installation issue on CI by @SiarheiFedartsou in #6442
- Upgrade check_taginfo.py to Python3 by @DennisOSRM in #6441
- Drop GCC7 support by @DennisOSRM in #6445
- Remove C++14 references from README and package.json by @SiarheiFedartsou in #6438
- Replace boost::string_ref with std::string_view by @DennisOSRM in #6433
- Get rid of unused functions in util/json_util.hpp by @SiarheiFedartsou in #6446
- Car profile, add new specific country speed limit by @frodrigo in #6443
- Upgrade to clang-tidy 15 by @SiarheiFedartsou in #6439
- Remove at:urban maxspeed, partial revert by @frodrigo in #6450
- Use node-api instead of NAN by @SiarheiFedartsou in #6452
- Use <boost/iterator/function_output_iterator.hpp> instead of deprecated <boost/function_output_iterator.hpp> by @SiarheiFedartsou in #6458
- Add CI job which builds OSRM with gcc 12 by @SiarheiFedartsou in #6455
- Move vector in CSVFilesParser instead copying it by @SiarheiFedartsou in #6470
- [CPP17] Modernize: Replace typedef with using statements by @DennisOSRM in #6444
- Less dependencies by inner sourcing cheap-ruler by @DennisOSRM in #6478
- Fix CMake warning by @DennisOSRM in #6479
- Update CMakeLists by @DennisOSRM in #6477
- Nested namespace by @DennisOSRM in #6480
- fix typo by @SamuelBrucksch in #6491
- Fix boost header deprecation warning by @jeremiahpslewis in #6515
- Fixed typo and grammatical mistakes in developing.md by @prrajput1199 in #6520
- Update Docker commands in README to also output error in case of failure by @SiarheiFedartsou in #6529
- fix(json_render): json_render is not accurate enough for extremely sm⦠by @Rejudge-F in #6531
- Fixed typo in profiles.md by @prrajput1199 in #6538
- Fixing discord link by @patrick-fitzgerald in #6536
- Fix typo in api.md by @prrajput1199 in #6567
- Move TarjanSCC from extractor to util by @97littleleaf11 in #6562
- fix oneway handling in get_forward_backward_by_key by @SamuelBrucksch in #6569
- Addressing grammatical nits and fixing typo in testing.md by @prrajput1199 in #6550
- print tracebacks and line numbers for Lua runtime errors by @mattwigway in #6564
- Add support for a default_radius flag by @whytro in #6575
- keep libosrm* by @nilsnolde in #6602
- Added block_counter variable to a preprocessor check, minor bug. by @AlTimofeyev in #6596
- Allow -1.0 as unlimited for default_radius value by @whytro in #6599
- Fix build with GCC 13 by @lliehu in #6632
- Fix building on OpenBSD by @brad0 in #6637
- Corrected README with 'echo' command by @debarshikundu in #6638
- Minor fixes by @mjjbell in #6655
- Add 'load directly' mode to default Cucumber test suite by @mjjbell in #6664
- Add support for disabling feature datasets by @mjjbell in #6666
- Fix operator overload on RouteParameters by @whytro in #6646
- Don't route on proposed ways by @lliehu in #6615
- add keepalive_timeout flag by @fenwuyaoji in #6674
- Install data directory (geojson files) like the profiles directory by @frodrigo in #6699
- Added motorway speed limits for Bulgaria (original fix by pl71) by @frodrigo in #6698
- Fix commands in README to properly use echo when needed by @SiarheiFedartsou in #6547
- Switch to api.openstreetmap.org API host by @danieldegroot2 in #6713
- Fix some compilation issues on modern macOS systems by @danpat in #6709
- Pin Conan revisions correctly by @mjjbell in #6828
- Update osrm-backend-docker link to point to github hosted repo by @dspasojevic in #6831
- Delete .github/ISSUE_TEMPLATE/question.md by @mjjbell in #6827
- Set Maxspeed for Philippines by @frodrigo in #6776
- Fix a bug caused by support OSM traffic signal directions by @GitBenjamin in #6724
- Remove unused AWS SDK for JavaScript v2 by @trivikr in #6730
- Replace deprecated std::is_pod by @nyllet in #6717
- Extract prerelease/build information from package semver by @mjjbell in #6839
- Increment feature id in tile speed layer by @datwelk in #6726
- Fix manuever overrides finding bug by @rezashokry in #6739
- Add support for opposite approach request parameter by @mjjbell in #6842
- pass flags into process_segment by @mattwigway in #6658
- Drop support for NodeJS <= v16 by @DennisOSRM in #6857
- Remove outdated/deprecated CMake policy by @DennisOSRM in #6854
- Remove force-loop checks for routes with u-turns by @mjjbell in #6858
- Upgrade clang-format to version 15 by @DennisOSRM in #6859
- Remove stale AppVeyor files by @DennisOSRM in #6860
- Set Windows build to quiet by @DennisOSRM in #6862
- Upgrade clang compiler in CI builds by @DennisOSRM in #6861
- Remove include that breaks compilation for Boost v1.85.0 by @DennisOSRM in #6856
- Remove dead code modernization script by @DennisOSRM in #6863
- Upgrade fmt dependency to v10.2.1 by @DennisOSRM in #6869
- Update vendored vtzero dependency to v1.1.0 by @DennisOSRM in #6871
- Configure GitHub Actions concurrency by @SiarheiFedartsou in #6870
- Use M1 runner to build arm64 macOS builds by @SiarheiFedartsou in #6868
- Remove dead code branches by @DennisOSRM in #6875
- Migrate GCC CI jobs to run on GCC 11, 12, and 13 by @DennisOSRM in #6865
- Clarify use of forcing routing steps by @mjjbell in #6866
- Update Makefile: fix typo by @DennisOSRM in #6878
- Optimise path distance calculation in MLD map matching by @SiarheiFedartsou in #6876
- Replace dead link with archive.org link by @louwers in #6882
- Add benchmarks comparison job by @SiarheiFedartsou in #6880
- Fix failing gcc-13 based CI jobs by @SiarheiFedartsou in #6886
- Fix benchmark script for the case if PR has empty description by @SiarheiFedartsou in #6887
- Improve map matching benchmark by @SiarheiFedartsou in #6885
- Optimise R-tree queries in the case of map matching by @SiarheiFedartsou in #6881
- Replace boost::optional with std::optional by @mugr1x in #6611
- Add benchmark for route by @SiarheiFedartsou in #6890
- Replace boost::hash by std::hash by @DennisOSRM in #6892
- Upgrade CI actions to latest versions by @DennisOSRM in #6893
- Avoid copy of std::function-based callback in path unpacking by @DennisOSRM in #6895
- Remove outdated warnings by @DennisOSRM in #6894
- Optimise getNetworkDistance in MLD even more by @SiarheiFedartsou in #6884
- Replace GCC-specific attribute with [[nodiscard]] attribute by @DennisOSRM in #6899
- Bump mapbox/variant to version 1.2.0 by @SiarheiFedartsou in #6898
- Remove dead CRC32 processor code by @DennisOSRM in #6900
- Remove superflous iostreams include from header files by @DennisOSRM in #6901
- Use C++20 by @SiarheiFedartsou in #6877
- Use the latest Debian version in Dockerfile by @SiarheiFedartsou in #6904
- Bump rapidjson version by @SiarheiFedartsou in #6906
- Fix performance-type-promotion-in-math-fn clang-tidy warning by @SiarheiFedartsou in #6908
- Enable readability-container-contains clang-tidy check by @SiarheiFedartsou in #6909
- Add CI job with GCC 14 by @SiarheiFedartsou in #6905
- Fix CCache usage in GitHub Actions by @SiarheiFedartsou in #6911
- Use std::variant instead of mapbox::util::variant by @SiarheiFedartsou in #6903
- Move Sol2 to canonical path by @DennisOSRM in #6912
- Remove unused header file by @DennisOSRM in #6913
- Make constants in PackedVector constexpr by @SiarheiFedartsou in #6917
- Remove all core-CH left-overs by @DennisOSRM in #6920
- Get rid of boost::math::constants::* and M_PI in favor of std::numbers by @SiarheiFedartsou in #6916
- Use std::string_view::starts_with instead of boost::starts_with by @SiarheiFedartsou in #6918
- Use custom struct instead of std::pair in QueryHeap by @SiarheiFedartsou in #6921
- Use Lemire's fast check whether to escape a JSON string by @DennisOSRM in #6923
- Implement end to end benchmark by @SiarheiFedartsou in #6910
- Add simple benchmarks for osrm-* tools by @SiarheiFedartsou in #6925
- Upgrade to clang-tidy 18 by @SiarheiFedartsou in #6919
- Fix performance-noexcept-swap clang-tidy warning by @SiarheiFedartsou in #6931
- Fix performance-noexcept-move-constructor clang-tidy warning by @SiarheiFedartsou in #6933
- Fix bugprone-unused-return-value clang-tidy warning by @SiarheiFedartsou in #6934
- Make e2e benchmarks more stable by @SiarheiFedartsou in #6927
- Fix Windows CI: update conan.cmake and disable unit tests as temporary workaround for OOM issues by @SiarheiFedartsou in #6930
- Add new randomized benchmarks by @SiarheiFedartsou in #6929
- Avoid copy of vectors in MakeRoute function by @SiarheiFedartsou in #6939
- Use std::unordered_map::emplace instead of operator[] when producing JSONs by @SiarheiFedartsou in #6936
- Avoid copy of intersection in totalTurnAngle by @SiarheiFedartsou in #6938
- Apply micro-optimisation for Nearest API by @SiarheiFedartsou in #6944
- Apply micro-optimisation for Match API by @SiarheiFedartsou in #6945
- Apply micro-optimisation for Route API by @SiarheiFedartsou in #6948
- Apply micro-optimisation for Table & Trip APIs by @SiarheiFedartsou in #6949
- Bump versions of TBB, Expat and Lua installed via Conan by @SiarheiFedartsou in #6957
- add alpine dockerfile by @knowname in #6958
- Docker GitHub workflow by @knowname in #6959
- Replace boost::filesystem with std by @DennisOSRM in #6432
- Configure stale bot by @SiarheiFedartsou in #6963
- Get rid of unused Boost dependencies by @SiarheiFedartsou in #6960
- Calculate confidence interval for benchmark measurements by @SiarheiFedartsou in #6950
- Avoid reallocations in base64 encoding by @SiarheiFedartsou in #6951
- Optimise encodePolyline function by @SiarheiFedartsou in #6940
- Use tmpfs for running benchmarks by @SiarheiFedartsou in #6966
- Re-use priority queue in StaticRTree by @SiarheiFedartsou in #6952
- Fix calculation of best ops/sec in benchmarks by @SiarheiFedartsou in #6973
- Micro performance optimisation in map matching by @SiarheiFedartsou in #6976
- Use struct instead of tuple to define UnpackedPath by @SiarheiFedartsou in #6974
- Use Link Time Optimisation whenever possible by @SiarheiFedartsou in #6967
- Get rid of boost::optional leftovers by @SiarheiFedartsou in #6977
- Use clang 18/17/16 instead of 15/14/13 by @SiarheiFedartsou in #6978
- Increase number of GitHub operations allowed in stale bot by @SiarheiFedartsou in #6985
- Do not trigger stale bot on each PR by @SiarheiFedartsou in #6986
- Add .reserve(...) to assembleGeometry function by @SiarheiFedartsou in #6983
- Add NOTE: label to comment in stale.yml by @SiarheiFedartsou in #6987
- Remove corech options, redundant tests by @DennisOSRM in #6989
- Bump flatbuffers to v24.3.25 version by @SiarheiFedartsou in #6968
- Remove unused MapStorage and GenerationArrayStorage by @SiarheiFedartsou in #6990
- Use thread_local instead of boost::thread_specific_ptr by @SiarheiFedartsou in #6991
- Fix parsing on feature files on other gherkin parser by @DennisOSRM in #6992
- Route pedestrians over highway=platform by @DennisOSRM in #6993
- Move flatbuffers non-generated files back to include/engine/api/flatbuffers/ by @SiarheiFedartsou in #6996
- Measure peak RAM in benchmarks by @SiarheiFedartsou in #6995
- Add NodeJs bindings benchmarks by @SiarheiFedartsou in #7004
- Configure self-hosted runner for benchmarks job by @SiarheiFedartsou in #6975
- Remove unused middle_nodes_table vector by @SiarheiFedartsou in #7012
- Add std::vector<...>::reserve in ContiguousInternalMemoryDataFacadeBase::GetOverridesThatStartAt by @SiarheiFedartsou in #7024
- Use std::countl_zero instead of __builtin_clz by @SiarheiFedartsou in #7025
- Use std::popcount instead of __builtin_popcount by @SiarheiFedartsou in #7026
- Bump osmium to version 2.20.0 by @SiarheiFedartsou in #6997
- Bump version of protozero to 1.7.1 by @SiarheiFedartsou in #6999
- Add optional support of cargo bike exclusion and width to bicyle profile by @frodrigo in #7044
- Remove unused bearing::get function by @SiarheiFedartsou in #7040
- Use std::string_view for key type in json::Object by @SiarheiFedartsou in #7062
- Use libtbb-dev/libtbb12 packages in Dockerfile-debian, sort packages alphabetically in both Dockerfiles by @afarber in #7095
- Fix no member named 'construct' in 'optional<type-parameter-0-0 &>' error in sol.hpp with Clang 19 by @afarber in #7098
- Correct Docker FromAsCasing warning by @mattrobmattrob in #7064
- Fix CI build (Boost not found) by @DennisOSRM in #7115
- Update PL speed limits by @Dawid2849 in #7079
- Fix compilation with upcoming Boost 1.87.0 by @cho-m in #7073
- fix: Segfault in
UnresolvedManeuverOverride::Turns()
on Australia extracts by @kinkard in #7112 - Use std::ranges::subrange instead of boost::iterator_range by @SiarheiFedartsou in #7001
- Use custom d-ary heap implementation by @SiarheiFedartsou in #7017
- Migrate to Conan 2.x by @SiarheiFedartsou in #7042
- chore: Remove unused C++ headers by @kinkard in #7105
- Fix call to way:id() in PostGIS profile example by @tumik in #6745
- add note of extraction time to README.md by @kklot in #6630
- Simplify CMakeLists.txt by @DennisOSRM in #6988
- Disable flaky unit test by @DennisOSRM in #7119
- Switch Windows build to Windows 2025 service instance by @DennisOSRM in #7118
- Remove unused files from Travis CI by @DennisOSRM in #7120
- Remove unused codecov integration by @DennisOSRM in #7122
- Refactor some boost code to std code by @DennisOSRM in #7123
- Upgrade compiler and node versions by @DennisOSRM in #7121
- Update windows-deps.md by @DennisOSRM in #7124
- Grand Unified Obstacle Treatment by @MarcelloPerathoner in #7130
- Bump version to 6.0-RC1 by @DennisOSRM in #7132
- Docker build by @DennisOSRM in #7134
- Fix compiltion on arm64/Linux docker build by @DennisOSRM in #7136
- Back to installing header files and lib by @jcoupey in #7140
- osrm-extract: change recommended pipeline info text by @arnesetzer in #7035
- Shepherd PR #6677 by @DennisOSRM in #7141
- bug-fix: invalid contract node by @fenwuyaoji in #7066
- Remove deprecated settings and bump Conan by @DennisOSRM in #7149
- Update Conan to v2.15.1 by @DennisOSRM in #7151
- Bump version to v6.0-RC2 by @DennisOSRM in #7148
New Contributors
- @SamuelBrucksch made their first contribution in #6491
- @jeremiahpslewis made their first contribution in #6515
- @prrajput1199 made their first contribution in #6520
- @Rejudge-F made their first contribution in #6531
- @patrick-fitzgerald made their first contribution in #6536
- @97littleleaf11 made their first contribution in #6562
- @mattwigway made their first contribution in #6564
- @whytro made their first contribution in #6575
- @AlTimofeyev made their first contribution in #6596
- @lliehu made their first contribution in #6632
- @brad0 made their first contribution in #6637
- @debarshikundu made their first contribution in #6638
- @fenwuyaoji made their first contribution in #6674
- @danieldegroot2 made their first contribution in #6713
- @dspasojevic made their first contribution in #6831
- @GitBenjamin made their first contribution in #6724
- @trivikr made their first contribution in #6730
- @nyllet made their first contribution in #6717
- @datwelk made their first contribution in #6726
- @rezashokry made their first contribution in #6739
- @louwers made their first contribution in #6882
- @mugr1x made their first contribution in #6611
- @knowname made their first contribution in #6958
- @afarber made their first contribution in #7095
- @mattrobmattrob made their first contribution in #7064
- @Dawid2849 made their first contribution in #7079
- @cho-m made their first contribution in #7073
- @kinkard made their first contribution in #7112
- @tumik made their first contribution in #6745
- @kklot made their first contribution in #6630
- @MarcelloPerathoner made their first contribution in #7130
- @jcoupey made their first contribution in #7140
- @arnesetzer made their first contribution in #7035
Full Changelog: v5.27.1...V6.0.0