Pull to refresh

Comments 10

Технология хорошая, но получившийся .exe весит 4 мегабайта и запускается больше 5 секунд на довольно быстром современном десктопе :(. Огорчает, что Iron- и J- версии python и ruby всего лишь портировали интерпритатор вместо того чтобы компилировать код питона в байткод соответствующей виртуальной машины.

BTW, может знаете — какие такие у всех фатальные трудности скомпилировать исходник на питоне/руби в байткод CLR? Понятно что reflection и eval() потребуют дополнительной машинерии — но что там фатально сложного что никто даже не пытается и тянут с собой интерпретатор?
Могу предположить, что всё дело в философии: Python компилируется только в Python bytecode, который можно прогнать через dis. А если поддерживать технологию компиляции напрямую в байткод виртуальной машины, это усложнит сам проект.

Python, наверное, потому и получил популярность, что развивать его код было просто. Хотя, согласен, компиляция в другой байткод/naive была бы полезна.
Перестал таскать интерпретатор пару месяцев назад. Компиляция исходников в родные системе либы с помощью CPython и мелкий загрузчик в 3 строчки на чем угодно (лично я использую C#)
Отличное решение! Делитесь практической частью! )
Ну насчет компиляции в либы тут: habrahabr.ru/post/138537/, много граблей но лучшего решения для себя не нашел.
Насчет загрузчика для C# — подключаем скомпилированную либу (dll/so) в проект, выполняем фунцкию из подключенной либы (есть небольшая зависимость кода от того что выполняем, но почти всегда это 1-2 строчки) :)
Ставлю в избранное ;)
Стандартом требуется reflection не только на модули-функции, а еще и на stack frame например. Не представляю, как сделать питоновский frame напрямую из clr frame.
Встроенный интепретатор решает вопрос.
JIT позволяет не слишком при этом тормозить.
py2exe/cx_Freeze так же умеют делать на выходе 2 файла (да и вообще по умолчанию именно так и делают)
Ну а при чем тут CPython вообще непонятно.
Кстати, стоит оговориться, что ключ /standalone появился только в версии pyc.py поставляемой с IronPython 2.7.2. В этой же версии появился zipimport. Версии ниже не поддерживают sys.path.append(r'.\Lib.zip') Пруф
Добавил в текст. Спасибо!
Sign up to leave a comment.

Articles