Как стать автором
Обновить

Flash Player будет удален с сайта Adobe в декабре

Время прочтения 2 мин
Просмотры 35K
Информационная безопасность *Adobe Flash
image

Adobe напомнила, что прекратит распространение и обновление Flash Player после 31 декабря 2020 года. До этого момента компания продолжит выпускать регулярные исправления безопасности для Flash Player, поддерживать его совместимость с ОС и браузерами, а также добавлять новые функции и возможности.

Однако после 31 декабря Adobe удалит страницы загрузки Flash Player со своего сайта, а содержимое на основе Flash будет заблокировано для запуска в Adobe Flash Player.
Читать дальше →
Всего голосов 23: ↑23 и ↓0 +23
Комментарии 89

Команда Wasmtime перешла в Fastly в рамках работы Bytecode Alliance

Время прочтения 2 мин
Просмотры 1.3K
Open source *Системное программирование *API *IT-компании WebAssembly *
image

Bytecode Alliance, который появился почти год назад, объявил о слиянии Lucet и Wasmtime. Команда Wasmtime переходит на работу в Fastly.
Читать дальше →
Всего голосов 11: ↑11 и ↓0 +11
Комментарии 0

Smart Engines предоставила безопасную альтернативу сервисам распознавания документов в Интернете

Время прочтения 4 мин
Просмотры 2K
Блог компании Smart Engines Обработка изображений *Браузеры Машинное обучение *WebAssembly *

Компания Smart Engines первой в России представила промышленные технологии распознавания документов в браузере, не предполагающие пересылку исходных, промежуточных или справочных данных с клиентского устройства. Новое решение подходит для персональных устройств, объектов интернета вещей (IoT) и позволяет минимизировать риск утечки изображений с паспортными данными клиентов через Интернет. Исследователи компании решили сложную научно-техническую задачу разработки алгоритмов ИИ режима реального времени для полноценного распознавания в браузере и предложили качественную и безопасную альтернативу сервисам распознавания для пользователей, разработчиков и бизнеса.

Читать далее
Всего голосов 10: ↑4 и ↓6 -2
Комментарии 6

Cloudflare добавила поддержку Rust для создания воркеров

Время прочтения 2 мин
Просмотры 1.8K
Разработка веб-сайтов *JavaScript *API *Rust *Периферия

В Cloudflare внедрили поддержку создания воркеров на Rust без использования JavaScript. Соответствующий код опубликован на GitHub. 

Читать далее
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 0

Выпущена браузерная виртуальная машина с Debian

Время прочтения 6 мин
Просмотры 13K
Блог компании SkillFactory Разработка веб-сайтов *Виртуализация *Браузеры WebAssembly *

В Leaning Technologies создали виртуальную бессерверную среду Linux, которая запускает немодифицированные двоичные файлы Debian в браузере. Подробностями делимся к старту курса по Fullstack-разработке на Python.

Читать далее
Всего голосов 12: ↑11 и ↓1 +10
Комментарии 8

Злоумышленники используют WebAssembly для майнинга в браузерах

Время прочтения 1 мин
Просмотры 2.4K
Информационная безопасность *WebAssembly *

Компания Sucuri, специализирующаяся на информационной безопасности, заявила, что злоумышленники используют WebAssembly для запуска криптомайнеров в браузере пользователей. Специалисты компании провели подробное расследование после того, как один из клиентов пожаловался, что его компьютер значительно замедляется после перехода на собственный портал на базе WordPress.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 5

Клиенты банков смогут в 4 раза быстрее распознавать QR-коды, карты и номера телефонов через веб-браузеры

Время прочтения 2 мин
Просмотры 724
Блог компании Smart Engines Алгоритмы *Браузеры Искусственный интеллект WebAssembly *

AI-компания Smart Engines обновила систему распознавания банковских карт, QR-кодов и номеров телефонов. В Smart Code Engine 1.13.0 скорость считывания в веб-браузере возросла в 4 раза. По сравнению с предыдущей версией существенно улучшилось и качество распознавания.

Smart Code Engine используется банками для платежей. Встроенное в приложение ПО сканирует QR-коды, банковские карты, номера телефонов через камеру смартфона. Распознавание банковской карты на современном смартфоне происходит за 0,035 с.

Читать далее
Всего голосов 10: ↑7 и ↓3 +4
Комментарии 0

Google, Microsoft, Mozilla и другие объединились для запуска WebAssembly, нового бинарного формата для Web

Время прочтения 2 мин
Просмотры 61K
Разработка веб-сайтов *JavaScript *Браузеры WebAssembly *
Перевод
Google, Microsoft, Mozilla и инженеры проекта WebKit 17 июня сделали анонс, что они объединились для запуска WebAssembly, нового бинарного формата для компилирования веб-приложений.
Читать дальше →
Всего голосов 76: ↑71 и ↓5 +66
Комментарии 192

WebAssembly: начало новой эры

Время прочтения 7 мин
Просмотры 94K
Разработка веб-сайтов *JavaScript *Браузеры WebAssembly *
Перевод
Веб ожидает большое будущее.
Вчера Брендан Айк “взорвал” сообщество веб-разработки: веб получит новый низкоуровневый бинарный компилируемый формат, который будет работать гораздо лучше, чем JavaScript.
Google, Microsoft, Mozilla, а также несколько независимых специалистов работают над новым проектом в W3C WebAssembly Community Group, и то, над чем они работают, совсем не маленькая вещь.
Читать дальше →
Всего голосов 38: ↑34 и ↓4 +30
Комментарии 67

Полвека «универсальным машинным языкам» (1966—2016): прошлое, настоящее, будущее

Время прочтения 27 мин
Просмотры 19K
Assembler *Компиляторы *
КДПВ

Прошлое


Повествование можно начать с 1962 г., когда в Кембриджском университете началась работа над CPL («Cambridge Programming Language») — «усовершенствованным вариантом» ALGOL-60. К работе над языком подключился аспирант Мартин Ричардс; главной сложностью в реализации нового ЯП ему показалась необходимость ручного портирования компилятора для разных компьютерных платформ. В частности, когда кембриджский EDSAC-2 заменили на Atlas-2, разработчики CPL потратили много времени на портирование своего компилятора для новой платформы.

Диссертация Мартина была посвящена «само-компилирующемуся» CPL: разработанный Мартином компилятор был написан на сильно упрощённом варианте CPL, компилятор которого несложно было написать на тогдашнем макроассемблере. Перенос CPL на новую платформу теперь можно было выполнить в два шага:
  1. Вручную пишем компилятор «упрощённого CPL»;
  2. Компилируем им компилятор «полного CPL».

На этом Мартин не остановился, и разработал BCPL — систему для разработки переносимых компиляторов. Компилятор BCPL генерировал псевдокод, названный Мартином «OCODE».
OCODE выглядел примерно так:
OCODE «расшифровка» («procode»)
94 5 L1 83 73 69 86 69
95 4
42 0
42 0 40 2 14
83
42 0 42 1 40 2 14 83
42 2
40 3 42 1 15
92
85 L5
90 L6
42 1 40 4 40 2 14 83
40 4 42 1 14 80 4 
90 5 40 4 40 5 88 L6
91 4
42 2 40 3 42 1 15 92
85 L7
90 L8 40 4 40 2 14
8 87 L9
40 4 42 2 11 92
85 L11
90 L10
42 0 40 6 40 2 14 83
40 4 40 6 14 80 6
90 L11
40 6 40 3 22 86 L10
91 6 90 L9
40 4 42 1 14 80 4
90 L7 40 4 40 5 88 L8
91 4 97 103 0
ENTRY 5 L1  'S' 'I' 'E' 'V' 'E'
SAVE 4
LN 0
LN 0 LP 2 PLUS
STIND
LN 0 LN 1 LP 2 PLUS STIND
LN 2
LP 3 LN 1 MINUS
STORE
JUMP L5
LAB L6
LN 1 LP 4 LP 2 PLUS STIND
LP 4 LN 1 PLUS SP 4
LAB L5 LP 4 LP 5 ENDFOR L6
STACK 4
LN 2 LP 3 LN 1 MINUS STORE
JUMP L7
LAB L8 LP 4 LP 2 PLUS
RV JF L9
LP 4 LN 2 MULT STORE
JUMP L11
LAB L10
LN 0 LP 6 LP 2 PLUS STIND
LP 4 LP 6 PLUS SP 6
LAB L11
LP 6 LP 3 LS JT L10
STACK 6 LAB L9
LP 4 LN 1 PLUS SP 4
LAB L7 LP 4 LP 5 ENDFOR L8
STACK 4 RTRN ENDPROC 0
; заголовок процедуры
; стековый кадр (два параметра и две локальные переменные)
; поместить на стек число 0
; поместить ещё один 0, прибавить к нему 2-ой элемент стека
; записать в массив на вершине стека значение под ним
; всё то же самое для 1-ого элемента массива
; поместить на стек число 2
; вычесть единицу из значения 3-его элемента стека
; записать результат в локальную переменную
; перейти к метке L5
; объявление метки L6
; взять 4-ый элемент стека, записать в массив по этому индексу 1
; прибавить к 4-ому элементу стека 1, записать результат обратно
; L5: перейти к метке L6, если 4-ый элемент стека <= 5-ому
; объявление, что на стеке сейчас четыре элемента
; вычесть единицу из значения 3-его элемента стека
; перейти к метке L7
; L8: сложить 4-ый и 2-ой элементы стека
; прочитать значение по этому адресу; если это 0, перейти к L9
; умножить 4-ый элемент на два
; перейти к метке L11
; объявление метки L10
; взять 6-ой элемент стека, записать в массив по этому индексу 0
; прибавить к 6-ому элементу стека 4-ый, записать рез-т обратно
; объявление метки L11
; перейти к метке L10, если 7-ой элемент стека меньше 4-ого
; на стеке сейчас шесть элементов; объявление метки L9
; прибавить к 4-ому элементу стека 1, записать результат обратно
; L10: перейти к L8, если 4-ый элемент стека <= 5-ому
; на стеке четыре элемента; окончание процедуры
(Для экономии места, последовательности команд записаны в одну строчку. Мартин в своём руководстве по BCPL поступает точно так же.)

Исходный код на BCPL:
LET sieve(workvec, vecsize) BE
{
  workvec!0 := 0
  workvec!1 := 0
  FOR i = 2 TO vecsize-1 DO workvec!i := 1
  FOR i = 2 TO vecsize-1 DO
    IF workvec!i DO
    { LET j = 2 * i
      WHILE j < vecsize DO
      { workvec!j := 0
        j := j + i
      }
    }
}
В более новых версиях OCODE добавилась поддержка чисел с плавающей точкой (соответственно, набор поддерживаемых опкодов почти удвоился), а также удалили опкод ENDFOR — вместо него генерируется пара LE JT.

Среди «универсальных машинных языков» OCODE уникален тем, что метки в нём определяются специальными инструкциями — т.е. для интерпретации программы её нужно сначала всю загрузить в память, и найти в ней метки.
— а отдельная программа, кодогенератор, превращала файл с таким псевдокодом в исполнимую программу для конечного процессора. OCODE сохранялся в виде текстового файла из десятичных чисел, разделённых пробелами и переводами строк: в то время, когда OCODE разрабатывался, привязка формата файла к конкретному размеру байта ограничивала бы переносимость такого файла.

Компилятор BCPL(1) поставлялся в виде OCODE, и чтобы перенести его на новую платформу, нужно было:
  1. Вручную написать интерпретатор псевдокода(2) (на любом языке, хоть на Бейсике);
  2. Адаптировать кодогенератор,(3) написанный на BCPL, для своей платформы;
  3. Запустить под интерпретатором (2) компилятор BCPL (1), скормить ему кодогенератор (3), и получить на выходе исполнимый файл кодогенератора(4);
    • Интерпретатор (2) нам с этого момента больше не нужен.
  4. Прогнать через кодогенератор (4) псевдокод компилятора (1), и получить на выходе исполнимый файл компилятора.


Такой подход означал, что для переноса компилятора на новую платформу требуется лишь самый минимум низкоуровневого программирования; и действительно, реализация BCPL была завершена к 1967 г. — раньше, чем была завершена реализация CPL, начатая на несколько лет раньше!

Достоинства BCPL применительно к системному программированию вдохновили Кена Томпсона на создание языка Би, а тот — коллегу Кена, Денниса Ритчи, на создание Си. Именно из BCPL пошла традиция обозначать {фигурными скобками} блоки программы, и именно на BCPL была написана первая программа «Hello, World!».
GET "libhdr"

LET start() = VALOF
{ writef("Hello*n")
  RESULTIS 0
}
Более важная нам причина, по которой BCPL вошёл в историю: OCODE — первая универсальная «архитектура набора команд» (ISA), т.е. «виртуальная машина», не привязанная ни к какой конкретной аппаратной платформе с её особенностями. BCPL, таким образом — первый язык программирования, соответствующий парадигме «Write once, run anywhere» (WORA): программу на BCPL можно распространять в скомпилированном виде, и её можно будет запустить на любой платформе, для которой существует OCODE-кодогенератор.
Читать дальше →
Всего голосов 53: ↑51 и ↓2 +49
Комментарии 45

Итоги 2015: веб-разработка

Время прочтения 7 мин
Просмотры 17K
Блог компании GeekBrains Разработка веб-сайтов *JavaScript *Node.JS *
Представители КРОК, Traffic Inspector, WebMoney Transfer и Softline рассказали, что принес 2015-й год в сферу веб-разработки. Эксперты перечислили важнейшие события индустрии и отметили основные тренды уходящего года.



Ключевые события и тренды


2015-й – это год утверждения стандарта HTTP/2 (предыдущая версия протокола была принята в 1999). Это год массового перехода на стандарт HTML-5 с устаревшего Flash, который уже не поддерживается большинством современных браузеров. Это год появления WebAssembly, который в дальнейшем позволит перенести требовательные к производительности приложения в Web, что по мнению Сергея Дорогина, ведущего инженера-разработчика Департамента информационных технологий компании КРОК, означает “начало нового мира”.

Большинство тенденций уходящего года в сфере веб-дизайна, связаны с ростом популярности гаджетов и распространением мобильного интернета. Среди них такие как использование адаптивной верстки вместо создания отдельной мобильной версии сайта. Один из основных трендов – минималистичный дизайн, заданный Apple, помимо этого эксперты пророчат долгоиграющую популярность материальному дизайну от Google.
Читать дальше →
Всего голосов 10: ↑7 и ↓3 +4
Комментарии 4

Компилируем С\С++ код в WebAssembly

Время прочтения 6 мин
Просмотры 19K
Блог компании Инфопульс Украина Разработка веб-сайтов *C++ *Компиляторы *WebAssembly *
Туториал
Перевод
WebAssembly — это новый бинарный формат, в который могут быть скомпилированы веб-приложения. Он проектируется и реализуется прямо в тот момент, когда вы читаете эти строки и двигают его вперёд разработчики всех основных браузеров. Всё меняется очень быстро! В этой статье мы покажем текущее состояние проекта с достаточно глубоким погружением в инструментарий по работе с WebAssembly.

Для того, чтобы WebAssembly заработал, нам нужны две основных компоненты: инструменты для сборки кода в бинарник формата WebAssembly и браузеры, способные этот бинарник загрузить и выполнить. И то, и другое ещё не полностью создано и очень сильно зависит от завершения работы на спецификацией WebAssembly, но в общем-то это отдельные компоненты и их развитие идёт параллельно. Это разделение — хорошая вещь, оно позволит компиляторам создавать WebAssembly-приложения, способные работать в любом браузере, а браузерам — запускать WebAssembly-программы не зависимо от того, каким компилятором они были созданы. Другими словами — мы получаем открытую конкуренцию инструментов разработки и браузеров, что непрерывно будет двигать всё это вперёд, принося конечному пользователю отличный выбор. Кроме того, такое разделение позволяет командам разработчиков инструментария и браузеров работать параллельно и независимо.

Новый проект на стороне инструментарий WebAssembly, о котором я хочу сегодня рассказать, называется Binaryen. Binaryen это библиотека для поддержки WebAssembly в компиляторах, написанная на С++. Если вы лично не работаете над компилятором WebAssembly, то вам, вероятно, не нужно напрямую знать что-либо о Binaryen. Если вы используете какой-нибудь компилятор WebAssembly, то он, возможно, под капотом использует Binaryen — мы рассмотрим примеры ниже.
Читать дальше →
Всего голосов 28: ↑20 и ↓8 +12
Комментарии 58

6 впечатляющих веб-технологий 2015 года

Время прочтения 5 мин
Просмотры 55K
Блог компании Plarium Разработка веб-сайтов *JavaScript *Разработка мобильных приложений *Тестирование веб-сервисов *
Перевод
2015 год выдался богатым на нововведения, связанные с улучшениями веб-платформы. Аксель Рошмайер рассматривает 6 технологий, которые ему кажутся наиболее интересными:

1. Electron;
2. React Native;
3. Прогрессивные веб-приложения;
4. Visual Studio Code;
5. Rollup;
6. WebAssembly.



Читать дальше →
Всего голосов 29: ↑20 и ↓9 +11
Комментарии 37

Три основных браузера добавили поддержку низкоуровневого бинарного формата WebAssembly

Время прочтения 2 мин
Просмотры 37K
Разработка веб-сайтов *JavaScript *Браузеры WebAssembly *
Перевод
Google, Microsoft и Mozilla на этой неделе синхронно выпустили экспериментальные билды браузеров с поддержкой WebAssembly (wasm) — эффективного низкоуровневого языка программирования, выполняющегося в браузере с производительностью гораздо выше, чем у самых современных и скоростных компиляторов JavaScript.

Разработчик из Mozilla Люк Вагнер рассказал на Mozilla Hacks о преимуществах WebAssembly, а также сообщил о портировании на WebAssembly научно-фантастического шутера Angry Bots. Демка запускается в браузерах с поддержкой WebAssembly — это последние версии Chrome Canary, Firefox Nightly и Microsoft Edge. Скоро к ним присоединится Safari на WebKit.
Читать дальше →
Всего голосов 43: ↑39 и ↓4 +35
Комментарии 31

Собираем ваш первый WebAssembly-компонент

Время прочтения 6 мин
Просмотры 29K
Блог компании Инфопульс Украина Firefox JavaScript *Google Chrome WebAssembly *
Перевод
Когда я впервые услышал о технологии WebAssembly — она сразу показалось мне крутой вещью и мне сразу захотелось попробовать её в деле. От первого желания, до чего-то работающего мне, однако, пришлось потратить немало времени и порой испытать кое-какие разочарования. Для того, чтобы сохранить ваше время и ваши нервы, если вам захочется повторить тот же путь, и написана данная статья.

image
Предупреждение читателю

Эта статья написана 24-го июня 2016-го года. Поскольку WebAssembly очень молодая и динамично развивающаяся технология, со временем многие описанные в данной статье вещи устареют или полностью изменятся — учитывайте это.

А теперь поехали.

Что такое WebAssembly?

Официальная документация говорит следующее: «WebAssembly или wasm это новый портабельный, эффективный по размеру и скорости загрузки формат компиляции для веба». Эм-м-м-м… Что? Формат чего? Текстовый или бинарный? Да, это откровенно плохое описание. Так что убирайте уже ваши баззворд-бинго карточки и я, на основе моего опыта, дам своё определение:

«WebAssembly или wasm это спецификация байткода для написания производительных, браузеро-независимых компонентов для веба». Это определение, тоже, конечно, не вершина эпистолярного жанра, но я попробую его дополнить. WebAssembly позволяет повысить производительность с помощью использования статически типизированных переменных, которые обходятся на рантайме значительно дешевле динамических. WebAssembly разрабатывается W3C Community Group и планируется быть внедрённым во все основные браузеры. И с этого момента на стол выкладывается киллер-фича: вы сможете писать код веб-компонентов на любом языке программирования.

Теперь звучит лучше, неправда ли?
Читать дальше →
Всего голосов 48: ↑44 и ↓4 +40
Комментарии 30

64-битная арифметика в браузере и WebAssembly

Время прочтения 9 мин
Просмотры 16K
Разработка веб-сайтов *JavaScript *Компиляторы *Браузеры WebAssembly *

WebAssembly активно разрабатывается и уже достиг состояния, когда собранный модуль можно попробовать в Chrome Canary и Firefox Nightly, включив флажок в настройках.


Сравним производительность арифметических вычислений с 64-битными числами в WebAssembly, asm.js, PNaCl и native-коде. Посмотрим на инструменты, которые есть для WebAssembly сейчас, и заглянем в недалёкое будущее.

Читать дальше →
Всего голосов 56: ↑56 и ↓0 +56
Комментарии 11

WebAssembly – путь к новым горизонтам производительности

Время прочтения 6 мин
Просмотры 19K
Блог компании RUVDS.com Разработка веб-сайтов *JavaScript *WebAssembly *
Перевод
Если вы – из тех программистов, которые в новогоднюю ночь пообещали себе писать более быстрый код, сегодня у вас есть шанс это обещание выполнить. Мы поговорим о том, как ускорить работу веб-решений с использованием технологии WebAssembly (сокращённо её называют wasm). Технология это очень молодая, сейчас – пора её становления, однако, она вполне может оказать серьёзное влияние на будущее разработки для интернета.

image

Здесь я расскажу о том, как создавать модули WebAssembly, как с ними работать, как вызывать их из клиентского кода в браузере так, будто это модули, написанные на JS. Мы рассмотрим два набора реализаций алгоритма поиска чисел Фибоначчи. Один из них представлен обычными JavaScript-функциями, второй – написан на C и преобразован в модуль WebAssembly. Это позволит сравнить производительность wasm и JS при решении схожих задач.
Читать дальше →
Всего голосов 35: ↑30 и ↓5 +25
Комментарии 33

Краткая история JavaScript. Часть 3

Время прочтения 7 мин
Просмотры 14K
Блог компании Лайв Тайпинг Разработка веб-сайтов *JavaScript *Браузеры WebAssembly *
Перевод
Третья и заключительная часть перевода статьи из блога сервиса Auth0 A Brief History of JavaScript. Ключевые моменты: транспайлеры и ECMAScript 2015, немного о новом процессе подготовки обновлений, чего ждать в будущем и как на него повлияют Asm.js и WebAssembly. Перевод подготовлен отделом фронтенд-разработки компании Лайв Тайпинг.

Краткая история JavaScript. Часть 1
Краткая история JavaScript. Часть 2


Читать дальше →
Всего голосов 20: ↑19 и ↓1 +18
Комментарии 1

Пробуем делать web-frontend на Rust (WebAssembly)

Время прочтения 4 мин
Просмотры 36K
Firefox Разработка веб-сайтов *JavaScript *Rust *WebAssembly *

Недавно вышла новость про то, что webassembly теперь включен в firefox 52 из коробки. А потом еще и chrome 57 подтянулся (правда, там вроде бы были какие-то баги с запуском). Я решил, что обязательно надо попробовать.


Для тех, кто не знает, что такое webassembly краткая информация: webassembly (или wasm) — это низкоуровневый язык, который понимают браузеры, и в который можно будет скомпилировать программы, написанные на популярных языках. Это гораздо более выгодно по скорости парсинга и выполнения, чем компилировать эти языки в чистый javascript или какой-нибудь asm.js.


Wasm задумывался в основном для c/c++, но, на удивление, уже все готово, чтобы скомпилировать программу на rust. Давайте сделаем небольшое приложение и посмотрим, что получится. Все это будем компилировать на Ubuntu. Без теоретических деталей, просто "пощупаем".

Читать дальше →
Всего голосов 63: ↑61 и ↓2 +59
Комментарии 144

Раскрываем тему WebAssembly с Бренданом Айком

Время прочтения 24 мин
Просмотры 13K
Firefox JavaScript *Assembler *IT-стандарты *WebAssembly *
Перевод
(Прим. перев.: технологии asm.js и WebAssembly ещё не вышли в практическую плоскость, о них регулярно идут сдержанные сигналы с самых верхов Олимпа разработки веб-технологий (Mozilla, Microsoft, Google), но многие об их состоянии знают мало. Значит, самое время — узнать о них сейчас.

Представлено интервью Брендана Айка, сделанное 31 марта 2017 года Оно — на 1.5 часа, но 2-я половина — про проект браузера Brave, не относится к компиляторам JS), создателя Javascript и журналистов из SE Daily.

Читать дальше →
Всего голосов 21: ↑19 и ↓2 +17
Комментарии 12