Можно ли заставить Node.js использовать Rhino в качестве движка Javascript? - PullRequest
15 голосов
/ 04 декабря 2010

Я использую Node.js для нескольких заданий в своих веб-приложениях, и пока все в порядке.

Но Node.js использует Google V8 в качестве движка Javascript по умолчанию (JSE), и V8 работает исключительно на архитектурах набора команд x86 и ARM (ISA).

Теперь у меня есть компьютер Mac с процессором PPC, на котором я хочу запустить Node.js.

Для этого в качестве JIT-компилятора рекомендуется использовать виртуальную машину Rhino + OpenJDK Shark + виртуальную машину низкого уровня ( LLVM ). В настоящее время это выглядит наиболее приемлемым способом запуска Node.js на PPC ISA. Или есть лучший способ сделать это?

Не могли бы вы заранее сказать, можно ли заставить Node.js работать с Rhino? Кстати, Node.js написан на C ++, и у меня есть опыт программирования на C ++, т. Е. Я могу попытаться заново отредактировать код Node.js, если потребуется.

Спасибо.

Ответы [ 4 ]

19 голосов
/ 04 декабря 2010

Нет, node.js связан с V8 почти во всех исходных файлах и включает все надстройки, которые были написаны. Даже если у вас есть опыт работы с C ++, преобразование будет огромной задачей.

Не говоря уже о том, что, если вы пойдете по этому пути в одиночку, вы также будете одиноки в его поддержании. (Принимая во внимание, что сам node.js собрал большое сообщество участников.)

Если вы действительно хотите приложить такие усилия, сначала обсудите это в списке рассылки . Или, в качестве альтернативы, наберите обороты для PPC-порта V8. (В равной степени, если не более сложной задачей.)

Для серверного движка JavaScript, который использует Rhino из коробки, взгляните на проект Narwhal . (Хотя это кажется менее активным.)

6 голосов
/ 18 октября 2013

Существует реализация Node.js на Rhino, названная MuleSoft Rhinodo .

Но вам больше не нужно использовать Rhino в качестве бэкэнда для Node.js - недавно появилсяЭндрю Лоу (IBM): порт Node.js и V8 для PowerPC.

4 голосов
/ 04 декабря 2010

Это невозможно, так как Штеф уже сказал, что Node.js тесно связан с V8, он использует специальные методы V8 повсеместно, зависимость будет только расти в ближайшем будущем, на пути есть «хаки». во внутренности V8, чтобы значительно улучшить производительность при записи строк в сокеты.

Многие модули (утверждают, проверяют и т. Д.) Зависят от конкретных функций V8. Нет никакого способа, которым код будет каким-либо образом переносимым между V8 и другими JS-серверами на стороне сервера.

Пока Штеф рассматривает варианты, я вижу только одно решение:
Избавьтесь от оборудования PPC.

Если вы действительно хотите, чтобы он работал на Rhino, вы окажетесь в постоянном кошмаре, в конце у вас будет два приложения: либо два разных приложения, либо создайте гигантский слой времени выполнения для Rhino, который пытается эмулировать Node.js, удачи в этом, поскольку многие вещи просто не будут доступны в Rhino.

Также не будет поддержки сторонних библиотек.

Серьезно, получить другой компьютер, написать все обертки и т. Д. Самостоятельно - это будет стоить вашего времени, на котором вы могли бы написать потрясающий материал для Node.js. А так как время это деньги ...

0 голосов
/ 05 октября 2011

Проект для переноса механизма JavaScript V8, созданный в Google, на архитектуру PowerPC.

https://github.com/ic/v8-powerpc

...