1From 1.12.0 to 2.0.0
2====================
3
4Upgrading from 1.x to 2.x should be almost transparent for most of the userland code,
5in case you have heavily used internal-api here are the most important the changes:
6
7**Main changes**
8
9- The minimum PHP version is 7.2, type hints are used almost everywhere, most of the method signatures changed
10- `JsonSerializationVisitor::getRoot` and `JsonSerializationVisitor::setRoot` have been removed, their
11  use is not necessary anymore
12- Removed `AdvancedNamingStrategyInterface`, the serialized name is now compiled and can not be changed at runtime
13- "deeper branch group exclusion strategy" has a different behaviour, the latest group is used instead of falling back
14  to "Default"
15- Most of the classes are marked as `final`, inheritance is discouraged for all the cases, use composition instead
16- Most of the visor configurations and options have been move to visitor factories
17- Removed the abstract classes `GenericSerializationVisito`r and `GenericDeserializationVisitor`.
18- Removed deprecated method `VisitorInterface::getNavigator`, use `Context::getNavigator` instead
19- Removed deprecated method `JsonSerializationVisitor::addData`,
20  use `:visitProperty(new StaticPropertyMetadata('', 'name', 'value'), null)` instead
21- Removed Propel and PhpCollection support
22- Changed default date format from ISO8601 to RFC3339
23- Event listeners/handlers class names are case sensitive now
24- Removed `AbstractVisitor::getNamingStrategy` method
25- Removed Symfony 2.x support
26- Removed YAML serialization support
27- Removed PHP Driver metadata support
28- Removed in-object handler callbacks (`@HandlerCallback` annotation), use event listeners instead
29- Changed `SerializerInterface::serialize`  signature
30- Changed `ArrayTransformerInterface::toArray` signature
31- Changed `GraphNavigator::accept` signature
32- Removed `Serializer::setSerializationContextFactory` and `Serializer::setDeserializationContextFactory`
33- Removed `Serializer::getMetadataFactory`
34- As default now JSON preserve trailing zeros when serializing a float
35- When using a discriminator map, parent class should either be declared abstract, or included into the discriminator
36  map
37
38**Deprecations** (will be removed in 3.0)
39
40- `JsonSerializationVisitor::setData` will be removed,
41  use `::visitProperty(new StaticPropertyMetadata('', 'name', 'value'), null)` instead
42- `JsonSerializationVisitor::hasData` will be removed
43- `VisitorInterface` is internal use `SerializationVisitorInterface` and `DeserializationVisitorInterface` instead
44- `GraphNavigator` is internal use `GraphNavigatorInterface` instead
45
46**Other**
47 - elements (as classes, interfaces, methods, properties...)
48  marked as `@internal` shall not be used in user-land code. BC is not guaranteed on this elements.
49- PSR4 is used
50- [Here](https://github.com/schmittjoh/serializer/milestone/3) a list of issues and pull requests landed in 2.0
51