@@ -7,34 +7,34 @@ This is a C Python interpreter written Python.
77
88You can use this to:
99
10- * Learn about how the internals of CPython works since this models that.
11- Learn about the CPython internals in Python instead of C!
10+ * Learn about how the internals of CPython works since this models that
1211* Use as a sandboxed environment inside a debugger for trying pieces of execution
1312* Have one Python program that runs multiple versions of Python bytecode.
14- For example, run simple Python 2.5 and 2.6 bytecode from Python 3.7.
15- No need to install Python 2.5 or 2. 6!
13+ For example running Python 2.5 or 2.6 bytecode from Python 3.7.
14+ No need to install Python 2.6!
1615
17- The sandboxed sandboxed environment in a debugger I find
18- interesting. Since there is a separate execution, and traceback stack,
19- inside a debugger you can try things out in the middle of a debug
20- session without effecting the real execution. On the other hand if a
21- sequence of executions works out, it is possible to copy this (under
22- certain circumstances) back into CPython's execution stack.
16+ The sandboxed environment in a debugger I find interesting. Since
17+ there is a separate execution, and traceback stack, inside a debugger
18+ you can try things out in the middle of a debug session without
19+ effecting the real execution. On the other hand if a sequence of
20+ executions works out, it is possible to copy this (under certain
21+ circumstances) back into CPython's execution stack.
2322
24- Going the other way, I may at some point hook in my debugger into this
25- interpreter and then you'll have a conventional pdb/gdb like debugger
26- also with the ability to step bytecode instructions.
23+ Going the other way, I may at some point hook in `my debugger
24+ <https://pypi.python.org/pypi/trepan3k> `_ into this interpreter and then
25+ you'll have a conventional pdb/gdb like debugger also with the ability
26+ to step bytecode instructions.
2727
2828Status:
2929+++++++
3030
31- Currently only Python 2.6 - 2.7, and 3.2 - 3.5 bytecode is well
31+ Currently only Python 2.5 - 2.7, and 3.2 - 3.5 bytecode is well
3232understood. Other versions will start to appear with the help of
33- `xdis ` .
33+ `xdis < https://pypi.python.org/pypi/xdis >`_ .
3434
3535Whereas *Byterun * was a bit loose in accepting bytecode opcodes that
3636is invalid for particular Python but may be valid for another;
37- *xpython * is more stringent. This has pros and cons. On the plus side
37+ *x-python * is more stringent. This has pros and cons. On the plus side
3838*Byterun * might run certain Python 3.4 bytecode because the opcode
3939sets are similar. However starting with Python 3.5 and beyond the
4040likelihood gets much less because, while the underlying opcode names
@@ -45,14 +45,15 @@ https://github.com/nedbat/byterun/issues/34.
4545Internally Byterun needs the kind of overhaul we have here to be able
4646to scale to support bytecode for more Pythons, and to be able to run
4747bytecode across different versions of Python. Specifically, you can't
48- rely on Python's `dis ` module if you expect to expect to run a
49- bytecode other than the bytecode that the interpreter is running.
48+ rely on Python's `dis <https://docs.python.org/3/library/dis.html >`_
49+ module if you expect to expect to run a bytecode other than the
50+ bytecode that the interpreter is running.
5051
51- In ` xpython ` there is a clear distinction between the version being
52- interpreted and the version of Python that is running. There is ighter
53- control of opcodes and an opcode's implementation is kept for each
54- Python version. So we'll warn early when something is invalid. You can
55- run 3.3 bytecode using Python 3.7 (largely).
52+ In * x-python * there is a clear distinction between the version being
53+ interpreted and the version of Python that is running. There is
54+ tighter control of opcodes and an opcode's implementation is kept for
55+ each Python version. So we'll warn early when something is
56+ invalid. You can run 3.3 bytecode using Python 3.7 (largely).
5657
5758The "largely" part is because the interpreter has always made use of
5859Python builtins. When a Python version running the interperter matches a
@@ -75,7 +76,7 @@ a Python bytecode execution virtual machine. Net Batchelder started
7576it (based on work from Paul Swartz) to get a better understanding of
7677bytecodes so he could fix branch coverage bugs in coverage.py.
7778
78- .. |CircleCI | image :: https://circleci.com/gh/rocky/xpython .svg?style=svg
79- :target: https://circleci.com/gh/rocky/xpython
80- .. |TravisCI | image :: https://travis-ci.org/rocky/xpython .svg?branch=master
81- :target: https://travis-ci.org/rocky/xpython
79+ .. |CircleCI | image :: https://circleci.com/gh/rocky/x-python .svg?style=svg
80+ :target: https://circleci.com/gh/rocky/x-python
81+ .. |TravisCI | image :: https://travis-ci.org/rocky/x-python .svg?branch=master
82+ :target: https://travis-ci.org/rocky/x-python
0 commit comments