Я ищу виртуальную машину со следующими функциями:
- Небольшая скомпилированная область кода (ниже 200K).
- Нет внешних зависимостей.
- Поддержка Unicode (или raw).
- Очистить код/хорошо организованный.
- C (99) код, не С++.
- Синтаксис типа C/Java.
- Операторы/побитовые: AND/OR и т.д.
- Поддержка Threading.
- Общий/портативный байт-код. Bytecode должен работать на разных машинах, даже если он был скомпилирован в другой архитектуре с различной степенью точности и т.д.
- Barebones, ничего не нужно. Только базовая поддержка языка.
- Lexer/парсер и компилятор отдельно от VM. Я буду внедрять VM в программу, а затем скомпилировать байт-код независимо.
До сих пор я рассмотрел Lua, Squirrel, Neko, Pawn, Io, AngelScript... и единственный, который близок к спецификации, - Lua, но синтаксис ужасно, он не имеет побитовой поддержки, а стиль кода обычно отстой. Белка и ИО огромны, в основном. Пешка проблематична, она небольшая, но байт-код не является кросс-платформой, и реализация имеет некоторые серьезные проблемы (например, байт-код не проверен вообще, даже заголовки AFAIK).
Я хотел бы найти подходящий вариант там.
Спасибо!
Обновление: Устные переводчики Javascript - это... интерпретаторы. Это вопрос VM для виртуальной машины на основе байт-кода, следовательно, требование разделения компилятора/байт-кода vm. JS интерпретируется и очень редко компилируется JIT. Я не хочу, чтобы JIT обязательно. Кроме того, все текущие анализаторы ECMAScript почти невелики.