Pure MoonBit zlib/deflate implementation.
Dependencies
///|
test "roundtrip stored" {
let data : Bytes = "hello"
let compressed = zlib_compress_stored(data)
let decompressed = zlib_decompress_stored(compressed)
inspect(decompressed.length(), content="5")
inspect(decompressed[0], content="b'\\x68'")
inspect(decompressed[4], content="b'\\x6F'")
}import "mizchi/zlib/native" as @zlib_native
let compressed = @zlib_native.zlib_compress(data)
let decompressed = @zlib_native.zlib_decompress(compressed)# Benchmarks
moon bench --target js
moon bench --target native
just bench-compare| Format | MoonBit native (mean) | Rust baseline (mean) | Relative | MoonBit wasm (mean) | MoonBit wasm-gc (mean) |
|---|---|---|---|---|---|
| zlib | 3.8 ms | 2.1 ms (flate2/miniz_oxide) | 1.8x slower | 31.8 ms | 22.9 ms |
| deflate | 3.7 ms | 2.1 ms (flate2/miniz_oxide) | 1.8x slower | 30.0 ms | 22.6 ms |
| gzip | 4.2 ms | 2.2 ms (flate2/miniz_oxide) | 1.9x slower | 30.7 ms | 27.1 ms |
fn adler32_fixed(data : FixedArray[Byte]) -> Intfn crc32(data : Bytes) -> UIntlet default_max_decompressed_size : Intfn deflate_compress(data : Bytes) -> Bytesfn deflate_compress_stored(data : Bytes) -> Bytesfn deflate_decompress_at(data : Bytes, start : Int, max_size? : Int) -> (Bytes, Int) raise ZlibErrorfn gzip_compress(data : Bytes) -> Bytesfn gzip_compress_stored(data : Bytes) -> Bytesfn zlib_compress(data : Bytes) -> Bytesfn zlib_compress_stored(data : Bytes) -> Bytesfn zlib_decompress_stored_at(data : Bytes, start : Int, max_size? : Int) -> (Bytes, Int) raise ZlibErrorPure MoonBit zlib/deflate implementation.
Dependencies