2013-05-28 3 views
2

Каковы будут шаги по обновлению инструментальной цепочки PyPy, чтобы можно было подставить RPython с любым четко определенным статически типизированным языком (например, «RRuby», «RJavaScript» или любым подмножества Haskell или ML или C, которые соответствуют функциям RPython)? Можно ли определить генератор АСТ для каждого из этих языков и передать АСТ в инструментальную цепочку? Или RPython полностью запекается в toolchain?Создание языковой привязки PyPy

Я думал, что что-то вроде этого переопределит проект PyPy, по крайней мере, первую цель создания «набора инструментов для реализации интерпретаторов для интерпретируемых языков». Это полностью отделит Python от этого аспекта проекта. Таким образом, можно написать, например. «RuRu», а не просто «Ruby-реализация на основе PyPy».

ответ

0

Есть много возможных ответов на этот вопрос. Один ответ: да, вы можете попробовать, но это не очень интересно. Да, вы можете играть с другим интерфейсом, который загружается в одну и ту же инструментальную цепочку; но тогда вы только меняете синтаксис, и все.

Давайте рассмотрим пример написания «RuRu» в «RRuby», а не в RPython. Если вы только измените внешний интерфейс PyPy, то язык RRuby, который вы получаете, в основном просто RPython с другим синтаксисом. Инструментальная цепочка по-прежнему будет считать, что RRuby обрабатывает те же типы объектов, как строки, списки, кортежи, dicts, все с поведением Python-ish.

Это, вероятно, не то, что вы хотите от реального RRuby. Вы хотите вместо этого подмножество Ruby с поведением Ruby-ish. Поддержка этого в PyPy намного больше работает.