Где я могу узнать больше о функции перевода PyPy?

Мне было трудно понять перевод PyPy. Это похоже на что-то абсолютно революционное, просто прочитав описание, однако мне трудно найти хорошую документацию, фактически переведя код реального мира на что-то вроде LLVM. Существует ли такая вещь? Официальная документация PyPy на нем просто просматривает функциональность, а не предоставляет все, что я могу попробовать.

Ответ 1

Этот документ, по-видимому, идет довольно подробно (и я думаю, что полное описание выходит за рамки для ответа на stackoverflow):

Общая идея перевода с одного языка на другой не является особенно революционной, но она только недавно набирает популярность и применимость в приложениях "реального мира". GWT делает это с Java (генерирует Javascript), и есть библиотека для перевода Haskell на другие языки (так называемый YHC)

Ответ 2

Если вам нужны примеры с практическими примерами, PyPy Getting Started в документе есть раздел под названием "Попытка перевода".

Ответ 3

Переводчик PyPy в целом не предназначен для более широкого использования. Мы используем его для перевода наш собственный интерпретатор python (включая JIT и GCs, оба написанные в RPython, это ограничено подмножество Python). Идея заключается в том, что с хорошими JIT и GC вы сможете ускорить даже без знания или использования инструментария перевода PyPy (и что более важно, без ограничивая себя RPython).

Cheers, fijal

Ответ 4

Вы ищете специальный перевод на Python или просто общий "как вы компилируете код для байт-кода"? Если это ваш случай, проверьте учебник LLVM. Я особенно нахожу главу 2, в которой вам предлагается написать компилятор для вашего собственного языка, интересный.

Ответ 5

Похоже на что-то совершенно революционное, просто прочитав описание,

Насколько я знаю, PyPy является новым в том смысле, что это первая система, специально предназначенная для реализации языков. Существуют и другие инструменты, которые помогают с большей частью самого интерфейса, например генераторы парсеров, или для самого конца, такие как генерация кода, но не так много для соединения двух.