|
|
@@ -0,0 +1,33 @@
|
|
|
+---
|
|
|
+icon: dot
|
|
|
+title: Comparison with CPython
|
|
|
+order: 99
|
|
|
+---
|
|
|
+
|
|
|
+[cpython](https://github.com/python/cpython) is the reference implementation of the Python programming language. It is written in C and is the most widely used implementation of Python.
|
|
|
+
|
|
|
+## The design goal
|
|
|
+
|
|
|
+**pkpy aims to be an alternative to lua for
|
|
|
+game scripting, not cpython for general purpose programming.**
|
|
|
+
|
|
|
++ For syntax and semantics, pkpy is designed to be as close to cpython as possible.
|
|
|
++ For ecosystem and others, pkpy is not compatible with cpython.
|
|
|
+
|
|
|
+pkpy supports most of the syntax and semantics of python.
|
|
|
+For performance and simplicity, some features are not implemented, or behave differently.
|
|
|
+
|
|
|
+## Unimplemented features
|
|
|
+1. `**kwargs` in function definition.
|
|
|
+2. `__getattr__` and `__setattr__`.
|
|
|
+3. Descriptor protocol `__get__` and `__set__`. However, `@property` is implemented.
|
|
|
+4. `__slots__` in class definition.
|
|
|
+5. `import` module from a directory with `__init__.py`.
|
|
|
+6. One element tuple. `(1,)` is not supported.
|
|
|
+7. Unpacking in `list` and `dict` literals, i.e. `[1, 2, *a]`.
|
|
|
+8. Access the exception object in try..except.
|
|
|
+
|
|
|
+## Different behaviors
|
|
|
+1. positional and keyword arguments are strictly evaluated.
|
|
|
+2. When a generator is exhausted, `StopIteration` is returned instead of raised.
|
|
|
+3. `++i` and `--j` is an increment/decrement statement, not an expression.
|