Guido and I want to propose promoting Ken Jin as a core developer.
- Promote Ken Jin
- Don’t promote Ken Jin
I have been mentoring Ken Jin for a long time (I previously gave him triage privileges time ago). Ken has been very active in the project, actively reviewing pull requests and fixing bugs (some of them notably complex) and he has been contributing both to code and documentation. He is a very enthusiastic and energetic person and during this time he has made great progress in learning the CPython workflow, CPython internals and how to keep things maintainable and backwards compatible. He also has actively participated in many important areas such as Python performance and typing (see below).
Ken has been working with Guido for quite some time as well, specially in the typing module and in typing related PEPs. During this time he has also prove to be quite proficient in writing clear documentation and in doing useful reviews of it.
Statistics
- Merged PRs: Search · is:pr is:merged author:Fidget-Spinner archived:false org:python · GitHub
- Reviewed PRs: Search · reviewed-by:Fidget-Spinner -author:Fidget-Spinner archived:false org:python · GitHub
- Involvement in issues: Search · involves:Fidget-Spinner archived:false org:python · GitHub
- BPO bugs noised
Selected contribution highlights
Docs
- Co-authored the Python Language Reference for pattern matching: https://github.com/python/cpython/pull/24664
- Updated compiler docs in the devguide: https://github.com/python/devguide/pull/706
- Authored documentation for typing PEPs:
-
PEP 585 (Type Hinting Generics In Standard Collections) https://github.com/python/cpython/pull/22615
-
PEP 604 (Allow writing union types as X | Y) bpo-41428: Documentation for PEP 604 by Fidget-Spinner · Pull Request #22517 · python/cpython · GitHub
-
PEP 612 (Parameter Specification Variables) bpo-41559: Implement PEP 612 - Add ParamSpec and Concatenate to typing by Fidget-Spinner · Pull Request #23702 · python/cpython · GitHub
-
PEP 647 (User-Defined Type Guards) bpo-43766: Implement PEP 647 (User-Defined Type Guards) in typing.py by Fidget-Spinner · Pull Request #25282 · python/cpython · GitHub
-
Code
-
Initial implementation of PEP 612 in C and Python, then re-wrote it again only in Python.
-
Downstreamed implementation to typing_extensions later: bpo-41559: Implement PEP 612 - Add ParamSpec and Concatenate to typing by Fidget-Spinner · Pull Request #23702 · python/cpython · GitHub
-
Added CALL_METHOD_KW opcode, keyword counterpart to CALL_METHOD.
bpo-26110: Add ``CALL_METHOD_KW`` opcode to speedup method calls with keywords by Fidget-Spinner · Pull Request #26014 · python/cpython · GitHub -
Fixed consistency issues between typing.Callable and collections.abc.Callable
https://github.com/python/cpython/pull/23060 -
Fixed various bugs in typing.
Faster CPython project
- Researched and implemented CALL_FUNCTION opcode specialization via PEP 659 (Specializing Adaptive Interpreter) with lots of help from Mark. PR unmerged, we’re still trying to assess whether it’s worth the maintenance cost, and we’re waiting for other optimizations in CPython.
https://github.com/python/cpython/pull/26934 - Researched viability of specializing FOR_ITER opcode. Temporarily dropped because common cases slowed down, and 10% faster for long loops doesn’t justify the complexity.
Consider FOR_ITER family for specialization? · Issue #67 · faster-cpython/ideas · GitHub - Researched viability of specializing LOAD_METHOD opcode. Still a WIP, but more promising than the other two.
Specialize LOAD_METHOD · Issue #81 · faster-cpython/ideas · GitHub
Post-promotion mentoring
As it was done in previous promotions we will continue to mentor him for one month after his promotion (if it’s accepted) to help him to deal with his new responsibilities, and we plan to require him to ask us before merging anything until he will be used to the process.
Vote process
As a reminder from PEP 13 regarding voting rules:
It is granted by receiving at least two-thirds positive votes in a core team vote that is open for one week and with no veto by the steering council.