Home | History | Annotate | Download | only in 2016
      1 Project Overview
      2 ================
      3 The project, titled 'GRPC Python compatibility support', involved 
      4 collaborating with the GRPC team to improve the library compatibility 
      5 for the GRPC Python library.
      6 
      7 Python is, originally, a specification for a programming language. This
      8 specification has been implemented differently in different
      9 implementations of the [language specification](https://docs.python.org/3/reference/). 
     10 
     11 A small, and by no means exhaustive, list of some major python implementations
     12 is:
     13 
     14 - [CPython](https://www.python.org/): The reference implementation
     15 - [Jython](http://www.jython.org/): Python implemented in Java
     16 - [Python for .NET](http://pythonnet.sourceforge.net/): CPython implementation that enables .NET library usage
     17 - [IronPython](http://ironpython.net/): Python implemented in .NET
     18 - [PyPy](http://pypy.org/): Python implemented completely in Python
     19 - [Stackless](https://bitbucket.org/stackless-dev/stackless/wiki/Home): Replaces the dependency for the C call stack with it's own stack
     20 
     21 The development in this project revolved around
     22 introducing changes to the codebase that enable support for latest 
     23 stable as well as development releases of the reference implementation 
     24 (CPython) of the Python programming language namely `Python 3.4`,
     25 `Python 3.5`,and `Python 3.6` as well as the stable releases of the 
     26 PyPy implementation. Special changes were required to enable PyPy 
     27 support because PyPy has a non-deterministic garbage collector that does
     28 not rely on reference counting unlike the CPython garbage collector.
     29 
     30 The changes to the codebase involved changes to the library code as well
     31 as changes to the tests and scripts in the test infrastructure which
     32 resulted in both the library as well as the testing infrastructure being
     33 Python 3.x and PyPy compatible.
     34 
     35 The list of merged commits, as of 22.08.2016 23:59 CEST,  is summarized 
     36 here for the perusal of those interested:
     37 
     38 - [Enable py35 and py36 testing](https://github.com/grpc/grpc/commit/c478214e475e103c5cdf477f0adc18bba2c03903)
     39 - [Make testing toolchain python 3.x compliant](https://github.com/grpc/grpc/commit/0589e533cd65a2ca9e0e610cc1b284d016986572)
     40 - [Add .idea folder to .gitignore](https://github.com/grpc/grpc/commit/365ef40947e22b5438a63f123679ae9a5474c47c)
     41 - [Fix the ThreadPoolExecutor: max_workers can't be 0](https://github.com/grpc/grpc/commit/de84d566b8fad6808e5263a25a17fa231cb5713c)
     42 - [Add PyPy to testing toolchain](https://github.com/grpc/grpc/commit/2135a1b557f8b992186d5317cb767ac4dbcdfe5c)
     43 - [Switch init/shutdown: lib-wide -> per-object](https://github.com/grpc/grpc/commit/9eedb4ffd74aed8d246a07f8007960b2bc167f55)
     44 - [Skip test run if running with pypy](https://github.com/grpc/grpc/commit/f0f58e68738abbc317f7f449c5104f7fbbff26bd)
     45 
     46 The list of unmerged pull requests is as follows:
     47 
     48 - [Add PyPy 5.3.1 to dockerfile and template](https://github.com/grpc/grpc/pull/7763)
     49 - [remove skipIf from TypeSmokeTest (issue 7672)](https://github.com/grpc/grpc/pull/7831)
     50   
     51 The list of tasks that have pending unsubmitted pull requests is as follows:
     52 
     53 - Modify run_tests.py to enable testing of new languages without
     54   affecting old branches.
     55 
     56 
     57 Project Details
     58 ===============
     59 - Title: GRPC Python compatibility support
     60 - Student: [Siddharth Shukla](https://github.com/thunderboltsid)
     61 - Mentors: [Nathaniel Manista](https://github.com/nathanielmanistaatgoogle), [Masood Malekghassemi](https://github.com/soltanmm)
     62 - Duration: May 23 - August 23
     63 - Hat tip: [Ken Payson](https://github.com/kpayson64), [Jan Tattermusch](https://github.com/jtattermusch), [Nicolas Noble](https://github.com/nicolasnoble)
     64 
     65 
     66