Why are some data types or functions made Obsolete in a newer version of an API and others are marked as Deprecated? Why not make them all Obsolete or why not make them all Deprecated?
Deprecation typically serves as a warning that a feature is no longer in favor with the designers of the language. The reasoning for this is one of reverse compatibility. It gives the users of a language time to adjust their code before the language drops those features. It can also serve as a migration path to a new version of a given feature. The feature in question might be retrofitted at some point in the future or rendered obsolete and removed.