binaryen
binaryen copied to clipboard
Optimizer and compiler/toolchain library for WebAssembly
i32 -> f64 -> i32 rountripping optimizations: ```rust i32(f64(i32(x))) -> x // i32.trunc(_sat)_f64_s(f64.convert_i32_s(x)) -> x u32(f64(u32(x))) -> x // i32.trunc(_sat)_f64_u(f64.convert_i32_u(x)) -> x // note assymetric signed / unsigned or unsigned...
There's no reason an element segment couldn't be filled with arbitrary reference types, but our validator currently only allows function references.
This came up in the context of thinking about how to optimize file system calls, but it could be more generally useful. The idea is to tell Binaryen what memory...
Right now we have `--symbolmap` which emits a "symbol map" of indexes to function names. People normally run that, then strip the names and ship that binary. Then if a...
```rust (x z) op (y >> z) -> (x op y) >> z (x >>> z) op (y >>> z) -> (x op y) >>> z ``` where `op` is...
The fuzzer looks stable on hybrid after the recent fix. However, do not switch it over yet, until most users use it (so that we keep testing the actually-used mode...
This is a draft that builds upon #4750 Binaryen.ml provides separate functions for each of these utilities, but using the `getMemorySegmentInfoByIndex` helper function does a lot of extra work on...
Hi, As far as I know, a few GCed languages/platform are working on WASM support by leveraging the GC proposal: - [Dart](https://github.com/flutter/flutter/wiki/Roadmap#dart) - [Kotlin](https://youtrack.jetbrains.com/issue/KT-46773) [C#/.NET](https://github.com/dotnet/runtime/pull/67272) could be a candidate as...
We could only flatten when we see we actually need to instrument a function. If most functions don't need instrumentation then it would avoid most of the build time overhead...
It seems as though there are still a few optimization passes that invalidate DWARF, so they are disabled when DWARF output is requested. Is there any plan to implement DWARF...