Компания Facebook открыла исходные тексты легковесного JavaScript-движка Hermes (https://hermesengine.dev/), оптимизированного для выполнения приложений на базе фреймворка React Native (https://facebook.github.io/react-native/) на платформе Android. Поддержка Hermes встроена (https://github.com/facebook/react-native/releases) в React Native начиная с сегодняшнего выпуска 0.60.2. Проект признан решить проблемы с большим временем запуска нативных JavaScript-приложений и значительным потреблением ресурсов. Код написан (https://github.com/facebook/hermes/) на языке C++ и распространяется под лицензией MIT.В движке поддерживается (https://github.com/facebook/hermes/blob/master/doc/Features.md) часть JavaScript-стандарта ECMAScript 2015 (конечной целью является его полная поддержка) и обеспечивается совместимость с большинством существующих приложений React Native. Для включения Hermes в приложении React Native достаточно добавить в проект опцию "enableHermes: true". Также возможна сборка Hermes в режиме CLI-интерфейса, позволяющая выполнить произвольные JavaScript-файлы из командной строки
Из достоинств применения Hermes отмечается сокращение времени запуска приложения, снижение потребления памяти и уменьшение размера приложения. Ускорение запуска приложений достигается благодаря применению на этапе сборки предкомпиляции в компактный и эффективный байткод. Для непосредственного выполнения приложения применяется разработанная в рамках проекта виртуальная машина со сборщиком мусора SemiSpace. При применении V8 наиболее длительными являются стадии парсинга исходного кода и его компиляции на лету. Hermes выносит эти стадии на этап сборки и поставляет поставлять приложения в форме оптимизированного байткода.
Обработка JavaScript разделяется на несколько стадий. Вначале осуществляется парсинг исходных текстов и генерация промежуточного представления кода (Hermes IR (https://github.com/facebook/hermes/blob/master/doc/IR.md)),&...основанного на представлении SSA (https://ru.wikipedia.org/wiki/SSA) (Static Single Assignment). Далее, промежуточное представление обрабатывается в оптимизаторе, который применяет техники упреждающей статической оптимизиации для преобразования первичного промежуточного кода в более эффективное промежуточное представление, сохраняя при этом оригинальную семантику программы. На последнем этапе генерируется байткод для регистровой виртуальной машины.
URL: https://www.theregister.co.uk/2019/07/12/facebook_hermes_jav.../
Новость: https://www.opennet.ru/opennews/art.shtml?num=51082
Но ведь уже есть QuickJS.
Без jit он работает в слоумо в сравнении с любым браузерным движком. А это поделие может вырасти как дополнение к чакре, для простого встраивания.
Оно же умеет в native компилять. Но без DOM и CSS, да.
В натив умеет компилять только великий nectarjs, а quick - обычный интерпретатор, который можно со скриптом внутри в бинарник собрать.
> а quick - обычный интерпретатор, который можно со скриптом внутри в бинарник собрать.Тогда отредактируйте новость, чтобы устранить эту ошибку:
> Более того, доступен компилятор qjsc, способный на выходе генерировать пригодные для обособленного запуска исполняемые файлы, не требующие внешних зависимостей.
https://www.opennet.ru/opennews/art.shtml?num=51079
Если это действительно ошибка, разумеется.
"The generated C source contains the bytecode of the compiled functions or modules."
Не вижу противоречий. Бенчмарков его нет, но сомневаюсь что это что-то меняет.
> В натив умеет компилять только великий nectarjsНо чтобы его запустить нужен nodejs с npm.
Если бы ты запустил, то понял шутку)
Астрологи объявили неделю легковесных движков javascript.
А кто объявил год баянов на опеннете?
3-ие Герои всегда живы!
Их нельзя убить.
Это же уже и во вторых вроде было?
Это было во всех частях
>нативных JavaScript-приложенийОксюморон
Астрологи объявили неделю JS-велосипедов.
Количество постов с JS движками увеличилось вдесятеро.
> Проведённое сотрудниками Microsoft предварительное тестирование производительности показало, что при использовании Hermes приложение Microsoft Office для Android становится доступно для работы через 1.1 сек. после запуска и потребляет 21.5MB ОЗУ, в то время как при использовании движка V8 на запуск тратится 1.4 сек., а потребление памяти составляет 30MB.Т. е. программеры Фейсбука корячились, пыхтели, а на выходе получилось то же что и всегда у них получалось - толсто и тормознуто. Во всяком случае существенной разницы между "до" и "после" я не вижу. Фабрис Беллар смотрит на них с жалостью и презрением.
Гугл, к слову, в своем Flutter решил проблему кардинально - написал целую операционную систему вместо Android, где DartVM встроен в ядро и не требует распространения вместе с приложениями.
JS-движков что-то как грязи. Почему так?
Потому что JS-кодеры фейсбука приходят к начальству и говорят: наши приложения тормозят, нужен новый движок. Начальство, вместо того, чтобы отхлестать их линейкой по рукам, заказывает сишникам новый JS-движок. Сишники пишут новый движок, на эпсилон процентов быстрее предыдущего. Но вскоре жабаскриптеры снова приходят к начальству с жалобой на тормозньй движок.
Почему бы js-говнокодерам не научиться оптимизировать свой говнокод?
А это вообще возможно с JavaScript?
Герме́с (др.-греч. Ἑρμῆς, микен. e-ma-a2[1]) — в древнегреческой мифологии бог торговли, прибыли, хитрости, разумности, ловкости и красноречия, дающий богатство и доход в торговле. Покровитель глашатаев, послов, пастухов, путников; покровитель магии, алхимии и астрологии. Посланник богов и проводник душ умерших (отсюда прозвище Психопомп — проводник душ) в подземное царство Аида, изобрёл меры, числа, азбуку и обучил людей.Спасибо!)
> ПсихопомпО, так и будем называть!
> нативных JavaScript-приложений
> Код написан на языке C++А не проще писать сами "нативные приложения" сразу на C++?
Изыди, Еретик.
Зачет )))))
ну, во-первых в джава больше равноа дальше по накатанной
а потом: фу, ваше приложение для заказа пиццы аварийно завершило работу! у вас слишком кривые руки, чтобы писать на С++Нативное в react native - возможность налабать "веб страничку с кнопками, которая работает без интернета или с маленьким количеством интернета" для телефона или планшета.
Ты так пишешь словно java или js аварийно не завершаются.
И есть qml, который быстрее джавы и js, писался специально под интерфейсики и гораздо проще плюсов, что даже ты осилишь.
Сколько уже раз они переизобрели JVM со всеми этими WebAssembly и проч.?
Да потому что это овнище как ни оптимизируй, всё равно на выходе лажа получается.
И лучше более-менее универсального V8 для этого овнища пока что не придумано.
Каждый любитель должен написать свой мессенджер. А профессионалы - свой эффективный движок JS.
>JS
>Android
>Microsoft OfficeКккомбо!
Я что-то не понимаю, но рынке мобильников происходит тоже, что и на рынке ПК: память и CPU теряют стоимость, не говоря о том, что все знают про интеловские процы LV и ULV (т.е не топсикрет). Зачем бросать силы на эти оптимизации? Через несколько лет это станет бесмысленным (как бы это уже сейчас так).
Если говорить про настоящие крошечные устройства, то там всегда будет на первом месте ЯП со строгой типизацией, компиляторы в нативный байткод и вставки ассемблера для пущего шика.
Что касается node.js, то в той же Visual Studio она жрет ресурсов немерянно и на 2х ядрах студия еле-еле ворочаяется. И это уровень, который хотят достигнуть? Только после того как изобретут карманные атомные батарейки.
Вёб-макак допустили до программирования приложений, развелось интерпретируемых/JIT языков как грязи, а сишники не могут найти работу.
сишников не могут найти работодатели, их нет нифига. все или уже работают, или "ok &= a" вместо "ok = ok && a" пишут
Плохо ищут. Либо плохо учили английский и не там ищут. На мировом рынке, несмотря не все, спрос превышает предложение.
Facebook, не пробовал нанимать нормальных JS-программистов, чтобы не писали тонны говно-кода, который еле шевелится?
Зачем нужны js программисты, если есть нормальные c++/go/rust разработчики? Да даже питон и проще и быстрее.
Питон тормознее раз в 10, чем v8
>Питон тормознее раз в 10, чем v8Джентельмены верят друг другу на слово?
да, но
python -> cython -> c
профит
раз в 80, чем v8
> раз в 80, чем v8Может, сразу в 100500?
Сравнивать ЯП с реализацией другого ЯП - это вообще "сильно".
зачем питон если есть js?
Глядя на убогое глюкавое поделие под названием Facebook что-то другое в их исполнении смотреть желания не возникает. Каким-то удивительным образом React у них получился норм. Но всё остальное...
В каком месте React норм? После того как Яндекс стал переводить свои сервисы на него, пользоваться стало невозможно. Открой Маркет или из любопытства загляни на главную поисковика и попробуй покликать. Ничем не лучше тормознутого Facebook, на который любят все ссылаться.
ну instagram - вполне себе няшный и более менее минималистичный (по сравнению с facebook)
Наконец-то!
Hermes vs. QuickJS vs. v8?Голова уже крУгом от этих ужастиков.
>что при использовании Hermes приложение Microsoft Office для Android становится доступно для работы через 1.1 сек. после запуска и потребляет 21.5MB ОЗУ, в то время как при использовании движка V8 на запуск тратится 1.4 сек., а потребление памяти составляет 30MB.Меньше чем нативная версия на десктопе?????
> Hermes выносит эти стадии на этап сборки и позволяет поставлять приложения в форме компактного и эффективного байткода.WASM? Не слышал...