В чем проблема при разработке некоторых языков, например python для некоторых оптимизированных методов с некоторыми из LLVM / Parrot.
PyPy, LLVM, Parrot - это основные технологии для разработки общей платформы.
Я вижу это примерно так:
Прав ли я насчет этого процесса? Для питона есть оптимизированная ВМ? В частности, по умолчанию в виртуальную машину встроен оптимизированный код PyPy (шаг 5.c), который предназначен для Python, и любая языковая обработка может останавливаться на нем и запускаться на нем?
И Parrot , и PyPy предназначены для создания платформы, которая создает общую среду выполнения динамических языков, но PyPy хочет большего - еще и ВМ создать.
Где смысл PyPy? Для чего нам нужно создать больше ВМ? Не лучше сосредоточиться на одной виртуальной машине (как в Parrot) - потому что существует один общий уровень кода - либо внутренний байт-код PyPy, либо байт-код Parrot.
Я думаю, что мы не сможем ничего лучше перевести в байт-код PyPy на вновь созданные виртуальные машины PyPy.
Вопросы:
Я прав? Есть ли причина, по которой лучше переносить какой-нибудь динамический язык на llvm, чем, например, на Parrot?
Я не видел активности разработки python на Parrot. Это потому, что использование расширений Python C не работает с попугаем? Та же проблема есть в PyPy
. Почему другие виртуальные машины не хотят переходить на LLVM / parrot. Например, рубин -> попугай, CLR / JVM -> LLVM. Не лучше ли было бы перейти к более сложному решению? LLVM находится в процессе активной разработки, и в него вкладываются крупные компании.
Я знаю, что проблема может быть в перекомпиляции ресурсов, если необходимо изменить байт-код - но это не обязательно - так как мы можем попытаться перенести старый байт-код в новый, а новые компиляторы создают новый байт-код (Java все еще нуждается в интерпретации собственного байт-кода - чтобы интерфейс мог его проверить и преобразовать в новый байт-код)?
Каковы проблемы с компоновкой, например, библиотек jvm внутри llvm ( если мы каким-то образом портируем java / jvm / scala на llvm)?
Вы можете исправить меня, если я m где-то неправильно
Некоторые добавления:
= ============
УТОЧНЕНИЕ
Я хочу понять, из чего состоит все это программное обеспечение - и в чем проблема при переносе одного на другое.