gavr_sas
214 subscribers
2.67K photos
183 videos
28 files
781 links
JB пропаганда
Download Telegram
Чисто смолтолкеры 19того века
gavr_sas
Штош можно меня поздравить, я официально в Wasmе, скоро будут про него посты.
Первый пост общий хелло ворлд.

Конкретно сам Wasm это спецификация виртуальной машины, вот она https://webassembly.github.io/spec/core/

Каждый браузер сам её у себя реализует, тут все как с js.

Виртуальная машина стековая, то бишь в отличии от регистровых у нас есть только стек, шото кладем шото берем, а потом бам, юзаем инструкцию которая все все вертит и кладет обратно результат.
Например
push 2
push 3
// на стеке 2, 3
add
// на стеке 5



Что представляет из себя Wasm по факту:

Это бинарь с байткодом для виртуальной машины, типа всего 4 i32, i64, f32, f64
Все что можно делать это писать внутри функции, и экспортировать какие нибудь из них.
Снаружи, например из js(но не только) можно инициализировать Wasm модуль(скорее всего скачав его через fetch API), достать оттудова функции которые экспортирует модуль и вызвать с аргументами.

#wasm
gavr_sas
Первый пост общий хелло ворлд. Конкретно сам Wasm это спецификация виртуальной машины, вот она https://webassembly.github.io/spec/core/ Каждый браузер сам её у себя реализует, тут все как с js. Виртуальная машина стековая, то бишь в отличии от регистровых…
Почему только числа?

В процессоре тоже только числа, все логично, привязавшись к какой-нибудь конкретной реализации типов вроде String получится менее универсально, может для скорости мы хотим аски таблицу, а у нас токо UTF-8(в JVM), так что хотите строки, будьте добры предоставить свою реализацию, держы инты, не потеряй.
#wasm
Ухх, в ним конфе дисскусия о Wasm на час.

Так то из-за того что Wasm токо спецификация то у него полно реализаций:

1) 3 браузера - Safari(JSCore), Chromium(V8) и Mozilla(SpiderMonkey)
Тут основные отличия пока в том что хром умеет оптимизировать отдельные кусочки, а мозила оптимизирует полученный Wasm целиком.

2) Binaryen — тулчейн для компиляции В Wasm, то есть если у вас есть язык и вы хотите добавить ему Wasm таргет компиляции, то это для оно. На выходе тут сильно оптимизированный Wasm, на входе обычный Wasm или контрол флоу граф(около AST).
Компилирует паралельно в многа потоков, оптимизация многопроходная, упрощенный пример: в результате первого прохода 2 ^ 2 оптимизировалась до 2 * 2, а в результате второго до 2 + 2

То есть Binaryen — этакий LLVM для Wasm, он содержит в себе большое количество отдельных тулзов вроде merge, который скрещивает много wasm бинарей в один, но в том числе тут есть и интерпретатор, но есть результат можно запускать.

На нем работают AssemblyScript и Grain, это яп с единственным таргетом компиляции — Wasm.

Вот можно глянуть ужаснуться на все проходы оптимизации https://github.com/WebAssembly/binaryen/tree/main/src/passes

Важно заметить что Binaryen пилят не рандомные опенсорс чуваки, а сам Wasm комитет.

3) wasmtime это конкретно рантайм, им можно взять .wasm бинарь и запустить на локальной машине.
Поддерживает WASI(WebAssembly System Interface) — главный способ колить из Wasm системные вызовы

Чисто запускатель васма вне веба.

4) Emscripten — еще один компилятор в Wasm, специфицирующийся на C/C++, но вообщем то на самом деле он работает с LLVM IR, поэтому может сожрать любой яп, компилятор которого может этот IR выплюнуть, например Swift.
Emscripten также делает тонны оптимизаций прогоняя под капотом Binaryen и Closure(оптимизатор js -> js)

То есть это LLVM IR -> Binaryen -> Wasm

#wasm
осторожно, golang эволюционирует
🔥1
монополистам привет, остальным соболезную





ну лан, это java конфа https://twitter.com/intellijidea/status/1709485694245069151/photo/1
😁1
профессора юзают жутко кривые фолс позитив негатив чекеры на AI текст(
🤔1
Forwarded from gavr
typical NIASILATOR from C++ dev perspective
Совершенно пропустил этот нейрошедевр
Увидел в новую фичу TS switch(true) (ага) и обнаружил что у меня все еще нету примеров для control flow, добавил.

Эта палочка это и if и switch и expression и statement
This media is not supported in your browser
VIEW IN TELEGRAM
MaterialMaker в Godot
делаем вселенную из шума
а у миня теперь есть собственный локальный compiler explorer >_<
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Отличная UX идея для нейрокартинок, болдом, цветом и шрифтом самого текста назначают разные типы веса каждому токену
просто котята
Деградация как она есть
Нет это не мем
gavr_sas
Деградация как она есть Нет это не мем
Ну да, звучит логично, я в это верю
gavr_sas
Деградация как она есть Нет это не мем
This media is not supported in your browser
VIEW IN TELEGRAM
Красивую переливашку не скинуть не могу, но логитип который может быть чем угодно это не логотип, у него нет идентичности, такой банальной вещи как основные цвета, анимацию на футболке не напечатаешь, а форма недостаточно уникальна