The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Началась работа над IonMonkey, новым JIT-компилятором JavaScript от проекта Mozilla

05.05.2011 12:38

Разработчики проекта Mozilla приступили к созданию нового JIT-компилятора для увеличения скорости выполнения JavaScript в движке SpiderMonkey. Новый JIT-копилятор получил название IonMonkey и пока находится на стадии проектирования архитектуры и формирования начального прототипа. IonMonkey является третьим JIT-компилятором, создаваемым в рамках проекта Mozilla, прошлые варианты были выпущены в 2010 и 2008 годах, каждый раз значительно поднимая производительность Firefox.

Новый JIT-компилятор не станет исключением, в нем ожидается реализация передовых техник оптимизиации JavaScript, некоторые из которых уже представлены в конкурирующем JIT-компиляторе Crankshaft проекта V8. JavaScript является языком с динамической типизацией, с одной стороны это предоставляет большую гибкость для разработчиков (по сути объекты в JavaScript можно рассматривать как хэш-таблицу), но с другой стороны создает трудности при создании JIT-компиляторов. Так как невозможно заранее определить какой тип данных будет содержаться в переменной, невозможно сопоставить данную переменную с определенными фиксированными инструкциями, рассматривающими эту переменную, например, как строку или число. В IonMonkey планируется провести большую работу по обеспечению более организованной работы со структурами данных и более точному учету типов. Из платформ, генерация кода для которых появится в IonMonkey, отмечаются i386, x86_64, и ARM.

В рамках проекта IonMonkey разработчики Mozilla планируют не просто создать новую технику JIT-компиляции, но и учесть ранее созданные наработки, превратив IonMonkey в единую консолидированную платформу, поддерживающую различные техники оптимизации и задействующую каждую из них в зависимости от текущей ситуации. В отличии от системы Crankshaft, разработанной для V8, в IonMonkey ожидается реализация системы вероятностной оценки типов (проект Type Inference), в рамках которой предложен гибридный метод статического и динамического анализа, позволяющий точно сопоставить типы для каждой переменой и свойства JavaScript-программы. Подобный подход даст возможность избавиться от выполнения всех дополнительных проверок в процессе работы JavaScript-программы и реализовать некоторые виды оптимизации, которые при другом подходе оказались бы невозможными.

  1. Главная ссылка к новости (http://www.infoq.com/news/2011...)
  2. OpenNews: Представлены результаты работы по интеграции JavaScript-движка V8 в Qt
  3. OpenNews: В движке V8 появилась новая подсистема JIT-компиляции JavaScript-кода
  4. OpenNews: Для JavaScript-движка Firefox создается новый JIT-компилятор
  5. OpenNews: В Firefox 3.1 производительность некоторых JavaScript операций возрастет в 20-40 раз
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/30442-jit
Ключевые слова: jit, web, mozilla, javascript, optimization, speed
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (30) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, me (??), 12:46, 05/05/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Хорошее начинание. Посмотрим во что выльется
     
  • 1.4, Аноним (-), 13:12, 05/05/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    надеюсь когда-нибуть компиляторы javascript станут настолько продвинутыми, что по скорости работы код на javascript не будет уступать коду на С...
     
     
  • 2.5, Аноним (-), 13:19, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • +3 +/
    _Никогда_ такого не будет с динамическим языком.
     
     
  • 3.33, letsmac (ok), 20:18, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Существуют сотни случаев когда динамика в среднем случае на равне или даже быстрее С. Например в случае распределенных приложений - там затыки в других местах, а разработка и багоотлов в десятки раз дешевле С. С быстр в случае только очень небольших или специализированных проектов.
     
  • 2.6, Аноним (-), 13:20, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • +5 +/
    А говорят что фантазеры все перевелись))
     
  • 2.12, Marbleless (?), 14:51, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Надеюсь, что когда-нибудь Javascript из веба выкинут и заменят на какой-нибудь другой, нормальный язык. Lua, например.
     
     
  • 3.15, bav (ok), 16:13, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > нормальный язык. Lua, например.

    Что в lua есть такого, чего нет в js? А если вспомнить про убогую стандартную библиотеку lua, то вообще смешно становится.

    Хотя слабая типизация в js раздражает, это да.

     
     
  • 4.18, Marbleless (?), 17:06, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >Что в lua есть такого, чего нет в js?

    1.Абсолютно логичный и красивый синтаксис.
    2.Если представить себе Lua как поле, где можно идти в любую сторону, куда хочешь, то JS - это лес с потайными тропами, хитро замаскированными граблями, а иногда еще из кустов совершенно неожиданно выходят волки.

    >А если вспомнить про убогую стандартную библиотеку lua, то вообще смешно становится.

    Это же встраиваемый язык, как, собственно, и Javascript. Если бы были стандартизированные расширения для браузеров, это было бы не важно.

    Потом, если взять только то, что входит в стандарт ECMAScript, разве будет намного больше функций, чем в Lua?

     
     
  • 5.23, Crazy Alex (??), 17:19, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Добавьте еще, что у Lua есть готовый рантайм с очень эффективным JIT-компилятором (на average code оно от плюсов почти не отстаёт, если мне память не изменяет).
     
  • 5.34, bav (ok), 02:14, 06/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    А скажите мне как так получилось, что в языке, который полностью построен вокруг таблиц, так хреново с ними работать?

    1) Нельзя сравнить
    2) Нельзя скопировать
    3) Нельзя привести к строке

    Элементарные, базовые операции и нельзя сделать. Приходиться городить свои велосипеды.

    P.S. Если что, я пользователь awesome и luakit с *очень* кастомизированными конфигами, поэтому об деревянность луа шишек понабивал.

    P.P.S. Кстати у схемы синтаксис еще логичнее и красивее, почему js не заменить на неё?

     
  • 4.19, Crazy Alex (??), 17:10, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, стандартная библиотека - дело решаемое, но в JS и правда много стоило бы поправить - благо косяки уже, считай, все найдены и что и как надо менять, в общем, понятно. Впрочем, писать на ActionScript 3(который, если кто не знает - реализация ECMAScript 4, со строгой типизацией и с "классической" объектной моделью) приятнее гораздо - масса ошибок ловится компилятором. Плюшки классического JS, кстати, там тоже никуда не делись - но как-то не используются особо за ненадобностью.

    Да, кстати, стандартная библиотека в JS - тоже мерзость редкая. Там же ничего нет, по большому счёту. Оно было приемлемо, когда не было приложений в браузере, но сейчас нужны как минимум эффективно реализованные (т.е. - внутри движка) коллекции и структуры данных и какая-то шина для взоимодействия скриптов, не ограниченного по доменам происхождения (и желательно - с возможностью обеспечить взаимодействие разных табов/окон).

    А вообще говоря - NaCL был бы много более перспективен.

     
  • 3.17, JIghtuse (ok), 16:55, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    JS — отличный язык.
     
     
  • 4.20, Crazy Alex (??), 17:12, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > JS — отличный язык.

    "От других".

    Не спорю, он неплох - но:
    1) он динамический
    2) он страдает от тянущихся ошибок дизайна ("+" и точки с запятой - самые известные).

    Как результат - проблемы с отладкой.

     
  • 3.24, Anon2048 (?), 17:21, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • –1 +/
    http://julien.danjou.info/blog/index.html#Why_not_Lua
     
     
  • 4.25, Marbleless (?), 17:37, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >http://julien.danjou.info/blog/index.html#Why_not_Lua

    Здесь вообще все проблемы связаны с интеграцией существующей библиотеки Lua в свое приложение. И все они решаемы, все они намного более простые, чем другие проблемы, с которыми сталкиваются разработчики современных браузеров. Тем более, что если бы Lua встраивали в браузеры, наверняка появились бы отдельные реализации, специально для этого заточенные.

    Единственная проблема, касающаяся, собственно, синтаксиса Lua - "No paradigm makes you lose time". Вот только в этом аспекте Javascript вообще ничем не отличается.

    На самом деле мой первый пост приводил Lua исключительно как пример. Я просто хотел сказать, что Javascript на сегодняшний день слишком запутан, чтобы быть "языком всея сети".

     
     
  • 5.26, Crazy Alex (??), 17:52, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    На самом деле отсутсвие парадагмы (если только язык позволяет её реализовать без помощи компиялтора) - это очень круто. Можноиспользовать то, что подходит лично вам. И никто не требует,чтобы поддержку ООП и пользовательский код писали одни и те же люди - это могут быть независимые проекты, при этом возможность выбрать подходящий вариант остаётся.

    Но, кстати, других кандидатов особо и не видно. Разные питоны как "язык всея сети" не лучше JS - не менее запутанны и существенно более ограниченны в плане возможностей программиста.

    Я бы, правда, смотрел в сторону другого выхода - выдать доступ к DOM плагинам и реализовывать рантаймов языка в их рамках, чтобы вообще не навязывать "язык всея веба". Но там на тему эффективного протокола взаимоедйствия браузера и плагина думать и думать. А интересно было бы - вплотьдо нескольких различных JS-движков на разные случаи жизни :-)

     
     
  • 6.27, Marbleless (?), 17:55, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >выдать доступ к DOM плагинам и реализовывать рантаймов языка в их рамках, чтобы вообще не навязывать "язык всея веба"

    Тут только одна проблема: мы получим в результате второй Adobe Flash.

     
     
  • 7.28, Crazy Alex (??), 18:02, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    И что?
    Проблема Adobe Flash исключительно в криворукости и неповоротливости адоба и при этом проприетарности плагина.
    При этом В нём масса хороших идей, до которых в HTML5 кое-как сейчас доползают - и отнюдь не до всех. ECMAScript 4, P2P, LocalConnection - то, чего в вебе без флеша нет и, похоже, не будет ещё долго. Сокеты - ну... websockets как-то развиваются, хотя не особо и быстро. Поддержка камеры/микрофона - вроде что-то планируется. Подписанные стандартные библиотеки, общие для всех сайтов - тут сам адоб не доделал, но в обычном вебе и такого нет, каждый сайт всё заново таскает...
     

  • 1.8, anonymous (??), 13:50, 05/05/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что-то их лихорадит. Если за три года они уже третий раз собираются переписывать такую важную часть системы, значит что-то в Датском королевстве явно не так.

    И кто-нибудь знает, что у них за маньячество по поводу обезьян? :)

     
     
  • 2.9, koblin (ok), 13:55, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    http://en.wikipedia.org/wiki/Code_monkey ?!
     
  • 2.10, szh (ok), 14:29, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    скорости много не бывает.

    > что-то в Датском королевстве явно не так.

    конкуренция не дает расслабится

     
  • 2.16, bav (ok), 16:18, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > значит что-то в Датском королевстве явно не так.

    Всё у них так. Они перекраивают "важную часть системы" без вреда для остальных кусков, а этим могут похвастаться очень мало проектов.

     
     
  • 3.21, anonymous (??), 17:14, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Хвастаться надо не тем, что мы раз в год осознаем, что шли в неверном направлении :)
     
     
  • 4.31, szh (ok), 18:37, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    шли в верном направлении, а сейчас можем зайти еще дальше по соседней тропинке
     
  • 4.36, anonymous (??), 06:18, 08/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Хвастаться надо не тем, что мы раз в год осознаем, что шли
    > в неверном направлении :)

    а, видимо, тем, что раз выбрали — и идём. а верное оно, неверное — who cares?

     
  • 2.22, Crazy Alex (??), 17:16, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Что-то их лихорадит. Если за три года они уже третий раз собираются
    > переписывать такую важную часть системы, значит что-то в Датском королевстве явно
    > не так.
    > И кто-нибудь знает, что у них за маньячество по поводу обезьян? :)

    Это не их лихорадит, это скорость развития такая. Появилось много новых идей у них и у конкурентов - надо сделать систему, в которой эти идеи можно реализовать. В общем, рефакторинг как рефакторинг - ставили бы версии вместо новых названий - никто бы и не дёрнулся.

    А насчёт обезьян - да, интересно. Возможно, это намёк на JS-кодеров ;-)

    (кто не понял - это ШУТКА).

     
     
  • 3.29, Аноним123321 (ok), 18:11, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > (кто не понял - это ШУТКА).

    а иногда нажмёшь {CTRL}+{U} .. и понимаешь .. что как раз не шутка :-)

     
     
  • 4.30, Crazy Alex (??), 18:13, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Да вот бывает... Часто и жать ничего не надо - глянешь на скорость  работы и корректность реакции, скажем, на отпавшую сеть - и грустно как-то становится.
     
  • 2.32, фыв (??), 19:21, 05/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Они её не переписывают, а дополняют. Вы бы для начала почитали про tracemonkey и jagermonkey и чем они отличаются.
     
  • 2.35, rshadow (ok), 12:11, 06/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Уже 3D игры делают в браузере ... пока очередной Crysis в фоксе не будет выдавать хотя бы 40 FPS не успокоятся.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру