• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Project Overview
2================
3The project, titled 'GRPC Python compatibility support', involved
4collaborating with the GRPC team to improve the library compatibility
5for the GRPC Python library.
6
7Python is, originally, a specification for a programming language. This
8specification has been implemented differently in different
9implementations of the [language specification](https://docs.python.org/3/reference/).
10
11A small, and by no means exhaustive, list of some major python implementations
12is:
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
21The development in this project revolved around
22introducing changes to the codebase that enable support for latest
23stable 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
26PyPy implementation. Special changes were required to enable PyPy
27support because PyPy has a non-deterministic garbage collector that does
28not rely on reference counting unlike the CPython garbage collector.
29
30The changes to the codebase involved changes to the library code as well
31as changes to the tests and scripts in the test infrastructure which
32resulted in both the library as well as the testing infrastructure being
33Python 3.x and PyPy compatible.
34
35The list of merged commits, as of 22.08.2016 23:59 CEST,  is summarized
36here 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
46The 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
51The 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
57Project 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