Class: Omnizip::Algorithms::Zstandard

Inherits:
Omnizip::Algorithm show all
Defined in:
lib/omnizip/algorithms/zstandard.rb,
lib/omnizip/algorithms/zstandard/fse.rb,
lib/omnizip/algorithms/zstandard/frame.rb,
lib/omnizip/algorithms/zstandard/decoder.rb,
lib/omnizip/algorithms/zstandard/encoder.rb,
lib/omnizip/algorithms/zstandard/huffman.rb,
lib/omnizip/algorithms/zstandard/literals.rb,
lib/omnizip/algorithms/zstandard/constants.rb,
lib/omnizip/algorithms/zstandard/fse/table.rb,
lib/omnizip/algorithms/zstandard/sequences.rb,
lib/omnizip/algorithms/zstandard/frame/block.rb,
lib/omnizip/algorithms/zstandard/fse/encoder.rb,
lib/omnizip/algorithms/zstandard/frame/header.rb,
lib/omnizip/algorithms/zstandard/fse/bitstream.rb,
lib/omnizip/algorithms/zstandard/huffman_encoder.rb,
lib/omnizip/algorithms/zstandard/literals_encoder.rb

Overview

Zstandard compression algorithm

Zstandard (or Zstd) is a fast lossless compression algorithm developed by Facebook (now Meta). It provides:

  • Excellent compression ratios comparable to zlib/deflate
  • Very fast compression and decompression speeds
  • Wide range of compression levels (1-22)
  • Dictionary support for small data compression
  • Streaming and frame modes

This implementation uses the zstd-ruby gem which provides Ruby bindings to the official Zstandard C library. This ensures compatibility with the reference implementation and excellent performance.

Zstandard is particularly effective for:

  • Real-time compression needs
  • Network protocol compression
  • Database compression
  • Log file compression
  • General-purpose compression with speed priority

Defined Under Namespace

Modules: Constants, FSE, Frame Classes: Decoder, Encoder, Huffman, HuffmanEncoder, HuffmanTableReader, LiteralsDecoder, LiteralsEncoder, SequenceExecutor, SequencesDecoder

Instance Attribute Summary

Attributes inherited from Omnizip::Algorithm

#filter, #options

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Omnizip::Algorithm

inherited, #initialize, #with_filter

Constructor Details

This class inherits a constructor from Omnizip::Algorithm

Class Method Details

.metadataAlgorithmMetadata

Get algorithm metadata

Returns:

  • (AlgorithmMetadata)

    Algorithm information



71
72
73
74
75
76
77
78
# File 'lib/omnizip/algorithms/zstandard.rb', line 71

def self.
  Models::AlgorithmMetadata.new.tap do |meta|
    meta.name = "zstandard"
    meta.description = "Zstandard fast compression with " \
                       "excellent ratios"
    meta.version = "1.0.0"
  end
end

Instance Method Details

#compress(input_stream, output_stream, options = nil) ⇒ void

This method returns an undefined value.

Compress data using Zstandard algorithm

Parameters:

  • input_stream (IO)

    Input stream to compress

  • output_stream (IO)

    Output stream for compressed data

  • options (Models::CompressionOptions) (defaults to: nil)

    Compression options



86
87
88
89
90
# File 'lib/omnizip/algorithms/zstandard.rb', line 86

def compress(input_stream, output_stream, options = nil)
  input_data = input_stream.read
  encoder = Encoder.new(output_stream, build_encoder_options(options))
  encoder.encode_stream(input_data)
end

#decompress(input_stream, output_stream, _options = nil) ⇒ void

This method returns an undefined value.

Decompress Zstandard-compressed data

Parameters:

  • input_stream (IO)

    Input stream of compressed data

  • output_stream (IO)

    Output stream for decompressed data

  • options (Models::CompressionOptions)

    Decompression options



98
99
100
101
102
103
104
105
# File 'lib/omnizip/algorithms/zstandard.rb', line 98

def decompress(input_stream, output_stream, _options = nil)
  if output_stream.respond_to?(:set_encoding)
    output_stream.set_encoding(Encoding::BINARY)
  end
  decoder = Decoder.new(input_stream)
  decompressed = decoder.decode_stream
  output_stream.write(decompressed)
end