Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RFC][DISCUSS] Python3 Timeline of 2019 #2715

Closed
tqchen opened this issue Mar 1, 2019 · 9 comments
Closed

[RFC][DISCUSS] Python3 Timeline of 2019 #2715

tqchen opened this issue Mar 1, 2019 · 9 comments

Comments

@tqchen
Copy link
Member

tqchen commented Mar 1, 2019

It has been half a year since our last discussion #1602

Many projects officially deprecate python2 starting 2019. I would like to open this RFC again to see the community's opinion on this.

As per the previous discussion, embracing python3 allows us to make use of new features such as type annotation that enables better DSL, and makes cleaner code. It also makes us consistent with the rest of the python eco-system. Let us discuss two things:

When should the move happen

Such a big change will likely need to happen in a major release

  • Do it now in the 0.6 release cycle since 0.5 has been released in 2019
    • We need to send out early notifications to the user that this is happening and have clear error messages
  • Do it in the 0.7 release cycle after 0.6 release

Which minimum version of python3 to depend on

  • python3.5 This is the safest choice as suggested by many in the previous discussion
  • python3.6 More features, type class support(annotate class members), although not strictly necessary in all places
@tqchen tqchen changed the title [RFC] Python3 Timeline of 2019 [RFC][DISCUSS] Python3 Timeline of 2019 Mar 1, 2019
@zhiics
Copy link
Member

zhiics commented Mar 1, 2019

When is the plan for 0.6? I think we can probably do it in 0.6 if it is several months/half a year away. For transitioning, python 3.6?

A side problem, do we have any plan to enable/support c++ 14/17?

@antinucleon
Copy link
Contributor

0.6: + 1
C++ 14/17: Not hurry because we have most of features in dmlc-core. Most production system is still running at GCC-5

@FrozenGene
Copy link
Member

I think we can do it in 0.6 in dev module but make sure runtime be compatibility with Python 2 in 0.6

And in 0.7, we make dev module / runtime module be Python 3.

I would recommend Python 3.5, we should do the safest choice.

@were
Copy link
Contributor

were commented Mar 12, 2019

0.6 +1.
pip for Python2 will be fully deprecated next year.
I believe spurning Python2 would be the earlier the better.
Many Python libraries have compatibility issues between 2 and 3.
I often suffer from handling those corner cases.
I often fail CI because of not handling those corner cases.
This is annoying.

I have no strong preference, and I am leaning to 3.6 more.

@junrushao
Copy link
Member

0.6 + 1
Deprecation won't be a significant influence, because Python is merely just a frontend, by disabling which won't hurt deployment.

@kevinthesun
Copy link
Contributor

0.6 +1
3.5 is a safe choice.

@yongwww
Copy link
Member

yongwww commented Mar 12, 2019

0.6 +1

@kazum
Copy link
Contributor

kazum commented Mar 12, 2019

0.6 +1
Since we don't have enough python2 tests in our CI, some frontends already doesn't work well with python2. Rather than fixing the problem, dropping the python2 support and refining codes with python3 features for 0.6 is much more constructive.

I prefer python 3.6, but 3.5 as a safe choice is also fine.

@tqchen
Copy link
Member Author

tqchen commented Mar 19, 2019

Seems we are converging toward drop python2 in 0.6 the cycle, in terms of versions perhaps we can start by requiring 3.5

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

9 participants