Тег

WebAssembly

10 материалов

Блог заявил: у совершенства один ответ. HN построил бетонный домик на дереве (var0.xyz)

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

Другой комментатор вспомнил худший код в своей карьере: команда городила микросервисную архитектуру для веб-приложения с меньшей аудиторией, чем у его собственного хобби-сайта.

Не просто заголовок — разбор дискуссии

Главные треды HN: факты из обсуждений, разные стороны, голоса инсайдеров. Email, Telegram или RSS.

«Баги нельзя найти, читая код». Одна строка про ревью расколола экспертов (mathstodon.xyz)

Формулировка оказалась слишком резкой, и автор зашёл в тред её сузить: как математик он имел в виду, что нельзя найти все баги или какой-то конкретный баг, а не то, что баги не находятся вовсе.

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

LLM написал 100 000 строк, чтобы запустить Kubernetes в браузере — и он вычитал каждую (ngrok.com)

Developer-educator из ngrok перенёс часть Kubernetes на TypeScript так, что кластер целиком работает в браузере: поды, DNS, деплойменты, сборка мусора — всё на стороне клиента. Почти всё написали LLM: около 100 000 строк в 552 коммитах за два месяца.

Ответ на неизбежное «это же просто мусор?»: вычитал каждую строку плюс 204 интеграционных и 1855 юнит-тестов, сверяющих поведение с настоящим кластером через официальный клиент k8s. SRE в треде заметил: лёгкие 80% сделаны, а вся боль — в ConfigMaps, Secrets и Ingress.

Эмулятор Game Boy от студента обгоняет нативный интерпретатор, JIT-ясь в WebAssembly (humphri.es)

Фокус во втором слое. WATaBoy выдаёт байткод WebAssembly для горячего кода игры, а движок Safari сам компилирует этот Wasm в нативный машинный код — так эмулятор едет на JIT браузера, а не борется с ним.

Системный инженер в треде сдул сенсацию арифметикой: накладные расходы Wasm — около 20 процентов, у цикла интерпретатора — около 1000. Обогнать интерпретатор никогда и не было сложным. Новизна в том, что JIT-рантайм для Game Boy вообще существует.

Half-Life 2 запустился в Safari у школьника раньше, чем у самой Valve (hl2.slqnt.dev)

Порт опирается на режим рендеринга ToGLES: движок Source выдаёт вызовы OpenGL ES, рассчитанные на Android, а Emscripten переводит их в WebGL2. Всё началось с веб-порта Portal, который сделал друг; тот, в свою очередь, был форком кодовой базы Source, восходящей к утечке 2020 года.

Порт заодно показывает, чего в нём нет. Джеймс Дарпиниан, экс-Meta и Google, перечислил отсутствующие шейдеры: у G-Man нет глаз, ни у кого не двигаются губы, экраны с Брином пустые.

И всё это работает на железе, которое Valve бросила. В этом и весь смысл.

F3: формат файлов, который таскает свой декодер внутри себя в виде WASM. Гениально — или мина замедленного действия (github.com)

F3 (Future File Format) собрал 621 очко. Идея, которая всех зацепила: формат самоописываемый — внутри файла лежат и данные, и WASM-бинарники для их декодирования, чтобы не зависеть от языковых SDK.

Восторг быстро встретил скепсис. «Если я архивирую петабайты на 10+ лет, я не хочу полагаться на то, что WASM-интерпретатор будет доступен и производителен в будущем», — пишет один инженер. А ещё внутри встроенного декодера придётся дебажить чужой код.

Бесплатный курс Cornell по компиляторам — и почему сооснователь WebAssembly правит одну главу (cs.cornell.edu)

CS 6120 — курс Адриана Сэмпсона из Cornell для аспирантов, выложен в режиме самообучения без регистрации. 14 уроков: от SSA до динамических компиляторов, статьи с PLDI/ASPLOS, задачи на Bril — минималистичном IR, созданном специально для курса.

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

MicroUI — полноценная GUI-библиотека в ~1100 строках C, которая сама ничего не рисует (github.com)

MicroUI выдаёт список команд рисования и требует ввод обратно; сама не рисует и не аллоцирует ничего сверх фиксированной области памяти. Так она остаётся достаточно портируемой, чтобы компилироваться в WebAssembly и работать в браузере.

Один давний пользователь назвал её своим выбором для игрушечных проектов, но пометил как фактически заброшенную, с известным багом в команде рисования — невыровненным доступом по указателю, безобидным, пока не запустишь под Zig, который ровно на этом паникует.

В 2014-м он предсказал, что JavaScript станет невидимым к 2035-му. Мы прошли полпути (destroyallsoftware.com)

Доклад Бернхардта 2014 года был не про смерть JavaScript. Его тезис: быстрое подмножество вроде байткода (asm.js) становится универсальной целью компиляции, граница между ОС и браузером растворяется, а JS выживает как невидимая основа, в которую компилируют, но к которой не прикасаются.

Оценки расходятся. По направлению WebAssembly доказал его правоту. Но один инженер указывает на загвоздку: Wasm до сих пор не может трогать DOM, поэтому JavaScript-склейка никуда не денется — сроки прогноза сдвигаются.

WASI 0.3 приносит нативный async — и в единственном рантайме, без браузера, снова ломает старый WASI (bytecodealliance.org)

WASI 0.3, ратифицированный 11 июня, заменяет старые примитивы опроса полноценными stream<T>, future<T> и async-функциями, переходя на планирование по завершению, как в io_uring. Один цикл событий, управляемый хостом, делят все компоненты.

Отрезвляющая реплика гендиректора Wasmer в треде: он работает в одном серверном рантайме, браузеры не поддерживают, и он снова ломает совместимость с оригинальным WASI. А спустя десятилетие скептики всё ещё спрашивают, случился ли у WebAssembly прорыв.