In sourmash I'm disabling default features to be able to use niffler in wasm environments. lzma and bzip2 require -sys crates, which are harder to compile properly in wasm32-unknown-unknown (browser) and wasm32-wasi (which does have a libc, but the toolchain still has issues with cross-compiling C code).
Pure rust implementations (like the one flate2 + miniz-oxide provide for gzip) are preferable in this case, because they will have less issues.
Having a wasm feature would be a shorthand for adding the formats that are supported.
In sourmash I'm disabling default features to be able to use
niffler
in wasm environments.lzma
andbzip2
require-sys
crates, which are harder to compile properly inwasm32-unknown-unknown
(browser) andwasm32-wasi
(which does have alibc
, but the toolchain still has issues with cross-compiling C code).Pure rust implementations (like the one
flate2
+miniz-oxide
provide forgzip
) are preferable in this case, because they will have less issues.Having a
wasm
feature would be a shorthand for adding the formats that are supported.Possible crates for adding more formats to
wasm
:lzma
)bzip2
might be pure Rust someday, but still not there.