В этом туториале мы подробно разберём, как именно происходит процесс разработки канистеров на Internet Computer. Мы пройдём полный путь от hello-world проекта, сгенерированного dfx автоматически до полноценного Todo-app с бекендом и фронтендом. Разберём какие файлы для чего нужны, какие команды использовать, как тестировать и дебажить приложение. Туториал расчитан на новичков в Internet Computer и блокчейн-сетях в целом, но мы ожидаем, что небольшой опыт Rust и React у читателя уже имеется. Полный код проекта из этого туториала можно найти здесь.
WebAssembly *
Низкоуровневый байт-код для исполнения в браузере
Расширение возможностей веб-приложений с помощью WebAssembly и Python
В этой статье мы расскажем, как запустить программу на Python внутри другого приложения, использующего среду исполнения Wasm (хост), и заставить программу на Python общаться с хостом, и наоборот.
Пару месяцев назад мы добавили Python в Wasm Language Runtimes. Мы опубликовали собранный двоичный файл
python.wasm
, который можно использовать для выполнения скриптов на Python при помощи WebAssembly, чтобы обеспечить повышенную защиту и портируемость.После этого релиза мы получили много отзывов о том, как сделать его ещё более полезным для разработчиков. Одной из часто упоминаемых тем стала необходимость двунаправленной связи между хостом на Wasm и кодом на Python, выполняемым в
python.wasm
.Мы поработали над этом вместе с командой Suborbital и реализовали приложение, демонстрирующее двунаправленную связь благодаря реализации SE2 Plugin ABI. Эту работу позже внедрили в Suborbital SE2.
Пример приложения можно найти в WLR/python/examples/bindings/se2-bindings. Его легко запустить и оно позволит вам разобраться, как встраивать Python в приложение на Wasm и реализовывать привязки для двунаправленной связи.
Пишем и отлаживаем код для ARM64 на голом железе
Я хотел понять, проанализировать и тщательно рассмотреть машинный код, который выдают на моём MacBook Air M1 такие среды исполнения WebAssembly, как v8 или wasmtime. Для этого я (немного) изучил ассемблер arm64. Коллега Саул Кабрера порекомендовал мне почитать книгу Стивена Смита «Programming with 64-Bit ARM Assembly Language», и я могу только поддержать эту рекомендацию.
«Programming with 64-Bit ARM Assembly Language» by Stephen Smith, APress 2020
В книге отлично объясняется набор инструкций, приёмы оптимизации, а также действующие соглашения и интерфейсы ABI. Но с ней вы научитесь писать программы только под операционную систему. Я же люблю загружать с нуля мой собственный BBC Microbit или Rasperry Pi. В этом посте я набросал пару шагов, которые успел сделать в этом направлении.
Микросервисы Rust в серверном WebAssembly
Язык программирования Rust за последние несколько лет значительно распространился. Он несколько лет подряд считается самым любимым языком программирования среди разработчиков и включён в состав ядра Linux. Rust позволяет разработчикам писать корректные программы, обеспечивающие безопасность при работе с памятью, а также такие же компактные и быстрые, как на языке C. Он идеально подходит для создания инфраструктурного программного обеспечения, включая серверные приложения, от которых требуется высокая надёжность и производительность.
Истории
Анонсируем Dart 3
Привет из Google I/O 2023. Сегодня, в прямом эфире из Маунтин-Вью, мы объявляем о выпуске Dart 3 - самого крупного релиза Dart на сегодняшний день! Dart 3 содержит три основных усовершенствования. Во-первых, мы завершили путь к 100% надёжная null безопасности. Во-вторых, мы добавили новые возможности языка для записей, шаблонов и модификаторов классов. В-третьих, мы заглядываем в будущее, где мы расширим поддержку наших платформ, добавив нативный код для веб с помощью Wasm-компиляции. Давайте разберемся во всём в деталях.
Любите ли вы Rust, как люблю его я?
Привет, коллеги.
На самом деле ещё несколько месяцев назад я ненавидел Rust и задавался лишь одним вопросом: какого чёрта я вообще с ним связался? Но сегодня - сегодня всё иначе. И про это я хочу предложить немного доводов разобрать с ним.
Он быстрый. Конечно не в смысле разработки и отладки (особенно поначалу), а в плане работы. Код, написанный на нём, в некоторых вопросах существенно быстрее аналогичного кода, написанного на других языках программирования. Нисколько не хочу обидеть адептов других религий языковых предпочтений (уверен, вы с лёгкостью докажете, что это не так). Однако предложенные мне тесты показали, что он немного, но шустрее.
Он безопасный. Это, правда, не совсем так, но если взять условного новичка, который напишет программу на C и условного новичка, который напишет программу на Rust - шанс, что вторая выйдет более безопасной окажется существенно выше. По крайней мере, атака через переполнение буфера, почти гарантировано, провалится (не станем отрицать наличие дарований, которые даже там, где это почти невозможно, смогут заложить уязвимость).
Он необычный. Уверен, вы сталкивались со странными языками программирования. Такими, которые ломают привычную парадигму и заставляют мыслить иначе. Например, люди, всю жизнь работающие с объектно-ориентированным подходом, нередко, теряются, когда сталкиваются с функциональным программированием, т.к. там иной подход. Да даже далеко ходить не надо; столкновение с попыткой воспользоваться OpenGL из привычного C++, в какой-то момент, рвёт все шаблоны и в воздухе повисает лишь два вопроса: "какого..." и "зачем вы так со мной". Это, разумеется, проходит, но не сразу.
WebAssembly: Docker без контейнеров
«Если бы WASM+WASI существовали в 2008 году, нам бы не пришлось создавать Docker. WebAssembly на сервере — будущее компьютерных технологий», — считает Соломон Хайкс, соучредитель корпорации Docker и автор Docker Open Source Initiative.
Сравнительно недавно Docker объявил о поддержке WebAssembly на базе WasmEdge. А мы перевели фундаментальный, но практичный материал о том, как пользоваться этой технологией в экосистеме Docker и чем Wasm-контейнер отличается от классического.
Как я приютил rust wasm при помощи yarn
О том как изучив инструмент, можно навести порядок в проекте.
Решил я тут на днях попробовать соорудить что нибудь на wasm, поскольку ранее начитался про него и выбрал Rust. Это рассказ про то как я затащил wasm на фронтенд без боли.
В чём заключается упомянутая боль?
Я люблю когда в моём проекте чисто, каждая директория за что-то обязательно несёт ответственность. Я не хочу тянуть всякие lerna
в проект и прочие штуки из которых мне может понадобится всего одна фича. Возможно то что я описал для некоторых читателей и не проблема вовсе.
Распознавание банковских карт в видеопотоке в браузере с помощью SmartEngines и WebAssembly
С активным развитием и распространением технологии WebAssembly (сокращённо WASM) появилась возможность создавать веб-модули, которые можно загружать с сервера и исполнять их прямо в браузере! Мы не смогли пройти мимо такой возможности, и, после долгих оптимизаций, представили свой модуль, умеющий распознавать банковские карты, баркоды, машиночитаемые зоны, номера телефонов и документы прямо в браузере.
Дальше мы расскажем о том, как с помощью wasm-модуля от Smart Engines распознать номер банковской карты, просто поднеся её к веб-камере ноутбука.
Проблематика текущей концепции мировой сетевой инфраструктуры и решение при помощи децентрализованного детерминизма
Всем привет, уважаемые Хабровцы! Пишу вам о наболевшем. О WEB 3.0. Понимаю, что и информация была много где и много разрозненной информации, но в этой статье я постарался рассказать всю основную информацию по всем основным понятиям. Часть из информации понятна мастодонтам в области, часть очень ознакомительна, однако, думаю, информация будет интересна многим и надеюсь весьма понятна. Не будем откладывать вопрос в долгий ящик и приступим.
Kotlin 1.8.20
3 Апреля, вышло очередное обновление Kotlin 1.8.20
Вот некоторые изменения:
Как мы нейросеть в браузер тащили
Здравствуйте, товарищи! Хочу написать a good story про то, как портировал нейросеть в браузер.
Задача пришла ко мне от моих институтских друзей из ИВМ РАН. Есть некий фронтенд, на который доктор загружает КТ снимок. Доктору предлагается при помощи веб интерфейса выделить сектор с сердцем, который будет передан на сервер, где алгоритмически отсегментируется граф аорты для последующего анализа.
Меня попросили сделать нейросеть для выделения 3d сектора с сердцем, а затрачиваемое время не должно превышать 2-3 секунд.
Гонять весь КТ снимок на сервер только за координатами накладно, т.к. КТ снимок обычно состоит из 600-800 кадров размера 512 * 512 пикселей, поэтому мое предложение о браузерном варианте пришлось кстати.
Пишем простой калькулятор используя фреймворк eframe (egui)
Всем здравствуйте. Ниже будет приведен пример написания PWA приложения готового для использования как в браузере, так и на компьютере с ОС Windows. Используется язык программирования Rust и фреймворк eframe (egui). В результате получим исполняемый файл для ОС Windows, и файл Webassembly. В процессе работы будет использоваться GitHub Action для отслеживания корректности написания нашего кода и сборки исполняемых файлов программы, а также для развертывания (версию программы с использованием Webassembly) как страницы в интернете (GitHub Pages).
Ближайшие события
Создание модуля WebAssembly с помощью Emscripten, AssemblyScript и Rust
В этой небольшой заметке предлагается рассмотреть несколько способов компиляции модуля для WebAssembly, используя три разных подхода. Мы реализуем решение одной и той же задачки на трёх языках и скомпилируем полученный код в модуль WebAssembly. Будем использовать:
Emscripten для компиляции кода, написанного на С++
AssemblyScript для компиляции кода, написанного на, собственно, AssemblyScript
wasm-pack для компиляции кода, написанного на Rust
План такой:
Во введении мы обсудим постановку задачи и немножко поговорим о технологии WebAssembly
В программной части мы реализуем функциональность модуля на трёх языках: c++, AssemblyScript и Rust. Поговорим о том, какие при этом возникают сложности и как их можно обойти
Подведём небольшой итог. Станет видно, какая технология хорошая, а какая не очень
В конце планируется два бонуса. Первый бонус - это пример простого web-приложения, использующего один из скомпилированных нами модулей. Второй бонус - демонстрация того, как этот модуль можно использовать в программе на Python.
В Ruby появилась поддержка WebAssemblу: что это значит?
С выпуском версии 3.2 Ruby пополнил список языков программирования, поддерживающих WebAssembly. Небольшое на первый взгляд обновление может стать самым значительным изменением языка со времён Rails, так как теперь разработчики смогут работать не только с бэкендом. После портирования кода на WebAssembly его можно будет запускать где и как угодно — на фронтенде, встроенных устройствах, как бессерверные функции, вместо контейнеров или в граничных вычислениях. WebAssembly может превратить Ruby в универсальный язык программирования. Подробности под катом, а практика в вебе — на нашем курсе по Fullstack-разработке на Python.
Состояние WebAssembly в 2022-23 годах
Автор статьи Жерар Галлан известен как автор книги “WebAssembly in Action”, выпущенной Manning в 2018 году. Существует перевод его книги на русский — “WebAssembly в действии” (Питер, 2022). Предыдущий обзор The State of WebAssembly – 2021 and 2022 опубликован автором в январе 2022 года. — Прим. переводчика.
В этой статье я рассмотрю текущее состояние дел с WebAssembly (wasm). Начну с обзора событий 2022 года, чтобы посмотреть, сбылись ли какие-либо из моих прогнозов и не было ли каких-то сюрпризов. Затем я попытаюсь предсказать, куда, как мне кажется, всё пойдёт в 2023 году.
Once upon a time in Wasmwood или Как я реверсил игру на WASM
Прошел уже месяц с того момента, как я попытал счастья в решении челленджа по реверсу WASM игры на платформе root-me.
Компилируем C++ приложение для запуска в браузере
У фреймворка Android есть небольшой инструмент под названием validatekeymaps.
Это утилита для проверки синтаксиса конфигурационных файлов устройств
ввода (*.kl
, *.kcm
, *.idc
или virtualkeys.*
). В документации
предлагается собрать её самостоятельно: скачать исходники Android,
установить необходимую систему сборки и т.д. И это в почти 2023. Неужели
нельзя сделать это в вэбе, чтоб без заморочек и удобно для
пользователя? Спойлер: можно. Этим и займёмся.
Python на сервере и в браузере. Путь к Web Assembly
Python как технология разработки приложений преимущественно используется для создания сценариев автоматизации, создания бэкэнда и веб-приложений, а также для анализа данных и использования методов статистики и машинного обучения. Также есть некоторые подходы к созданию мобильных приложений на Python (например, движок Kivy над OpenGL для Android). Но остается незаполненной ниша использования Python-приложений в веб-браузере, что могло бы позволить перенести часть обработки данных непосредственно на клиентское устройство и создавать полноценные fullstack-приложения на одной технологии. Решением этой задачи может стать кросскомпиляция Python в код WebAssembly, который может выполняться как в браузере, так и на сервере с использованием nodejs или движка V8, либо SSVM (Second State Virtual Machine). В статье мы рассмотрим несколько подходов к запуску Python-приложений внутри браузера и сервера с использованием WebAssembly.
Фронтенд на Go с использованием библиотеки RUI
Изначально библиотека RUI разработана для создания клиент-серверных веб приложений на языке go, где вся обработка осуществляется на сервере, а браузер используется только как тонкий клиент.
Однако в последней версии библиотеки (0.10.0) была добавлена поддержка технологии WebAssembly. Теперь стало возможным объединить серверную и клиентскую часть в единый модуль исполняемый в браузере. При этом требуются минимальные изменения в уже существующем проекте использующем библиотеку RUI
В этой статье я покажу как переделать уже существующий проект чтобы его можно было скомпилировать в wasm модуль и запустить его в браузере
Вклад авторов
GRaAL 294.0nzeemin 138.8ru_vds 136.2alordash 134.0ozkriff 124.0Nurked 118.0m1rko 102.4Caiiiycuk 73.0AndreyNagih 71.0konsoletyper 65.0