{imgicourl}{zamok}
<< предыдущая заметкаследующая заметка >>
23 января 2020
Пишем веб на C и ассемблере

Как мне тут рассказал Кирилл, оказывается, уже давно браузеры позволяют выполнять не только JavaScript, но и чистые бинарники. Ну, как чистые... на самом деле не совсем чистые, потому что этот как бы бинарник сперва браузером автоматически переделывается в бинарник для вашего типа процессора, но затем уже исполняется как родной.

Пишем код, например, на языке C:

double lomain(double k) {
  for(int i=0;i<1000;i++) k+=0.00001;
  return k;
}

С помощью, например, этого онлайн-инструмента https://wasdk.github.io/WasmFiddle/ комплируем его в бинарник и получаем в итоге для браузера такие строчки, которые позволят JS обратиться к бинарнику и получить результат его работы:

<script>
var wasmCode = new Uint8Array([0,97,115,109,1,0,0,0,1,134,128,128,128,0,1,96,1,124,1,124,3,130,128,128,128,0,1,0,4,132,128,128,128,0,1,112,0,0,5,131,128,128,128,0,1,0,1,6,129,128,128,128,0,0,7,147,128,128,128,0,2,6,109,101,109,111,114,121,2,0,6,108,111,109,97,105,110,0,0,10,171,128,128,128,0,1,165,128,128,128,0,1,1,127,65,232,7,33,1,3,64,32,0,68,241,104,227,136,181,248,228,62,160,33,0,32,1,65,127,106,34,1,13,0,11,32,0,11]);

var wasmModule = new WebAssembly.Module(wasmCode);
var wasmInstance = new WebAssembly.Instance(wasmModule, []);
alert('wasmo','У вас всё работает: '+wasmInstance.exports.lomain(10.2));
</script>

Разумеется, есть и нормальные компиляторы с любого языка (вот, например, статья более подробная: https://habr.com/ru/post/342180/), но пока речь о самом принципе. Итак, если в этом окошке вы увидите число, похожее на "10.20999999999962", значит в вашем браузере wasm работает:

Опс! Вот как раз у вас не сработало! Напишите, пожалуйста, в комментарии, что у вас за система, интересно, какие еще не поддерживаются.

Я проверил у себя на Линуксе с Firefox, Сhrome, Opera и на мобильнике Chrome — везде сработало. Надеюсь, в WebView мобильных приложений тоже (пока не проверял).

Для чего это нужно? Да для чего угодно. Пал последний бастион, отделяющий браузер от любой другой среды программирования. Теперь любые вычислительные алгоритмы, нейросети, сложный анализ звука и изображений, динамические игры — всё может делать браузер ровно с той же скоростью. Лично я пока не придумал, для чего мне это может пригодиться в движке и на сайте. Но, с другой стороны, я и узнал-то об этом всего лишь позавчера ;)

<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
архив понравившихся мне ссылок
Оставить комментарий

книжный сомелье: сегодняшние книжные анонсики c Everybook

Перейти в магазин  Перейти в магазин  Перейти в магазин   22 октября — День орехов

Отметим ореховыми книгами! Борис Акунин: «Ореховый Будда». Стюарт Тёртон: галеоны Ост-Индской компании везут мускатный орех с островов Тихого океана в Европу. Василь Быков: как хохотунья Любка угощала героев лесными орехами.

Перейти в магазин   А ещё 22 октября — Международный день заикающихся людей

И снова повод пересмотреть отличнейший фильм «Король говорит!» или прочесть книгу Марка Лога и Питера Конради. В 1926 будущий король Великобритании, страдавший заиканием, обратился за помощью к логопеду-самоучке, эмигранту из Австралии...

Перейти в магазин   А ещё 22 октября — День психофизики

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