With the planned Python 3.6 release, the popular scripting language is due for improvements in readability and cryptography. Also on the agenda: Moving the project to GitHub to help contributors participate in the language's development.
Code freeze for version 3.6 happens in September with the final release set for Christmastime, said Python founder Guido van Rossum at the PyCon 2016 conference in Portland this week. Version 3.6 currently is an alpha stage of development.
The upcoming release will include underscores in numbers, simply "because everyone else [has] got them," he said. This capability is about improved readability of numbers with many digits.
In order to beef up cryptography, a secrets module will prompt developers to use the random-number generator provided by the operating platform in use rather than Python's own generator, which is for specific applications such as simulation. The numbers are generated as random tokens for security purposes. "The secrets module is basically a wrapper around the system random number generator," said van Rossum.
Other improvements in Python 3.6 include f-strings, to make it easier to produce properly formatted output based on local variables; local time disambiguation, for programs to better deal with time changes in the event of daylight savings time; and fspath, for converting file names back to strings for use in primitive operations.
In moving Python repositories from Mercurial to GitHub, van Rossum is acknowledging the inertia GitHub now has as a software projects repository. This means users no longer have to learn "obscure" tools like Mercurial to contribute to the project, he said. "Because everybody's already there [on GitHub], it will make it easier for people to contribute to Python." Van Rossum hopes to make this move by the end of this year.
Beyond version 3.6, Python developers are considering several possibilities, including removal of Python's GIL (Global Interpreter Lock), which has been an impediment to multicore programming in the language. The GIL is supposed to make multithreading possible without having separate locks on all data structures, but this notion has been superseded by the arrival of multicore machines. Now, the GIL limits program execution across multiple threads, but if it's removed, another locking mechanism would be needed to protect Python's internal data structures.
Python might also gain a variable declaration syntax, possibly for global, class, and local variables, and the developers are considering a match statement capability, providing a pattern-matching syntax for objects. There has been no "decent" syntax devised yet, though the proposal has apparently generated several hundred emails on the Python ideas list, van Rossum said.