Size: a a a

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

2020 July 25

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
ага ), там васмер запускает скомпиленный в васм проект на AS, который называется белка :)
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Да забавно) Может у его предков советские корни или просто фанат советских штук, недавно видел челый фетиш пост от такого то американца с подборкой соыетских автобусных остановок в причудливом стиле, потом потом он не смог остановиться и принялся выкладывать советские ПК. В общем там хватает любителей этой эстетики и раритетных советских вещей
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Кстати, вопрос к Rust-разработчикам, разве нельзя сделать проще?
https://github.com/wasmerio/wasmer/blob/1ef2fe3ac973b2ede2a20de959412a3ae5feffad/lib/runtime-core/src/memory/ptr.rs#L195
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Как минимум так более читабельно:

pub fn get_utf8_string(self, memory: &Memory, str_len: u32) -> Option<&str> {
       let size = memory.size().bytes().0;
       let offset = self.offset as usize;
       let len = str_len as usize;

       if offset + len > size || offset >= size {
           return None;
       }
       let ptr = unsafe {
           memory.view::<u8>().as_ptr().add(offset) as *const u8
       };
       let slice: &[u8] = unsafe { std::slice::from_raw_parts(ptr, len) };
       std::str::from_utf8(slice).ok()
   }
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
И сразу возникает вопрос, а зачем там offset >= size ?
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
MaxGraey
И сразу возникает вопрос, а зачем там offset >= size ?
https://github.com/wasmerio/wasmer/blob/977f3a6406e950a005605a0fd089824f383e1d42/lib/runtime-core/src/memory/ptr.rs#L123

вот так было, когда я смотрел туда последний раз
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
может готовятся к wasm64 и добавили такую вот корявую проверку на переполнение
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Mikhail Voronov
может готовятся к wasm64 и добавили такую вот корявую проверку на переполнение
там везде usize, так что от этого не должно зависеть. Хотя возможно ты и прав. Но не проще ли тогда использовать offset.checked_add(len) или как там это?
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
MaxGraey
там везде usize, так что от этого не должно зависеть. Хотя возможно ты и прав. Но не проще ли тогда использовать offset.checked_add(len) или как там это?
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
а, мб это проверка на str_len=0
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
в смысле для поддержки строк нулевой длины
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Mikhail Voronov
в смысле для поддержки строк нулевой длины
Я бы вообще это отдельным случаем как fast path обрабатывал, так как там не нужно декодирование и можно сразу вернуть ok(""). И это может быть довольно частый случай
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
MaxGraey
Я бы вообще это отдельным случаем как fast path обрабатывал, так как там не нужно декодирование и можно сразу вернуть ok(""). И это может быть довольно частый случай
ага, но у меня нет других идей зачем эта проверка может быть нужна
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
отсюда интересно, что
but Wasmer has many places where it uses the assumption that it's running on a machine that has a usize of at least 64 bits.
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
т.е. они не поддерживают 32-битные платформы by-design, что кажется не очень в виду большого количества 32-битных встраиваемых систем
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
ну и как я там писал пример браузеров на Windows, где любят wow64
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
@pepyakin а wasmtime умеет работать в 32-битном режиме?
источник

M

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

lp

lil pep in WebAssembly — русскоговорящее сообщество
Mikhail Voronov
@pepyakin а wasmtime умеет работать в 32-битном режиме?
насколько я помню, wasmtime не имеет тестов на ia32
источник

lp

lil pep in WebAssembly — русскоговорящее сообщество
значит - не работает )
источник