Skip to content

Releases: osmcode/libosmium

Version 2.23.1

01 Apr 14:53

Choose a tag to compare

Added

  • Helper function for checking string for invalid UTF-8 characters.

Changed

  • Extend CheckOrder handler class: Optionally work with history files.

Fixed

  • Reverted change in 2.21.0: Order deleted objects after visible ones in reverse id order. Turns out this breaks updating of extracts.

Version 2.23.0

18 Jan 15:27

Choose a tag to compare

Added

  • Functions to store and retrieve extra bit in osmium::Location. This allows storing of one bit of information in a Location.
  • Function for comparing two TagLists.

Changed

  • Requires CMake 3.10 now.
  • Various small changes and code cleanups.

Fixed

  • Allow single varint encoded int instead of packed ints for tags and other data in PBFs. (Fixes #389)
  • Regression: Report progress correctly when reading PBF files. Thanks to victor.pavlychko@gmail.com.
  • Fix off-by-one error when printing numbers in debug output. Thanks to @ginnyTheCat.
  • Fix i/o tests using mock (de)compression.
  • Fix error reading (large) bzip files that use concatenated bzip streams. Thanks to yarray 08to09@gmail.com.
  • Fix memory corruption error in ChangesetDiscussionBuilder. Thanks to yarray 08to09@gmail.com.
  • Fix for PBF reading from stdin: set binary mode. Thanks to Ildar Khayrutdinov ildarkhairutdin@gmail.com.

Version 2.22.0

17 Mar 14:51

Choose a tag to compare

Changed

  • Extend RelationsMapIndex to work with 64bit IDs. This should not change anything for typical OSM use (where relation IDs fit in 32bit), but help with users adding their own relations.
  • Removed deprecated support for regexes from osmium::tags::Filter, use osmium::TagsFilter instead (osmium/tags/regex_filter.hpp removed).
  • Remove special cases disabling regex support for old C++ libs.
  • Various code cleanups.

Version 2.21.0

13 Jan 14:40

Choose a tag to compare

Changed

  • Switched to C++14 as minimum requirement
  • Removed suport for Google Sparsehash
  • Removed support for projection using the Proj library (which only worked for very old versions of Proj)
  • Various refactoring and code cleanups

Fixed

  • Fix problem where bz2 files were not read completely (#373)
  • Order deleted objects after visible ones in reverse id order. This fixes a problem when merging diffs for different extracts.
  • Remove resource leak in temp file creation

Version 2.20.0

20 Sep 12:43

Choose a tag to compare

Changed

  • Optionally allow fractional seconds in timestamps in OSM files.
  • Enable posix_fadvise usage on FreeBSD.
  • Make parsing PBFs a bit less picky.
  • Various small code cleanups.

Fixed

  • Don't use class template arguments on GeometryFactory constructor definition.

Version 2.19.0

19 Jan 08:50

Choose a tag to compare

Changed

  • Mark RapidJSON support as deprecated.
  • Update included Catch to v2.13.10.
  • Remove deprecated BoolVector class.
  • Remove deprecated NWRIdSet class.
  • Remove deprecated AssemblerConfig constructor.
  • Print start of offending string in overlong string exception.
  • Implement set_thread_name() on FreeBSD.
  • Some small code cleanups.

Fixed

  • Fix return type in MembersDatabaseCommon::count_not_removed().
  • Make bzip2 unit tests pass on musl-based systems.
  • Fix bug in members database test case.

Version 2.18.0

07 Feb 13:01

Choose a tag to compare

Changed

  • Use system_error instead of runtime_error where it fits better.
  • Remove OSMIUM_NORETURN macro. This hasn't been used in a while.

Removed deprecated parts of the code

Several parts of libosmium have been marked deprecated, many of them for a very long time. These are now removed:

  • Sparsehash index class osmium::index::map::SparseMemTable as well as the complete file osmium/index/map/sparse_mem_table.hpp.
  • Callback functionality of the osmium::memory::Buffer class. The set_full_callback() will not be available any more. See the source for replacement options.
  • Various osmium::builder::build_* functions in osmium/builder/builder_helper.hpp. Use osmium::builder::add_* functions instead. Removes builder_helper.hpp.
  • osmium::builder::Builder::add_item(const osmium::memory::Item* item). Use the function of the same name taking a reference instead.
  • osmium::builder::OSMObject/ChangesetBuilder::add_user(). Use set_user() instead.
  • osmium::builder::ChangesetBuilder::bounds() returning a modifiable reference. Use set_bounds() instead.
  • Several functions around osmium::io::OutputIterator.
  • osmium::Area::inner_ring_cbegin/cend(), use inner_rings() instead.
  • osmium::RelationMember::ref(), use set_ref() instead.
  • Implicit conversion from osmium::Timestamp to std::time_t. Use seconds_since_epoch() instead.
  • osmium::string_to_user_id(), use string_to_uid instead.
  • osmium::static_cast_with_assert() helper functions as well as the complete include file osmium/util/cast.hpp.
  • Some constructors of osmium::util::MemoryMapping and osmium::util::TypedMemoryMapping. Use other constructor instead.

Version 2.17.3

19 Jan 10:21

Choose a tag to compare

Fixed

  • Removed possible deadlock when shutting down active Reader.

Version 2.17.2

16 Dec 08:31

Choose a tag to compare

Changed

  • Libosmium now supports being compiled in C++17 and C++20 mode. The minimum version required is still C++11, but if you use libosmium in an C++17 or C++20 application this should work properly.
  • Switch from catch version 1 to catch2 as test framework.
  • When std::variant is available (C++17 and above), libosmium will use that instead of boost::variant reducing the dependencies a little bit.
  • Removed various workaround that were needed for older MSVC compilers.
  • Remove use of boost::filter_iterator and boost::indirect_iterator. The removes the dependency on Boost Iterator.
  • Examples now mostly use the somewhat cleaner return instead of std::exit() to return an exit code from main.
  • As always: Various small code cleanups.

Fixed

  • When ordering OSM objects (mostly use in the CheckOrder handler), the smallest id possible (INTMIN) wasn't sorted correctly.
  • Threading problem when reading files.
  • Possible dereference of invalid iterator in legacy area assembler. This only affects the legacy area assembler that takes old-style multipolygons into account, so modern code that is not working with history data is not affected.
  • Fixed read from an empty queue when reading a file which could block libosmium forever when an error was encountered while reading a file.

Deprecated

Several parts of libosmium have been marked deprecated, many of them for a very long time. These will not be part of the next version of libosmium:

  • Sparsehash index class osmium::index::map::SparseMemTable as well as the complete file osmium/index/map/sparse_mem_table.hpp.
  • Callback functionality of the osmium::memory::Buffer class. The set_full_callback() will not be available any more. See the source
    for replacement options.
  • Various osmium::builder::build_* functions in osmium/builder/builder_helper.hpp. Use osmium::builder::add_* functions instead. Removes builder_helper.hpp.
  • osmium::builder::Builder::add_item(const osmium::memory::Item* item). Use the function of the same name taking a reference instead.
  • osmium::builder::OSMObject/ChangesetBuilder::add_user(). Use set_user() instead.
  • osmium::builder::ChangesetBuilder::bounds() returning a modifiable reference. Use set_bounds() instead.
  • Several functions around osmium::io::OutputIterator.
  • osmium::Area::inner_ring_cbegin/cend(), use inner_rings() instead.
  • osmium::RelationMember::ref(), use set_ref() instead.
  • Implicit conversion from osmium::Timestamp to std::time_t. Use seconds_since_epoch() instead.
  • osmium::string_to_user_id(), use string_to_uid instead.
  • osmium::static_cast_with_assert() helper functions as well as the complete include file osmium/util/cast.hpp.
  • Some constructors of osmium::util::MemoryMapping and osmium::util::TypedMemoryMapping. Use other constructor instead.

Version 2.17.1

05 Oct 09:04

Choose a tag to compare

Added

  • Add osmium_tags_filter example showing use of tags filter.
  • Add Writer::set_header() function to set header after constructing.

Changed

  • Various improvements in PBF file reading make it slightly faster and less CPU intensive.
  • Since 2.17.0 Osmium will, when reading files, tell the kernel using fadvise that it can remove pages from the buffer cache that are not needed any more. This is usually beneficial, because the memory can be used for something else. But if you are reading the same OSM file multiple times at the same time or in short succession, it might be better to keep those buffer pages. In that case you can set the environment variable OSMIUM_CLEAN_PAGE_CACHE_AFTER_READ to no and Osmium will not call fadvise. Set it to yes or anything else (or not set it at all) to get the default behaviour.
  • If the macro OSMIUM_DEFINE_EXPORT is defined, all exception classes used by Osmium will get "tagged as exported" using __declspec(dllexport) when using MSVC or __attribute__ ((visibility("default"))) on other compilers. This is needed in PyOsmium.

Fixed

  • Fix integer parser. IDs in OPL files can now be anything between -2^63 and 2^63-1.