[Python-checkins] r78267 - peps/trunk/pep-3146.txt

collin.winter python-checkins at python.org
Sat Feb 20 23:02:19 CET 2010


Author: collin.winter
Date: Sat Feb 20 23:02:19 2010
New Revision: 78267
Log:
Update PEP 3146: discuss impact on other forks/branches; clarify language on PyPy; resolve open issues; clarify qualifications for final merger.
Modified:
 peps/trunk/pep-3146.txt
Modified: peps/trunk/pep-3146.txt
==============================================================================
--- peps/trunk/pep-3146.txt	(original)
+++ peps/trunk/pep-3146.txt	Sat Feb 20 23:02:19 2010
@@ -49,7 +49,7 @@
 - Permission to continue working on the just-in-time compiler in the CPython
 source tree.
 - Permission to eventually merge the just-in-time compiler into the ``py3k``
- branch once all blocking issues have been addressed.
+ branch once all blocking issues [#us-punchlist]_ have been addressed.
 - A pony.
 
 
@@ -195,9 +195,11 @@
 no plans for 64-bit support; supports x86 only; very difficult to maintain;
 incompatible with SSE2 optimized code due to alignment issues.
 - *PyPy*: PyPy [#pypy]_ has good performance on numerical code, but is slower
- than Unladen Swallow on non-numerical workloads. PyPy only supports 32-bit
- x86 code generation. It has poor support for CPython extension modules,
- making migration for large applications prohibitively expensive.
+ than Unladen Swallow on some workloads. Migration of large applications from 
+ CPython to PyPy would be prohibitively expensive: PyPy's JIT compiler supports 
+ only 32-bit x86 code generation; important modules, such as MySQLdb and 
+ pycrypto do not build against PyPy; PyPy does not offer an embedding API, much 
+ less the same API as CPython.
 - *PyV8*: PyV8 [#pyv8]_ is an alpha-stage experimental Python-to-JavaScript
 compiler that runs on top of V8. PyV8 does not implement the whole Python
 language, and has no support for CPython extension modules.
@@ -655,6 +657,24 @@
 binary compatible. C extension modules compiled against one will need to be
 recompiled to work with the other.
 
+The merger of Unladen Swallow should have minimal impact on long-lived
+CPython optimization branches like WPython. WPython [#wpython]_ and Unladen
+Swallow are largely orthogonal, and there is no technical reason why both
+could not be merged into CPython. The changes needed to make WPython
+compatible with a JIT-enhanced version of CPython should be minimal
+[#us-wpython-compat]_. The same should be true for other CPython optimization
+projects (for example, [#asher-rotem]_).
+
+Invasive forks of CPython such as Stackless Python [#stackless]_ are more
+challenging to support. Since Stackless is highly unlikely to be merged into
+CPython [#stackless-merger]_ and an increased maintenance burden is part and
+parcel of any fork, we consider compatibility with Stackless to be relatively
+low-priority. JIT-compiled stack frames use the C stack, so Stackless should
+be able to treat them the same as it treats calls through extension modules.
+If that turns out to be unacceptable, Stackless could either remove the JIT
+compiler or improve JIT code generation to better support heap-based stack
+frames [#llvm-heap-frames]_, [#llvm-heap-frames-disc]_.
+
 
 Platform Support
 ================
@@ -847,7 +867,10 @@
 
 - Developers must know two related languages, C and C++ to work on the full
 range of CPython's internals.
-- A C++ style guide will need to be developed and enforced. See `Open Issues`_.
+- A C++ style guide will need to be developed and enforced. PEP 7 will be
+ extended [#pep7-cpp]_ to encompass C++ by taking the relevant parts of
+ the C++ style guides from Unladen Swallow [#us-styleguide]_, LLVM
+ [#llvm-styleguide]_ and Google [#google-styleguide]_.
 - Different C++ compilers emit different ABIs; this can cause problems if
 CPython is compiled with one C++ compiler and extensions modules are compiled
 with a different C++ compiler.
@@ -989,10 +1012,12 @@
 process while we iron out any remaining issues blocking final merger into
 ``py3k``. Unladen Swallow maintains a punchlist of known issues needed before
 final merger [#us-punchlist]_, which includes all problems mentioned in this
-PEP; we trust the CPython community will have its own concerns.
+PEP; we trust the CPython community will have its own concerns. This punchlist
+is not static; other issues may emerge in the future that will block final
+merger into the ``py3k`` branch.
 
-See the `Open Issues`_ section for questions about code review policy for the
-``py3k-jit`` branch.
+Changes will be committed directly to the ``py3k-jit`` branch, with only large,
+tricky or controversial changes sent for pre-commit code review.
 
 
 Contingency Plans
@@ -1058,31 +1083,6 @@
 Swallow's LLVM-based JIT compiler [#us-relevantpapers]_.
 
 
-Open Issues
-===========
-
-- *Code review policy for the ``py3k-jit`` branch.* How does the CPython
- community want us to procede with respect to checkins on the ``py3k-jit``
- branch? Pre-commit reviews? Post-commit reviews?
-
- Unladen Swallow has enforced pre-commit reviews in our trunk, but we realize
- this may lead to long review/checkin cycles in a purely-volunteer
- organization. We would like a non-Google-affiliated member of the CPython
- development team to review our work for correctness and compatibility, but we
- realize this may not be possible for every commit.
-- *Prioritization of remaining issues.* We would like input from the CPython
- development team on how to prioritize the remaining issues in the Unladen
- Swallow codebase. Some issues like memory usage are obviously critical before
- merger with ``py3k``, but others may fall into a "nice to have" category that
- could be kept for resolution into a future CPython 3.x release.
-
-- *Create a C++ style guide.* Should PEP 7 be extended to include C++, or
- should a separate C++ style PEP be created? Unladen Swallow maintains its own
- style guide [#us-styleguide]_, which may serve as a starting point; the
- Unladen Swallow style guide is based on both LLVM's [#llvm-styleguide]_ and
- Google's [#google-styleguide]_ C++ style guides.
-
-
 Unladen Swallow Community
 =========================
 
@@ -1445,6 +1445,27 @@
 .. [#msvc-pgo]
 http://msdn.microsoft.com/en-us/library/e7k32f4k.aspx
 
+.. [#us-wpython-compat]
+ http://www.mail-archive.com/python-dev@python.org/msg44962.html
+
+.. [#asher-rotem]
+ http://portal.acm.org/citation.cfm?id=1534530.1534550
+
+.. [#stackless]
+ http://www.stackless.com/
+
+.. [#stackless-merger]
+ http://mail.python.org/pipermail/python-dev/2004-June/045165.html
+
+.. [#llvm-heap-frames]
+ http://www.nondot.org/sabre/LLVMNotes/ExplicitlyManagedStackFrames.txt
+
+.. [#llvm-heap-frames-disc]
+ http://old.nabble.com/LLVM-and-coroutines-microthreads-td23080883.html
+
+.. [#pep7-cpp]
+ http://www.mail-archive.com/python-dev@python.org/msg45544.html
+
 
 Copyright
 =========


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /