Segmentation fault in PyROOT with Python minor version mismatch

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 :frowning: 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