I want to raw lz4 data

lz4-ruby で圧縮したデータは現状では特有のヘッダが付加され、伸張時にはヘッダを必要としていますが、このヘッダがつかない、必要のない手段が欲しいです。

というわけでちょっといじってみました。対応環境は CRuby のみで、JRuby に対する実装はありません。

ruby-1.9.3 と ruby-2.0.0、ruby-2.1.0 でライブラリ構築とテスト実行までを確認してあります (1.8 系列はサポートが切れているので割愛)。

マージをしてもらえるか、たたき台にでもしてもらえたら幸いです。


追加したメソッドと引数については次のとおりです:

- 圧縮処理

    LZ4.raw_compress(src) -> compressed_data
    LZ4.raw_compress(src, max_dest_size) -> compressed_data
    LZ4.raw_compress(src, dest) -> dest_with_compressed_data
    LZ4.raw_compress(src, dest, max_dest_size) -> dest_with_compressed_data

  LZ4 の圧縮処理を行います。

  これらは src を入力として圧縮し、圧縮データを返します。

  出力先としての dest を指定した場合、すでに確保されている文字列オブジェクトが利用されます。

  max_dest_size は圧縮後のデータサイズに制限を持たせたい場合に正の整数値で指定します。単位はバイトです。
  これを省略した場合、src の長さから最悪値が計算されます。

- 高効率圧縮処理

    LZ4.raw_compressHC(src) -> compressed_data
    LZ4.raw_compressHC(src, max_dest_size) -> compressed_data
    LZ4.raw_compressHC(src, dest) -> dest_with_compressed_data
    LZ4.raw_compressHC(src, dest, max_dest_size) -> dest_with_compressed_data

  LZ4 の高効率圧縮を行います。

  引数と戻り値は LZ4.raw_compress と同じとなります。

- 伸張処理

    LZ4.raw_uncompress(src, max_dest_size = (1 << 24)) -> uncompressed_data
    LZ4.raw_uncompress(src, dest, max_dest_size = (1 << 24)) -> dest_with_uncompressed_data

  LZ4 で圧縮されたデータを伸張します。

  src は LZ4 によって圧縮されたデータで、これを伸張したデータを返します。
  
  出力先としての dest を指定した場合、すでに確保されている文字列オブジェクトが利用されます。
  
  max_dest_size は伸張後のデータサイズとして正の整数値を与えます。
  これを省略した場合、(1 << 24) の値 (16MiB) が与えられたこととみなされます。