Можно ли встроить PyPy в приложение .NET?
Я хотел бы встроить интерпретатор Python в свое .NET-приложение. Конечно, я знаю IronPython, но меня особенно интересует PyPy из-за его поддержки без стека и микропотоков.
Однако, хотя PyPy можно построить против CLI, похоже, что это просто дает вам автономный интерпретатор Python a la python.exe. Я не смог найти документацию для создания чего-то, что может быть встроено в хост-приложение .NET.
Есть ли способ использовать (без стека) PyPy для запуска скриптов Python из .NET-приложения и позволить этим скриптам взаимодействовать с объектами CLR, предоставляемыми хост-приложением?
Ответы
Ответ 1
Бэкэнд PyPy CLI не настолько зрелый, как C-сервер, а также не интегрируется с библиотеками .NET. В то время как обычный PyPy, скомпилированный в C, готов к производству, я бы не стал готовым к выпуску версии .NET. В нем также отсутствует JIT (хотя некоторые работы были выполнены в этой области) и микропотоков. Если кто-то не вступит, IronPython, по-видимому, является единственным жизнеспособным вариантом на данный момент.
Ответ 2
Нет, нет. CPython имел возможность обращаться к библиотекам .NET, используя Python для .NET(см. http://pythonnet.github.io/), поддерживаемый в github, но, кроме IronPython, был способом фактически внедрить интерпретатор Python в приложение .NET. Это было одним из основных пунктов продажи.
В соответствующей заметке IronPython (по умолчанию) имеет меньший размер стека, чем CPython, когда речь идет о рекурсии. То есть вы должны передать опцию командной строки "-X: FullFrames" для ipy.exe, чтобы включить кадры стека CPython-esque. Знайте, что это не так хорошо, как PyPy... но это может помочь:)