Общее использование V8 на стороне сервера: изоляты - PullRequest
0 голосов
/ 19 декабря 2018

Движок Google с открытым исходным кодом V8 - зрелый, производительный JIT-компилятор.

Реализуется в основном в C ++, выступая в качестве среды выполнения JS.

Имеет реализацию изоляция (V8: Isolates), обеспечивающая детализацию изоляции внутри одного процесса.

Отвечая на вопрос из двух частей.

(Общий) Может ли эта возможность широко использоваться для изоляции между серверными механизмами веб-приложений (например,nginx, apache) и языки программирования?

(и более конкретно ->)

Что я понял в V8 - это то, что он разработан для языка сценариев JS (даже если он компилируется непосредственно в машинный код).Желая использовать язык программирования для исходного кода - скажем, Haskell, C ++ / C - тогда, как правило, все еще имеется интерфейс JS между ними.Будет ли прямой способ для генерации машинного кода при использовании V8: Isolates?

1 Ответ

0 голосов
/ 19 декабря 2018

V8 - это движок JavaScript (и WebAssembly, в последних версиях), и поэтому его нельзя использовать для компиляции или выполнения любых других языков.

Если у вас есть код C ++, вам нужно будет использовать C ++компилятор для генерации исполняемого машинного кода для него.Для кода на Haskell требуется компилятор на Haskell.

В зависимости от ваших требований, вам может быть интересна WebAssembly: это переносная цель компиляции для таких языков, как C ++, которая больше подходит для этой цели, чем JavaScript.

Это должно ответить как на ваш «более конкретный», так и на «общий» вопрос.

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

Кроме того, обратите внимание, что в этом году мир узнал, что с точки зрения безопасности на самом деле не существует такой вещи, какизоляция процесса.Если у вас есть строгие требования к безопасности, то по крайней мере вам придется запускать отдельные процессы для разных доменов безопасности.(Для ясности, изоляторы V8 не обеспечивают защиту от атак по побочным каналам.)

...