А как код питона можно скомпилировать в мелкомягкий байткод, ведь он статический?Некоторые фичи приходится эмулировать (особенно динамические, ну или множественное наследование).
EBFEА то. Вот мне и интересно, как они это в код дотнета компилируют, или врет педивикия? Где бы об этом почитать?
Некоторые фичи приходится эмулировать (особенно динамические, ну или множественное наследование).
odnochlenhttp://msdn.microsoft.com/en-us/magazine/cc163344.aspx
Вот мне и интересно, как они это в код дотнета компилируют, или врет педивикия? Где бы об этом почитать?
odnochlenВроде-бы в python-wiki пишут
Насчет jython-а - он вроде ничего и не компилирует, просто еще один интерпретатор на яве
JPython is an implementation of the Python programming language which is designed to run on the Java™ Platform. It consists of a compiler to compile Python source code down to Java bytecodes which can run directly on a JVM, a set of support libraries which are used by the compiled Java bytecodes,Но опять же - многое приходится эмулировать, так что JIT здесь по моему особо не задействовуется:
>>> import py_compile
>>> py_compile.compile('simple.py', 'simple.class')
doc
Compile a source file to byte-code and write out the byte-code cache file
ebfe@debian:~$ more simple.py x = 1 + 2 print x ebfe@ubuntu:~$ icepick-javap -c simple Compiled from "simple.py" public class simple$py extends org.python.core.PyFunctionTable implements org.python.core.PyRunnable{ static final simple$py self; static final org.python.core.PyString _0; static final org.python.core.PyInteger _2; static final org.python.core.PyInteger _1; ... 9: aload_1 10: iconst_1 11: invokevirtual #22; //Method org/python/core/PyFrame.setline:(I)V 14: getstatic #26; //Field _1:Lorg/python/core/PyInteger; 17: getstatic #29; //Field _2:Lorg/python/core/PyInteger; 20: invokevirtual #35; //Method org/python/core/PyObject._add:(Lorg/python/core/PyObject;)Lorg/python/core/PyObject; 23: astore_2 24: aload_1 25: ldc #37; //String x 27: aload_2 28: invokevirtual #40; //Method org/python/core/PyFrame.setlocal:(Ljava/lang/String;Lorg/python/core/PyObject;)V ... }
Можешь сконпелированый java байткод выложить?