
Changes from old versions of Osmium
===================================

This version has some substantial changes and users of Osmium will have to
rewrite their code. Use the examples provided in the "example" directory
or in the osmium-contrib repository to get an idea what needs changing.
These examples are often similar to the examples provided with the old
Osmium so they should give you an idea how your code has to change.

Here are some of the more important changes:

* Osmium now needs C++11. It will not work with older compilers. You need
  at least GCC 4.7.3 or clang (LLVM) 3.2.

* Namespaces are now all lower case. Everything is in the "osmium" namespace
  or sub-namespaces of it. Many classes and functions have been moved to
  different, more logical or shorter namespaces.

* You can't just instantiate OSM objects such as Nodes, Ways, or Relations.
  You need a Buffer first to hold them and use the Builder classes to
  create them. This is a bit more cumbersome, but greatly reduces the need
  for memory management and makes Osmium faster and easier to parallelize.

* Usually you don't act on single OSM objects any more, but on groups of
  them in a Buffer.

* Reading and writing of OSM data is much simpler. Use the Reader and Writer
  classes as they hide much of the detail and have much nicer interfaces
  than the old Input/Output classes.

* The class Osmium::OSM::Position was renamed to osmium::Location. This
  better reflects that it is a location on the planet we are talking about.
  The word "position" has many meanings and is, for instance, often used
  to denote a position in a file or buffer or so.

* The dependency on boost has been greatly reduced. C++11 offers many
  features that used to be only available with boost, such as shared_ptr.
  Osmium now uses the C++11 versions of these.

* Osmium now makes use of the new C++11 threading support when reading and
  writing OSM files.

