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