WebAssembly has only four value types:
i32– 32-bit integersf32– 32-bit floating point numbersi64– 64-bit integersf64– 64-bit floating point numbers
Each has their own set of opcodes representing arithmetic operations, e.g. i32.add, i64.add, f32.add and f64.add. There are also opcodes for wrapping narrower integers into wider types, e.g. int32.store_8, int64.load32_u. WebAssembly v1 defines ~170 opcodes of which ~70 are specifically for 32-bit numbers and ~75 are for 64-bit.
It seems to me that dropping support for 32-bit numbers would almost halve the number of opcodes without any loss of functionality. Which leads me to wonder: what is the benefit of having both?
There are some discussions around this on GitHub but they're a bit too technical for me.