Pull to refresh

Часто задаваемые вопросы про asm.js

Reading time 4 min
Views 41K
JavaScript *
Translation
asm.js — необыкновенно оптимизируемое, низкоуровневое подмножество JavaScript. asmjs.org

asm.js — новый язык?


Нет, это просто подмножество JavaScript. Программа на asm.js одинаково поведёт себя и в существующих движках JavaScript, и в движке с предварительной (ahead-of-time, AOT) компиляцией, способном распознавать и оптимизировать asm.js; различаться будет её скорость, разумеется!

Какой выигрыш в производительности можно ожидать от asm.js?


Сейчас ещё рано утверждать. Однако наши предварительные измерения производительности программ, скомпилированных из Си в asm.js, показывают не более чем двукратное замедление по сравнению с компилированными в машинный код посредством clang. Мы опубликуем дальнейшие измерения, когда насобираем их.

Как я могу следить за ходом реализации?


Мозилла работает над первой реализацией оптимизирующего компилятора asm.js для SpiderMonkey. В вики Фонда Мозиллы также опубликован план разработки дальнейших выпусков и оптимизаций. Если авторы других движков JavaScript опубликуют собственные планы реализации компиляторов asm.js, мы их здесь упомянем.

Почему бы вам не разработать синтаксис байткода вместо необычного диалекта джаваскрипта?


Для компиляторов наподобие Emscripten или Mandreel синтаксис байткодового языка попросту не особенно значим. Притом большинство байткодов и вообще машинных языков имеют двоичный формат, не читаемый людьми. Однако мы можем создать на уровне asm.js более человеко-читаемый синтаксис, который будет и удобным в дизассемблировании, и пригодным для чтения и записи людьми.

То обстоятельство, что asm.js — это JavaScript, не обернётся ли непредсказуемым выполнением кода?


Предварительная (ahead-of-time, AOT) компиляция asm.js может генерировать код, выполнение которого весьма предсказуемо, потому что валидный код asm.js ограничен крайне небольшим подмножеством JavaScript, состоящим только из строго типизированных целых чисел, чисел с плавающей точкою, арифметических операций, вызовов функций и обращения к куче.

Почему бы тогда не NaCl или PNaCl вместо этого? Вы просто упорствуете насчёт JavaScript?


Принципиальным достоинством asm.js по сравнению с новыми технологиями вроде NaCl и PNaCl является то, что asm.js работает сегодня: существующие движки JavaScript ужé неплохо оптимизируют код, написанный в таком стиле. Что означает, что разработчики могут выпускать код на asm.js сегодня, а со временем его работа будет ускоряться. Другою важною пользою является заметно бóльшая простота реализации, для которой потребуется совсем немного дополнительных механизмов поверх существующих движков JavaScript — и не понадобится слой совместимости API.

Читать дальше →
Total votes 42: ↑24 and ↓18 +6
Comments 21

Движок V8 и браузер Google Chrome станут лучше поддерживать Asm.js

Reading time 2 min
Views 22K
JavaScript *Google Chrome Node.JS *
Около двенадцати часов назад Джон Резиг нащебетал в Твиттер, что на конференции Google I/O было объявлено об улучшении поддержки Asm.js в движке V8 и во браузере Google Chrome.

Так как про Asm.js упоминали на Хабрахабре (1, 2), то достоинства его могли стать известны многим читателям. Тем приятнее им предвкушать теперь в самом скором времени появление этих достоинств не только во браузере Firefox (где они впервые были внедрены Фондом Мозиллы), но и в движке V8 (а значит — и в построенном на его основе движке Node.js!), и во браузере Google Chrome.

Но для тех читателей, которые до сих пор пропускали эту новинку мимо себя, я также вкратце напомню суть. Asm.js это особое подмножество языка JavaScript: ограничившись им в своём скрипте, автор скрипта обеспечивает возможность оптимизации интерпретируемого кода не только в момент исполнения (just-in-time, JIT), но даже и заблаговременно (ahead-of-time, AOT), то есть такому джаваскрипту становится возможно один раз однозначно заранее поставить в соответствие некоторый машинный код. Эффект этот достигается ценою заметных усилий по самоограничению. (В частности, при помощи операции «|0» и других подобных специальных приёмов тип значения каждого входного параментра функции, равно как и выходного значения, оказывается однозначно заданным и неизменным.) Зато его итогом становится небывалый рост скорости исполнения джаваскрипта — теперь по скорости он уступает скомпилированной программе (на Си или Си++) не более чем в два раза.

Читать дальше →
Total votes 84: ↑74 and ↓10 +64
Comments 49

Сериал: Big Data — как мечта. 6-я серия. BD (Bolt Data) — Быстрые Big Data данные

Reading time 5 min
Views 4.1K
PalitrumLab corporate blog Brand Analytics corporate blog Research and forecasts in IT *
В предыдущих сериях: Big Data — это не просто много данных. Big Data — процесс с положительной обратной связью. «Кнопка Обамы» как воплощение rtBD&A. Философия развития Big Data. В новой серии впервые упомянем о новом E-ngine — воплощении мечт IBM, Google и др.

Только ленивый (включая и сценаристов нашего сериала) уже не высказался со своим мнением по поводу «Who is Big Data?» Сегодня давайте порассуждаем не про объемы, а про скорострельность потоков данных. Англоязычное слово Bolt имеет так много смыслов, что легко можно подобрать другой смысл для двухбуквия BD вместо Big Data — Bolt Data, в том числе: удар молнии, вылетать, выболтать, говорить быстро и невнятно.
Читать дальше →
Total votes 7: ↑7 and ↓0 +7
Comments 4

[Питер] Дмитрий Чуйко — JEP 295: Ahead-of-Time компиляция для HotSpot

Reading time 1 min
Views 2.5K
JUG Ru Group corporate blog

В четверг 22 декабря в 20:00 в петербургском офисе компании Oracle состоится встреча JUG.ru c Дмитрием Чуйко, инженером Oracle из Java SE Performance Team. Тема встречи — Ahead-of-Time компиляция для HotSpot JVM.

Существуют различные реализации платформы Java. В некоторых из них есть Ahead-of-Time (AOT) компиляторы, причём подход к решению различный, да и постановка задачи разная. В данный момент в HotSpot есть JIT‑компиляция, но нет стандартного AOT. Но не обязательно, что так будет всегда.
Читать дальше →
Total votes 16: ↑16 and ↓0 +16
Comments 0

Никита Липский и Дмитрий Чуйко об AOT в Java на jug.msk.ru

Reading time 4 min
Views 5.8K
JUG Ru Group corporate blog Java *
Очередная встреча московской Java User Group прошла 22 мая 2017 года традиционно в офисе компании КРОК. На ней Никита Липский и Дмитрий Чуйко рассказали о статической (Ahead-of-Time) компиляции в языке программирования Java и её реализации в продуктах компаний Excelsior и Oracle.


Читать дальше →
Total votes 24: ↑22 and ↓2 +20
Comments 18

SvelteJS: Релиз второй версии

Reading time 6 min
Views 13K
Website development *JavaScript *Client optimization *HTML *SvelteJS *
Буквально вчера вышла 2-я версия молодого, но весьма многообещающего фреймворка SvelteJS. Версия мажорная, а значит содержит не только новые фичи и исправленные баги, но и соответствующие «breaking changes». Что новенького предлагает разработчикам новая версия и почему Svelte стал еще лучше, читайте под катом.
image
Читать дальше →
Total votes 21: ↑21 and ↓0 +21
Comments 97

Чикаго «умнеет» на глазах

Reading time 9 min
Views 11K
Dronk.Ru corporate blog Smart House IOT Ecology The future is here
Чикаго — город ветров на пересечении денежных потоков, второй после Нью-Йорка экономический центр США сегодня всерьез претендует на то, чтобы в обозримой перспективе, как минимум, сравняться по уровню развития и интеграции умных цифровых технологий с ведущими интеллектуальными центрами Азии и Европы. Об амбициозных планах администрации города в реализации программы Array of Things, призванной до конца 2017 года превратить Чикаго в эпицентр интернета вещей Среднего Запада мы расскажем в этой публикации.

image
Подробнее
Total votes 21: ↑18 and ↓3 +15
Comments 5

Исчезающие фреймворки

Reading time 6 min
Views 48K
Website development *JavaScript *Client optimization *HTML *SvelteJS *
Translation
Этот пятничный пост посвящен переводу интересной статьи, вышедшей вчера на Medium. Решил осваивать для себя новый жанр переводов, поэтому прошу сильно не пинать, если где-то что-то не так. А по возможности даже уведомлять об ошибках и опечатках в личку.

Спасибо и хорошего прочтения!

Читать дальше →
Total votes 50: ↑48 and ↓2 +46
Comments 180

PHP 8: чего ждать. Письмо Зеева Сураски

Reading time 5 min
Views 48K
Badoo corporate blog High performance *Website development *PHP *Programming *
Translation


Привет, меня зовут Николай Крапивный, я руковожу отделом server-side разработки в Badoo. В Badoo PHP —  один из основных языков, на нем написана бóльшая часть бизнес-логики нашей системы. Поэтому мы следим за новостями из мира PHP, активно участвуем в развитии языка и стараемся развивать сообщество вокруг PHP.

Сегодня я бы хотел поделиться переводом письма Zeev Suraski, одного из основателей Zend Technologies, которое обрисовывает дальнейшее развитие PHP и проливает свет на то, чего нам ждать в PHP 8.

Читать дальше →
Total votes 92: ↑89 and ↓3 +86
Comments 263

Легенда о Фреймворке Всевластия

Reading time 11 min
Views 13K
Website development *JavaScript *Client optimization *ReactJS *SvelteJS *
Tutorial
В последнее время набирает популярность тренд «исчезающих фреймворков», локомотивом которого, без сомнения, можно считать SvelteJS — buildtime-фреймворк и компилятор в ванильный javascript.

Несмотря на то, что концептуально Svelte весьма прост, а в использовании еще проще, многие разработчики задаются вопросом, в чем же killer-фича данного фреймворка, да и подхода в целом? Почему это не «yet another javascript framework»?

В этой статье я расскажу про одну из множества суперспособностей Svelte, которые могут всерьез облегчить вам жизнь.

Давайте разберемся, но сначала я расскажу вам одну легенду…


Читать дальше →
Total votes 33: ↑24 and ↓9 +15
Comments 12

Виды компиляции в JVM: сеанс черной магии с разоблачением

Reading time 11 min
Views 15K
Издательский дом «Питер» corporate blog Programming *Java *Compilers *
Translation
Всем привет!

Сегодня вашему вниманию предлагается перевод статьи, в котором на примерах разобраны варианты компиляции в JVM. Особое внимание уделено AOT-компиляции, поддерживаемой в Java 9 и выше.

Приятного чтения!
Читать дальше →
Total votes 19: ↑18 and ↓1 +17
Comments 5

Ahead-of-Time компиляция и Blazor

Reading time 3 min
Views 4.4K
Website development *.NET *Compilers *C# *WebAssembly *

В .NET 6 запланирована поддержка AOT компиляции для Blazor WebAssembly приложений. Давайте попробуем запустить в Preview 2 версии.

Анонса и инструкций пока что нету. Поэтому и решено написать этот пост.

Читать далее
Total votes 10: ↑10 and ↓0 +10
Comments 3

Как мы запустили программу на Java без JavaVM

Reading time 19 min
Views 8.5K
1С corporate blog Java *Software
Всем привет! В этой статье мы расскажем о том, как технология GraalVM Native Image помогла нам решить ряд задач в одном из наших новых продуктов, написанном на Java, расскажем о проблемах, с которыми столкнулись в ходе применения этой технологии, и о том, как эти проблемы решали.
image
Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Comments 6

Обработка русского языка на Java

Reading time 4 min
Views 8.2K
Search engines *Programming *Java *Kotlin *Natural Language Processing *
Tutorial

Рассказ пойдет об одной новой, общедоступной Java/Kotlin библиотеке, для работы с русским языком. Она позволяет получить исходные формы + морфологическую информацию для большинства слов русского языка. Статья предназначена для тех, кто создает ботов, обрабатывает сообщения и занимается поиском. Для справки, ключевое отличие лемматизации от стеммизации (урезания до нормализованной формы) состоит в том, что лемма удовлятворяет правилам языка, например для слова "яблоками" леммой будет "яблоко", а не просто урезанный корень. Лемма может быть и более сложной, например для слова люди, начальная форма – человек. В этой статье мы рассмотрим способ быстрого извлечения такой информации из морфологического словаря.

Запустить процесс
Total votes 10: ↑10 and ↓0 +10
Comments 13

Компиляция Python

Reading time 7 min
Views 57K
Цифровое проектирование corporate blog High performance *Python *Programming *Compilers *

Предположим, вы разработали приложение или библиотеку на Python и уже готовитесь передать его / её  заказчику. И в этот момент появляются разные вопросы.

Во-первых, к вам прибегает озадаченный проджект-менеджер и говорит: «Мы решили не отдавать исходный код, ведь это наша интеллектуальная собственность. Придумайте что-нибудь, чтобы заказчик был доволен, а мы оставили у себя исходники».

Во-вторых, возникает вопрос окружения - хочется быть уверенным, что заказчик справится с установкой правильной версии Python и всех вспомогательных библиотек, но это не всегда простая задача. Было бы удобно упаковать приложение в автономный исполняемый файл.

И, наконец, хочется,  чтобы конечное приложение работало быстрее, чем в среде разработки.

И вот тут настало время скомпилировать Python-код.

Меня зовут Руслан, я старший разработчик компании «Цифровое проектирование». Сегодня я расскажу, как выбрать тот самый компилятор из множества доступных.

Читать далее
Total votes 10: ↑10 and ↓0 +10
Comments 21