Version 2.17.2
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 ofboost::variant
reducing the dependencies a little bit. - Removed various workaround that were needed for older MSVC compilers.
- Remove use of
boost::filter_iterator
andboost::indirect_iterator
. The removes the dependency on Boost Iterator. - Examples now mostly use the somewhat cleaner
return
instead ofstd::exit()
to return an exit code frommain
. - 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 fileosmium/index/map/sparse_mem_table.hpp
. - Callback functionality of the
osmium::memory::Buffer
class. Theset_full_callback()
will not be available any more. See the source
for replacement options. - Various
osmium::builder::build_*
functions inosmium/builder/builder_helper.hpp
. Useosmium::builder::add_*
functions instead. Removesbuilder_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()
. Useset_user()
instead.osmium::builder::ChangesetBuilder::bounds()
returning a modifiable reference. Useset_bounds()
instead.- Several functions around
osmium::io::OutputIterator
. osmium::Area::inner_ring_cbegin/cend()
, useinner_rings()
instead.osmium::RelationMember::ref()
, useset_ref()
instead.- Implicit conversion from
osmium::Timestamp
tostd::time_t
. Useseconds_since_epoch()
instead. osmium::string_to_user_id()
, usestring_to_uid
instead.osmium::static_cast_with_assert()
helper functions as well as the complete include fileosmium/util/cast.hpp
.- Some constructors of
osmium::util::MemoryMapping
andosmium::util::TypedMemoryMapping
. Use other constructor instead.