Size: a a a

WebAssembly — русскоговорящее сообщество

2020 October 17

Г

Георгий in WebAssembly — русскоговорящее сообщество
че-т эпл особо не шейпит
источник

e

egoarka in WebAssembly — русскоговорящее сообщество
Георгий
че-т эпл особо не шейпит
ну как минимум задали тренд, что флеш это не нормально)
источник

Г

Георгий in WebAssembly — русскоговорящее сообщество
мне кажется им было просто лень или там адоб не смог скомпилить под айос свой флеш
источник

e

egoarka in WebAssembly — русскоговорящее сообщество
Георгий
мне кажется им было просто лень или там адоб не смог скомпилить под айос свой флеш
либо эпол не хотел дружить с адобом
(не считая продуктов фотошопа и тд)
источник
2020 October 18

Г

Георгий in WebAssembly — русскоговорящее сообщество
блин, почему _malloc и _free могут не экспортироваться в Emscripten'е?
источник

Г

Георгий in WebAssembly — русскоговорящее сообщество
сук
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
источник

Г

Георгий in WebAssembly — русскоговорящее сообщество
блин, такая ситуация, в общем Emscripten при аллокации бОльшего количества памяти (realloc) полностью заменяет HEAP на другой объект, а я хочу заранее сохранить ссылки на HEAP в нужных местах где я заллочил память. или так вообще нельзя делать? при realloc они считайте все невалидные
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Георгий
блин, такая ситуация, в общем Emscripten при аллокации бОльшего количества памяти (realloc) полностью заменяет HEAP на другой объект, а я хочу заранее сохранить ссылки на HEAP в нужных местах где я заллочил память. или так вообще нельзя делать? при realloc они считайте все невалидные
Так везде. Потому что в такоем случае realloc или malloc может дернуть memory.grow который детачит ArrayBuffer в HEAP на стороне браузера/ноды. Есть два выходы. Каждый раз ретачить после такого вызова AB снова:

exports.callWhichUseRealloc();
HEAP8 = new Uint8Array(exports.memory.buffer)  // restore array buffer for HEAP8

Или всегда копировать / слайсить результат (если это массив) до этого вызова:

const arrView = exports.callMethodWhichReturnArray();
const arr = arrView.slice();
exports.callWhichUseRealloc();

// safely use «arr». But not arrView
источник

Г

Георгий in WebAssembly — русскоговорящее сообщество
короче, есть варик сохранять только адрес и размер, внутри делать буфер который ссылается на HEAP, при каждом обращении чекать был ли реаллок (array.buffer.lenght === 0) и пересоздавать в таком случае
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
> реаллок (array.buffer.lenght === 0)

Нет, это проверяется по-другому:
if (HEAP8.buffer !== exports.memory.buffer)  { // или arr.buffer !== ..
  HEAP8 = new Uint8Array(exports.memory.buffer);
  HEAP16 = …
  ...
}
источник

Г

Георгий in WebAssembly — русскоговорящее сообщество
согласен, хорошая мысль
источник

Г

Георгий in WebAssembly — русскоговорящее сообщество
спасибо
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
MaxGraey
Я знаю что тебе нужно! Просто купи HTML5 акселлератор под PCI Express ;)
Шутки-шутками а ARM чипы начиная с v8.3a имеют инструкции для JavaScript =)
https://stackoverflow.com/questions/50966676/why-do-arm-chips-have-an-instruction-with-javascript-in-the-name-fjcvtzs
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
В wasm она не сильно нужна. Даже в AS это используется всего в двух местах для Math.imul и Math.clz32 которые не рекоммендуются использовать и нужны лишь для совместимости с JS. Собственно обе дергуют вот этот метод:
https://github.com/AssemblyScript/assemblyscript/blob/master/std/assembly/math.ts#L364
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
MaxGraey
В wasm она не сильно нужна. Даже в AS это используется всего в двух местах для Math.imul и Math.clz32 которые не рекоммендуются использовать и нужны лишь для совместимости с JS. Собственно обе дергуют вот этот метод:
https://github.com/AssemblyScript/assemblyscript/blob/master/std/assembly/math.ts#L364
Естественно, что что вместо Math.imul нужно просто использовать i32/u32 типы, а вместо Math.clz32 - clz<u32> интринсик
источник

К

Константин in WebAssembly — русскоговорящее сообщество
Инструкции, которые нахер не нужны
источник

К

Константин in WebAssembly — русскоговорящее сообщество
Или там они просто медленные до жопы, и по этому аппаратные ?
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Константин
Или там они просто медленные до жопы, и по этому аппаратные ?
Ну, для JS они нужны, так как double -> uint32/int31 конвертация делается как (x % (2 ^ 32 - 1)) что отличается от типичного преобразования double -> int32
источник

c

cevek in WebAssembly — русскоговорящее сообщество
ну круто че. с учетом того что 90% батарейки выжирает жс с рендерингом. почему бы нет))
источник