On Sat, Apr 09, 2016 at 08:28:10AM -0600, Ian Kelly wrote:
It seems unusual to deprecate something without also providing a means of using the new thing in the same release. "Don't use this feature because we're going to change what it does in the future. Oh, you want to use the new version? Psych! We haven't actually done anything yet. Use not instead." It creates a weird void in Python 3.6 where the operator still exists but absolutely nobody has a legitimate reason to be using it.
Not really. This is quite similar to what happened in Python 2.3 during int/long unification. The behaviour of certain integer operations changed, including the meaning of some literals, and warnings were displayed. I don't have 2.3 available to demonstrate but I can show you the change in behaviour: [steve@ando ~]$ python1.5 -c "print 0xffffffff" -1 [steve@ando ~]$ python2.4 -c "print 0xffffffff" 4294967295 By memory, 0xffffffff in python2.3 would print a warning that the result will change in the next release, and return -1. See: https://www.python.org/dev/peps/pep-0237/ https://www.python.org/download/releases/2.3.5/notes/
What happens if somebody is using ~ for its current semantics, skips the 3.6 release in their upgrade path, and doesn't read the release notes carefully enough? They'll never see the warning and will just experience a silent and difficult-to-diagnose breakage.
Then they'll be in the same position as everybody if there's no depreciation at all. -- Steve