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