Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...Pavel Dovbush
История развития проекта с точки зрения клиентских технологий - от веб-сайта к появлению мобильных клиентов и смещению фокуса к mobile-first разработке. Общие черты нашей архитектуры и их отличия от стандартных решений.
Единый протокол общения с приложениями iOS/Android/WindowsMobile/MobileWeb/Web и особенности реализации для JavaScript платформ (десктопные и мобильные браузеры).
Изменение процесса разработки и подходов к реализации нового функционала для переключения на mobile-first стратегию.
Александр Кириллов. Веб разработка: Что такое Ruby On Rails. РИФ-Воронеж 2016РИФ-Воронеж
"Тема выступления рассчитана, в основном, на начинающих разработчиков. В ней освещены основные концепции веб разработки с помощью фреймворка ""Ruby On Rails"". Выступление будет разделено на основные тематики:
- что это за фреймворк и что значит выражение “Ruby On Rails”
- будет рассмотрен паттерн MVC в Rails
- подробно рассмотрены соотвествующие уровни (модель, контроллер, представление)
- отправка почты, нюансы и решения
- отложенные и периодические задачи
- особое внимание будет уделено тестированию приложений"
"Изоморфная разработка на javascript с помощью react.js" Максим КлимишинFwdays
Современная разработка на JavaScript быстро эволиционирует – в язык входят инструменты, которые позволяют создавать прогнозируемые и надежные продукты как на сервере, так и на клиенте. С ES6 пришли генератор и итераторы, из Clojure – трансдюсеры и CSP каналы, Facebook дал React.js и Immutable.js.
Изоморфная разработка – когда один и тот же код может работать как на сервере, так и на клиенте, набирает популярность. В моем докладе я хочу раскрыть последние тренды в этой области и как это можно сделать с помощью React.js.
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...Pavel Dovbush
История развития проекта с точки зрения клиентских технологий - от веб-сайта к появлению мобильных клиентов и смещению фокуса к mobile-first разработке. Общие черты нашей архитектуры и их отличия от стандартных решений.
Единый протокол общения с приложениями iOS/Android/WindowsMobile/MobileWeb/Web и особенности реализации для JavaScript платформ (десктопные и мобильные браузеры).
Изменение процесса разработки и подходов к реализации нового функционала для переключения на mobile-first стратегию.
Александр Кириллов. Веб разработка: Что такое Ruby On Rails. РИФ-Воронеж 2016РИФ-Воронеж
"Тема выступления рассчитана, в основном, на начинающих разработчиков. В ней освещены основные концепции веб разработки с помощью фреймворка ""Ruby On Rails"". Выступление будет разделено на основные тематики:
- что это за фреймворк и что значит выражение “Ruby On Rails”
- будет рассмотрен паттерн MVC в Rails
- подробно рассмотрены соотвествующие уровни (модель, контроллер, представление)
- отправка почты, нюансы и решения
- отложенные и периодические задачи
- особое внимание будет уделено тестированию приложений"
"Изоморфная разработка на javascript с помощью react.js" Максим КлимишинFwdays
Современная разработка на JavaScript быстро эволиционирует – в язык входят инструменты, которые позволяют создавать прогнозируемые и надежные продукты как на сервере, так и на клиенте. С ES6 пришли генератор и итераторы, из Clojure – трансдюсеры и CSP каналы, Facebook дал React.js и Immutable.js.
Изоморфная разработка – когда один и тот же код может работать как на сервере, так и на клиенте, набирает популярность. В моем докладе я хочу раскрыть последние тренды в этой области и как это можно сделать с помощью React.js.
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Fwdays
On this talk, we will share unusual back streets of ASP.NET MVC for increase performance:
- brief review of usual improvements
- fast and strong typed url generation
- increase Razor performance
При создании интерактивного мобильного или веб-приложений нужна серверная часть, которую будет использовать приложение и разработчик этого приложения. Он должен знать маршруты, по которым можно найти методы, их описание, входные параметры и варианты ответов.
В идеале хочется, чтобы из API можно было мгновенно сгенерировать клиентский код. А ещё реализация метода всегда может измениться, и нужно предусмотреть версионность, чтобы старые клиенты могли продолжать работать без ошибок.
Можно подумать, что реализация этого может занять месяцы, но я покажу, как реализовать это на ASP.NET Core за 20 минут.
Микросервисная архитектура на базе CoreOS и KubernetesDenis Izmaylov
13 июля 2016 состоялся восьмой Node.js Meetup в Москве. В этом докладе мы рассмотрели Scale Cube, Docker, CoreOS и кратко Kubernetes и Concourse CI.
В следующем докладе взглянем более подробно на Kubernetes и Concourse CI, посмотрим как с помощью этих быстрых и прекрасных инструментов построить Deployment Automation.
Javascript-фреймворки: должен остаться только одинSergey Xek
Рассказ от tech-менеджера о том, как мы в Acronis выбирали фреймворк в условиях, когда любое более-менее важное технологическое решение сразу затрагивает с десяток команд, несколько сотен человек и права «случайно все сломать» нет.
В докладе пойдет речь о том, что производительность фронтенда — это больше про слаженную работу команды, про понятный и масштабируемый код, чем про сухие циферки. Но циферки тоже будут.
1) Какие у нас были проблемы с текущим фреймворком — UI, архитектура, код.
2) Как измеряли, что примерно стоит брать (исследование популярности).
3) Что рассматривали.
4) На пути к демо-проекту, какие были сложности (то, что уперли идею с Typescript, собственный компилятор шаблонов, четыре Flux-фреймворка и все плохи).
5) Два пилотных демо-проекта: цифры.
6) Оценка трудоемкости перехода.
Видеозапись доклада: http://getdev.net/Event/asp-net-mvc-4
Обзор возможностей новой версии платформы ASP.NET MVC 4. Web API, Bundling & Minification, разработка для мобильных устройств, Single-Page Web Applications, а также другие, не столь крупные, нововведения.
Субъективная точка зрения на фронтенд разработку.
Площадка: IT-бар КЛЮЧ, https://vk.com/event69759919
Видео с доклада: https://www.youtube.com/watch?v=pyAYbbDJjPo
Badoo Desktop: оптимизация приложения на миллион юзеров онлайнSergey Xek
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн. Сергей Аверин, Badoo.
Доклад рассказывает о реально примененных способах оптимизации производительности API компании Badoo для собственных десктоп-приложений: как специфика «много постоянных соединений/однотипные запросы/большая нагрузка» повлияла на стратегию оптимизации производительности.
Что было сделано:
• Планирование архитектуры изначально (fault-tolerance, адаптивные апдейты и тайм-ауты, отказ от попыток восстановления после ошибок для единичных команд).
• Переехали с redis на handlersocket.
• Rate-limiting запросов к демонам.
• Синхронизация записей.
• Асинхронность.
• Записи при достижении порога изменения параметров.
• Профилирование кода, анализ потребления CPU, времени ответа.
• Статистика, статистика и еще раз статистика.
• Pconnect.
Доклад будет интересен:
• системным архитекторам,
• server-side разработчикам.
Server-side Rendering with JavaScript Frameworks | Odessa Frontend Meetup #6OdessaFrontend
Есть ситуации, когда все файлы и картинки минимизированы, Tree Shaking убирает неиспользуемый код и всё это на хостинге с HTTP/2 загружается недостаточно быстро. Ведь время — деньги, с каждой лишней секундой при открытии страницы уменьшается число клиентов. Андрей Михайлов рассказывает как уменьшить время ожидания путем отрисовки контента на сервере, сохраняя все преимущества работы с js фреймворками, а так же про подводные камни и тонкости, которые следует учитывать.
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальностьScrumTrek
2016 год. Добро пожаловать в новую реальность.
Сегодня позиция JavaScript-разработчика является одной из самых востребованных и хорошо оплачиваемых в мире. Современные возможности JavaScript - это квестистенция всего, что произошло в отрасли разработки за всё её время существования: универсальные React-компоненты и композиция, декларативная анимация, изоморфные приложения, отсутствие side effects, авто-генерация тестов, симбиоз ООП и функционального программирования.
Последние три года выдались самые насыщенные революционные для веб-разработки. Многие разработчики, кто не успел уследить за произошедшим, задают лишь один вопрос ЧТО ПРОИСХОДИТ?
В рамках этого доклада мы попробуем синхронизироваться с JavaScript сообществом и посмотреть, что же он предоставляет нам сегодня? Как решать задачи привычные задачи? Что является актуальным направлением, а что может стать пустой тратой сил и времени?
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)Ontico
React(JS) — это современная библиотека для разработки UI компонентов от Facebook, по праву считающаяся самой трендовой технологией среди JavaScript разработчиков на 2015/16 год.
Но каким образом React стал настолько популярен в среде разработчиков, учитывая что библиотека покрывает только View из необходимого минимума MVC архитектуры? Ответ таится в экосистеме технологий, в рамках которой нам открываются совершенно новые способы разработки приложений, не только для веба, но и нативных платформ с родным UI (iOS, Android, Win 10, OSx).
Роберт расскажет, почему огромная популярность React более чем заслужена, и почему это не "очередной фреймворк", а чуть ли не самое большое изменение в JavaScript разработке за последние годы.
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Ontico
Рассказ от tech-менеджера о том, как мы в Acronis выбирали фреймворк в условиях, когда любое более-менее важное технологическое решение сразу затрагивает с десяток команд, несколько сотен человек и права «случайно все сломать» нет.
В докладе пойдет речь о том, что производительность фронтенда — это больше про слаженную работу команды, про понятный и масштабируемый код, чем про сухие циферки. Но циферки тоже будут.
1) Какие у нас были проблемы с текущим фреймворком — UI, архитектура, код.
2) Как измеряли, что примерно стоит брать (исследование популярности).
3) Что рассматривали.
4) На пути к демо-проекту, какие были сложности (то, что уперли идею с Typescript, собственный компилятор шаблонов, четыре Flux-фреймворка и все плохи).
5) Два пилотных демо-проекта: цифры.
6) Оценка трудоемкости перехода.
SECON'2016. Сергей Аверин. Javascript-фреймворки: должен остаться только одинSECON
Рассказ от tech-менеджера о том, как мы в Acronis выбирали фреймворк в условиях, когда любое более-менее важное технологическое решение сразу затрагивает с десяток команд, несколько сотен человек и права «случайно все сломать» нет. В докладе пойдет речь о том, что хорошо работающий фронтенд — это больше про слаженную работу команды, про понятный и масштабируемый код, чем про сухие циферки. Но и циферки тоже будут.
1) Какие у нас были проблемы с текущим фреймворком — UI, архитектура, код.
2) Как измеряли, что примерно стоит брать (исследование популярности).
3) Что рассматривали.
4) На пути к демо-проекту, какие были сложности (то, что уперли идею с Typescript, собственный компилятор шаблонов, четыре Flux-фреймворка и все плохи).
5) Два пилотных демо-проекта: цифры.
6) Оценка трудоемкости перехода.
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Fwdays
On this talk, we will share unusual back streets of ASP.NET MVC for increase performance:
- brief review of usual improvements
- fast and strong typed url generation
- increase Razor performance
При создании интерактивного мобильного или веб-приложений нужна серверная часть, которую будет использовать приложение и разработчик этого приложения. Он должен знать маршруты, по которым можно найти методы, их описание, входные параметры и варианты ответов.
В идеале хочется, чтобы из API можно было мгновенно сгенерировать клиентский код. А ещё реализация метода всегда может измениться, и нужно предусмотреть версионность, чтобы старые клиенты могли продолжать работать без ошибок.
Можно подумать, что реализация этого может занять месяцы, но я покажу, как реализовать это на ASP.NET Core за 20 минут.
Микросервисная архитектура на базе CoreOS и KubernetesDenis Izmaylov
13 июля 2016 состоялся восьмой Node.js Meetup в Москве. В этом докладе мы рассмотрели Scale Cube, Docker, CoreOS и кратко Kubernetes и Concourse CI.
В следующем докладе взглянем более подробно на Kubernetes и Concourse CI, посмотрим как с помощью этих быстрых и прекрасных инструментов построить Deployment Automation.
Javascript-фреймворки: должен остаться только одинSergey Xek
Рассказ от tech-менеджера о том, как мы в Acronis выбирали фреймворк в условиях, когда любое более-менее важное технологическое решение сразу затрагивает с десяток команд, несколько сотен человек и права «случайно все сломать» нет.
В докладе пойдет речь о том, что производительность фронтенда — это больше про слаженную работу команды, про понятный и масштабируемый код, чем про сухие циферки. Но циферки тоже будут.
1) Какие у нас были проблемы с текущим фреймворком — UI, архитектура, код.
2) Как измеряли, что примерно стоит брать (исследование популярности).
3) Что рассматривали.
4) На пути к демо-проекту, какие были сложности (то, что уперли идею с Typescript, собственный компилятор шаблонов, четыре Flux-фреймворка и все плохи).
5) Два пилотных демо-проекта: цифры.
6) Оценка трудоемкости перехода.
Видеозапись доклада: http://getdev.net/Event/asp-net-mvc-4
Обзор возможностей новой версии платформы ASP.NET MVC 4. Web API, Bundling & Minification, разработка для мобильных устройств, Single-Page Web Applications, а также другие, не столь крупные, нововведения.
Субъективная точка зрения на фронтенд разработку.
Площадка: IT-бар КЛЮЧ, https://vk.com/event69759919
Видео с доклада: https://www.youtube.com/watch?v=pyAYbbDJjPo
Badoo Desktop: оптимизация приложения на миллион юзеров онлайнSergey Xek
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн. Сергей Аверин, Badoo.
Доклад рассказывает о реально примененных способах оптимизации производительности API компании Badoo для собственных десктоп-приложений: как специфика «много постоянных соединений/однотипные запросы/большая нагрузка» повлияла на стратегию оптимизации производительности.
Что было сделано:
• Планирование архитектуры изначально (fault-tolerance, адаптивные апдейты и тайм-ауты, отказ от попыток восстановления после ошибок для единичных команд).
• Переехали с redis на handlersocket.
• Rate-limiting запросов к демонам.
• Синхронизация записей.
• Асинхронность.
• Записи при достижении порога изменения параметров.
• Профилирование кода, анализ потребления CPU, времени ответа.
• Статистика, статистика и еще раз статистика.
• Pconnect.
Доклад будет интересен:
• системным архитекторам,
• server-side разработчикам.
Server-side Rendering with JavaScript Frameworks | Odessa Frontend Meetup #6OdessaFrontend
Есть ситуации, когда все файлы и картинки минимизированы, Tree Shaking убирает неиспользуемый код и всё это на хостинге с HTTP/2 загружается недостаточно быстро. Ведь время — деньги, с каждой лишней секундой при открытии страницы уменьшается число клиентов. Андрей Михайлов рассказывает как уменьшить время ожидания путем отрисовки контента на сервере, сохраняя все преимущества работы с js фреймворками, а так же про подводные камни и тонкости, которые следует учитывать.
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальностьScrumTrek
2016 год. Добро пожаловать в новую реальность.
Сегодня позиция JavaScript-разработчика является одной из самых востребованных и хорошо оплачиваемых в мире. Современные возможности JavaScript - это квестистенция всего, что произошло в отрасли разработки за всё её время существования: универсальные React-компоненты и композиция, декларативная анимация, изоморфные приложения, отсутствие side effects, авто-генерация тестов, симбиоз ООП и функционального программирования.
Последние три года выдались самые насыщенные революционные для веб-разработки. Многие разработчики, кто не успел уследить за произошедшим, задают лишь один вопрос ЧТО ПРОИСХОДИТ?
В рамках этого доклада мы попробуем синхронизироваться с JavaScript сообществом и посмотреть, что же он предоставляет нам сегодня? Как решать задачи привычные задачи? Что является актуальным направлением, а что может стать пустой тратой сил и времени?
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)Ontico
React(JS) — это современная библиотека для разработки UI компонентов от Facebook, по праву считающаяся самой трендовой технологией среди JavaScript разработчиков на 2015/16 год.
Но каким образом React стал настолько популярен в среде разработчиков, учитывая что библиотека покрывает только View из необходимого минимума MVC архитектуры? Ответ таится в экосистеме технологий, в рамках которой нам открываются совершенно новые способы разработки приложений, не только для веба, но и нативных платформ с родным UI (iOS, Android, Win 10, OSx).
Роберт расскажет, почему огромная популярность React более чем заслужена, и почему это не "очередной фреймворк", а чуть ли не самое большое изменение в JavaScript разработке за последние годы.
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Ontico
Рассказ от tech-менеджера о том, как мы в Acronis выбирали фреймворк в условиях, когда любое более-менее важное технологическое решение сразу затрагивает с десяток команд, несколько сотен человек и права «случайно все сломать» нет.
В докладе пойдет речь о том, что производительность фронтенда — это больше про слаженную работу команды, про понятный и масштабируемый код, чем про сухие циферки. Но циферки тоже будут.
1) Какие у нас были проблемы с текущим фреймворком — UI, архитектура, код.
2) Как измеряли, что примерно стоит брать (исследование популярности).
3) Что рассматривали.
4) На пути к демо-проекту, какие были сложности (то, что уперли идею с Typescript, собственный компилятор шаблонов, четыре Flux-фреймворка и все плохи).
5) Два пилотных демо-проекта: цифры.
6) Оценка трудоемкости перехода.
SECON'2016. Сергей Аверин. Javascript-фреймворки: должен остаться только одинSECON
Рассказ от tech-менеджера о том, как мы в Acronis выбирали фреймворк в условиях, когда любое более-менее важное технологическое решение сразу затрагивает с десяток команд, несколько сотен человек и права «случайно все сломать» нет. В докладе пойдет речь о том, что хорошо работающий фронтенд — это больше про слаженную работу команды, про понятный и масштабируемый код, чем про сухие циферки. Но и циферки тоже будут.
1) Какие у нас были проблемы с текущим фреймворком — UI, архитектура, код.
2) Как измеряли, что примерно стоит брать (исследование популярности).
3) Что рассматривали.
4) На пути к демо-проекту, какие были сложности (то, что уперли идею с Typescript, собственный компилятор шаблонов, четыре Flux-фреймворка и все плохи).
5) Два пилотных демо-проекта: цифры.
6) Оценка трудоемкости перехода.
SECON'2016. Аверин Сергей, Javascript-фреймворки: должен остаться только одинSECON
Рассказ от tech-менеджера о том, как мы в Acronis выбирали фреймворк в условиях, когда любое более-менее важное технологическое решение сразу затрагивает с десяток команд, несколько сотен человек и права «случайно все сломать» нет.
JavaScript-модули "из прошлого в будущее"oelifantiev
Доклад на первом Ярославском форнтэнд-митапе.
Рассказ об имеющихся методиках описания модулей в JavaScript а также о грядущем стандарте ES6 и, наконец-то, нативной поддержке модулей языком.
Владимир Никонов "Вызовы при разработке enterprise продукта"Fwdays
В докладе мы рассмотрим этапы развития приложения, начиная от монолитного Web приложения, до распределенной платформы по управлению бизнес-процессами. Покажем этапы развития, задачи и вызовы, которые возникали на каждом их них. Проанализируем различные аспекты, влияющие на развитие архитектуры, такие как бизнес-требования, технологические тренды и возможные ограничения.
Построение собственного JS SDK — зачем и как?buranLcme
Многие разработчики любят делать свои велосипеды, но не все задумываются зачем. Мы расскажем о том, зачем вам может понадобится собственный JavaScript SDK и полезно ли кататься на велосипедах.
Мы делали собственный JS SDK для того, чтобы дать возможность создания плагинов в рамках большой enterprise системы - <b>Parallels Automation</b> и <b>Plesk Panel</b>. Сам SDK является частью общего стандарта <b>APS</b>, который является шиной, объединяющей все наши продукты по автоматизации. Обе панели брендируются и мы должны были сохранить брендинг при уже существующей кодовой базе верстки и существующих правилах оформления. И главное - надо было дать возможность создания UI сторонним девелоперам, которые могут иметь абсолютно разный уровень - от пришедших бекэндеров до профессиональных js-разработчиков.
Вступительная лекция по Java. История появления, идеи, сферы применения, место среди других языков, экосистема. Структурированная информация о Java, как о языке программирования.
Под эту лекцию имеется более развёрнутый материал. Кому интересно - пишите.
Конструктивная критика приветствуется.
JVM: краткий курс общей анатомии, JPoint 2016 Conference EditionNikita Lipsky
Говоря о Java, мы подразумеваем как минимум две вещи: JVM (виртуальную Java-машину) и Java-байткод, который исполняется на этой машине.
Внутреннее устройство JVM непростое, но очень важно понимать, из каких частей она состоит, какая часть за что отвечает и как это все вместе работает хотя бы в самых общих чертах. Эти знания помогут вам в понимании того, как работает ваша программа и как можно улучшить ее работу.
В этом докладе мы не будем лезть в кишки какой-то конкретной реализации JVM, однако мы покажем где у JVM кишки расположены, а также где находятся и для чего служат ее печень, сердце, почки, мозг и другие органы.
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
HighLoad++ 2017
Зал «Рио-де-Жанейро», 8 ноября, 18:00
Тезисы:
http://www.highload.ru/2017/abstracts/2905.html
Прошло более года с того момента, как Microsoft выпустила первую версию своего нового фреймворка для разработки web-приложений ASP.NET Core, и с каждым днем он находит все больше поклонников. ASP.NET Core базируется на платформе .NET Core, кроссплатформенной версии платформы .NET c открытым исходным кодом. Теперь у С#-разработчиков появилась возможность использовать Mac в качестве среды разработки, и запускать приложения на Linux или внутри Docker-контейнеров.
...
Jelastic - гибридная платформа как сервис(PaaS) для компаний- разработчиков ПО на Java, Ruby, .NET, ASP.NET, PHP, Node.JS и Docker. Позволяет строить автомасштабируемые, отказоустойчивые среды для приложений, управлять множеством сред для разработки и тестирования
3. Кратчайшая история web-приложений
• Ajax: A New Approach to Web Applications (18 февраля 2005)
• JIT-компиляция
• v8, Nitro (2008)
• TraceMonkey (2009)
• Chakra (2011)
3
4. JavaScript как compile target
JavaScript is Assembly Language for the Web (июль 2011)
• Sematic Markup is Dead! Clean vs. Machine-coded HTML
• Part 2 - Madness or just Insanity?
4
11. asm.js
статически-типизированное подмножество JavaScript
• представлен 21 марта 2013 (поддержка в FireFox 22)
• на Google I/O 2013 было объявлено об улучшенной поддержке asm.js
в Chrome 28 beta
• 7 мая 2015 объявлена поддерживается браузером Microsoft Edge
11
12. asm.js pipeline
Не предназначен для написания программ человеком, получается с
помощью компиляторов исходного кода в исходный код, таких как
Emscripten
12
15. особенности asm.js
• нет сборщика мусора
• нет потоков
• нет разделяемой памяти
• так как это подмножество JS, то
• долгий и ресурсоемкий парсинг
• большой размер конечного кода
• на нем сложно написать web-приложение вручную
15
16. PNaCl
архитектурно-независимое решение для исполнения нативного кода в
песочнице
• представлен 12 ноября 2013
• основан на NaCl
• компилирует C и C++ код в промежуточное представление
подмножества LLVM с помощью AOT-компилятора
• исполняется в песочнице браузера
16
26. a new binary syntax for low-level safe code, initially co-expressive with
asm.js, but in the long run able to diverge from JS’s semantics, in order to
best serve as common object-level format for multiple source-level
programming languages.
Brendan Eich
Он представил Web Assembly в своем блоге 17 июня 2015
“
27. High-Level Goals
• Определить портативный, эффективный по объему и времени загрузки
бинарный формат как compile-target, который в свою очередь может
быть компилирован для исполнения на околонативной скорости на
разных платформах, включая мобильные платформы и IoT.
27
28. High-Level Goals
• Описать и имплементировать
• MVP для стандартной функциональности, аналогичной asm.js
• эффективный polyfill для MVP, который позволяет транслировать
wasm в js для запуска в браузерах
• PostMVP, который добавляет несколько значимых фич
• Дополнительные фичи на основе обратной связи и опыта
использования, включая поддержку других языков
28
29. High-Level Goals
• Интеграция в существующую web-платформу:
• безверсионная разработка, обратная совместимость
• выполняется той же самантической вселенной, что и JavaScript
• предоставлять синхронные вызовы в и из JavaScript
• политика безопасности и правил ограничения домена
• доступ к функциональности браузера через Web API
• определить человеко-понятный текстовый формат, который можно
конвертировать в бинарный формат и обратно
29
31. High-Level Goals
• Создать привлекательную платформу
• новый LLVM-бэкенд и сопутствующий порт Clang
• поощрять другие компиляторы и инструменты для использования
WebAssembly как цели компиляции
• предоставить ползезный инструментарий разработки и отладки
31
33. Модули WebAssembly
• набор импортов и экспортов
• секция, определяющая линейную память
• секция с кодом
• после MVP— секция debug-информация
• Возможно другие секции в будущем
33
34. Инстанс модуля содержит
• код из модуля, из которого он был загружен
• линейную память
• полностью разрешенные импорты
• host-specific state (например, reflect экспортов в JS)
• код нескольких модулей, динамически связанных в один инстанс
(когда будет доступно динамическое связывание)
• другие семантически-видимые секции в будущем
34
37. Порядок вычисления AST
Все узлы, отличающиеся от конструкций управления, вычисляются в
том порядке, в котором они представлены в AST.
(i32.add
(set_local $x (i32.const 1))
(set_local $x (i32.const 2)))
37
38. Ловушки
Если экземпляр прервал работу, то информация об этом
прокидывается во внешнее окружение. В JavaScript окружении,
например, таком как браузер, ловушка вызывает исключение и может
быть увидена в DevTools.
38
39. Типы
WebAssembly имеет следующие типы значений:
• 32: 32-bit integer
• i64: 64-bit integer
• f32: 32-bit floating point
• f64: 64-bit floating point
39
44. Текстовый формат
• View Source для модуля WebAssembly, что позволит вписаться в web
(где каждый исходник может быть просмотрен) естественным образом.
• Отображение инструментах разработки браузера когда source maps
недоступны (обязательное требование MVP).
• Написание кода WebAssembly напрямую для педогогических целей,
экспериментов, отладки, оптимизации и тестирования спецификации.
44
45. Отладка текстового формата
Текстовый формат эквивалентен и изоморфен бинарному.
В бинарном представлении все имена функций и переменных
сжимаются до индексов, поэтому в текстовом режиме могут не
отображаться. Для решения этой проблемы можно добавить
опциональную глобальную секцию debug symbol.
45
49. PostMVP
• потоки
• SIMD
• zero-cost exception handling
• доступ к модулям JS
• Сборщик мусора
• Поддержка DOM, Web API
49
50. Дальнейшие планы
• динамическое связывание
• полное управление памятью (mmap, Shared Memory)
• низкоуровневый доступ к структурам сборщика мусора
• JIT компиляция
50
52. Feature detection
Подход, который работает
1. Компиляция нескольких версий модуля, каждый подразумевает
разную поддержку фич и использует has_feature тесты, чтобы
определить какую версию нужно загрузить.
2. Специальный уровень декодирования — использование has_feature
для определения неподдерживаемых фич и использование полифилла
или ловушек.
52
54. Какие плюсы принесет WebAssembly
Внедрение WebAssembly даст возможность воплотить в жизнь
создание новых продуктов, работающих в браузере, в том числе:
• высокопроизводительных игр
• систем редактирования видео/звука/изображений
• P2P-систем
• САПР
• средств разработки и коммуникации (запуск локального веб-сервера в
браузере, эффективная упаковка веб-фреймворков)
54
55. Что почитать
• WebAssembly Design Documents
• WebAssembly organization on GitHub
• статья о WebAssembly в блоге Брендана Айка
• статья инженера Mozilla Люка Вагнера
• интервью Эрика Эллиота с Брендоном Айком
• https://bugs.webkit.org/show_bug.cgi?id=146064
• Статья Майка Холдмана из Microsoft
55