A command-line utility for compressing and decompressing files using Run-Length Encoding (RLE) and LZ77 algorithms. Built with Rust and JavaScript, this tool is designed for efficiency, cross-platform use, and educational clarity.
- Compression & Decompression: Supports RLE and LZ77.
- Dual Implementation: Built in both Rust (performance) and JavaScript (portability).
- Docker Support: No local setup needed—just run in a container.
- Cross-Platform: Works on Linux, macOS, and Windows.
docker run -v $(pwd):/data rust-compressor compress /data/input.txt /data/output.cmp --rle-
Clone the repository:
git clone https://github.com/Marc-Jr/compression-tool.git cd compression-tool -
Build the Rust compressor:
cd rust-compressor docker build -t rust-compressor .
-
Set up the JavaScript compressor:
cd ../js-compressor npm install
docker run -v $(pwd):/data rust-compressor compress /data/input.txt /data/output.cmp --rle# In the rust-compressor directory
cargo run -- compress input.txt output.cmp --rle# In the js-compressor directory
node compress.js input.txt output.cmp --rledocker run -v $(pwd):/data rust-compressor decompress /data/output.cmp /data/output.txt --rlecargo run -- decompress output.cmp output.txt --rlenode decompress.js output.cmp output.txt --rleTo test compression speed and effectiveness:
-
Create a test file:
echo "Sample text for compression testing." > test.txt
-
Run the benchmarking script:
chmod +x benchmark.sh ./benchmark.sh
Open to improvements! Fork the repo, submit issues, or create a pull request.