I think @Axel is right (‘unfortunately’). According to PEP 606 – Python Compatibility Version | peps.python.org :
The Python language does not provide backward compatibility.
One compatibility-breaking example in the Python 3.7 update:
async and await are now reserved keywords
Simple example:
#!/usr/bin/env python3
async = 42
No problem in Python 3.6. Syntax error in Python 3.7 I am honestly surprised that this is a thing. To make things worse, Python even allows compatibility-breaking changes across micro releases (e.g. 3.7.1 → 3.7.2 is not even guaranteed to maintain compatibility…)
but going from 3.5 to 3.6 you are talking about forward compatibility
@adrian_sev, I’m actually not talking about forward compatibility; I want a system with Python 3.6 to run PyROOT that was ‘compiled against’ a Python 3.5 interpreter. If Python was backward compatible, I should have had no problems. Unfortunately, it seems not to be the case.
How will the ROOT team be releasing ROOT in the future w.r.t. the Python 3 interface? Will you settle on a specific version and expect the user to have that exact version installed? Will there be a more graceful output when there is a version mismatch, instead of a segfault?
it would be better to rebase on 3.6
The problem with fixating on a single release is that different platforms offer different versions from their official repositories (e.g. Linux Ubuntu Xenial only goes up to 3.5.2). I want to avoid users having to go through the trouble of installing Python 3.6 from some other repository, symlinking python3
to python3.6
, etc… Additionally, you’ll get non-official repositories to pull stunts like https://launchpad.net/~jonathonf/+archive/ubuntu/python-3.6
This PPA has been removed from public access as part of a protest against the abuse of open-source projects by large companies