/hareg_archiver

A file archiver with its own file format written using C++ and Flutter.

Primary LanguageC++

Hareg Archiver

Hareg Archiver is a robust and efficient file compression tool that utilizes LZSS and Huffman coding algorithms. Future developments include a user-friendly interface built with Flutter, additional algorithms like LZW and LZMA, file streaming support, and optimizations using CUDA and SIMD.

C++ Style

We try to use modern C++ following the google style guide LINK

Testing

Currently tested on text, video, executable files.

Features

  • Currently Accomplished

    • LZSS: A dictionary-based compression algorithm that replaces repeated occurrences of data with references to a single copy of that data existing earlier in the uncompressed data stream.
    • Huffman Coding: An entropy encoding algorithm used for lossless data compression.
    • Simple File Format: a simple file format to compress/decompress single files.
  • Planned Features

    • ☐ g++ compatbility

    • Binary Search Tree Optimization for lzss matcher: Optimizer the Linked List Matcher(O(N^2)) to Binary searth Tree(O(logN))

    • Unit Test: Test files using gtest.

    • Stream Compression: Handle compression/decompression in a block style to handle file size that are greater than the ram.

    • Folders: Compressing folders and files

    • UI with Flutter: A cross-platform UI toolkit to provide a seamless and interactive user experience.

    • Self Extract: Add a way to make setup like executables that can self extract.

    • Additional Compression Algorithms:

      • LZW: A dictionary-based compression algorithm that works by replacing strings of characters with single codes.
      • LZMA: An algorithm that achieves a high compression ratio by using a dictionary compression scheme.
      • Bzip: A block-sorting compression algorithm that uses the Burrows–Wheeler transform.
      • Delta Compression
    • File Streaming Support: Capability to handle continuous data streams for compression and decompression.

    • CUDA Optimizations: Utilize NVIDIA's parallel computing platform to enhance performance.

    • SIMD Optimizations: Use Single Instruction, Multiple Data techniques to process data more efficiently.

    • General Optimizations

    Support for other storage/compression file formats

    • ISO
    • ZIP
    • BZIP
    • CAB

Getting Started

Prerequisites

  • MSVC Compiler
  • CMake
  • Git

Installation

  1. Clone the repository and run cmake to generate the build files for the respective envoriment:
    git clone https://github.com/yourusername/hareg-archiver.git
    cd hareg-archiver
    cmake .