Our consensus on #jython - an IRC channel on freenode, where we discuss both Jython development and answer occasional questions - is that Jython 2.7 beta 2 is blocking on the full support of easy_install, pip, and virtualenv, given that these are what enable third-party package usage. Of these, pip is problematic, because it requires nonblocking SSL sockets to work (and a few other minor issues, most of which we have fixed in Jython trunk itself). Virtualenv in turn now installs pip. Lastly, easy_install does work with blocking SSL sockets, for which I have a branch, https://bitbucket.org/jimbaker/jython-ssl
Without such support, it's really hard to have Jython 2.7 be part of the overall Python ecosystem, which includes PyPI and flexible package management. Prior to this, interested persons can check out the 2.7 trunk and build it, then install packages manually from PyPI, or use such workaround as the jython-ssl branch I mentioned.
In order to support nonblocking SSL sockets, we are looking at the following design:
- Standardize all streaming socket support over AsynchronousSocketChannel and AsynchronousServerSocketChannel, with support for a Python wrapper that presents these async channels as blocking, blocking with timeouts, and nonblocking (select/poll). Unlike the current streaming sockets, this means that select with blocking sockets will work, without thread safety issues; it also means that the common usage of switching from blocking to nonblocking in CPython will work as well. Note that the use of async channels mandates Java 7, but it's something that we need to do for other reasons for Jython 2.7. Also please note we will support nonblocking SSL sockets for both server and peer usage.
- Use SSLEngine to wrap/unwrap socket communication and manage handshaking. This in part is what's driving the use of async channels, so we can have a simpler API to work with, vs the complexity of our current socket implementation. However, that complexity was driven by what we could work with in Java 1.4 - we now have more capable infrastructure.
My expectation is that we should have this SSL work finished before the end of the year, with Jython 2.7 beta 2 out shortly after nonblocking SSL sockets land. My confidence on this date is based on a number of spikes that we have done, including my earlier branch, as well as supporting brainstorming.
One open question is working UDP sockets using the same approach, but this should not be a blocker for 2.7 beta 2.