diff --git a/std/compress/lzss_v2/average_block.hex b/std/compress/lzss/average_block.hex similarity index 100% rename from std/compress/lzss_v2/average_block.hex rename to std/compress/lzss/average_block.hex diff --git a/std/compress/lzss_v2/backref.go b/std/compress/lzss/backref.go similarity index 99% rename from std/compress/lzss_v2/backref.go rename to std/compress/lzss/backref.go index ffb67611c8..6047c3d692 100644 --- a/std/compress/lzss_v2/backref.go +++ b/std/compress/lzss/backref.go @@ -1,4 +1,4 @@ -package lzss_v2 +package lzss import ( "math" diff --git a/std/compress/lzss_v2/compile_large/main.go b/std/compress/lzss/compile_large/main.go similarity index 70% rename from std/compress/lzss_v2/compile_large/main.go rename to std/compress/lzss/compile_large/main.go index aab790565f..8932d518ae 100644 --- a/std/compress/lzss_v2/compile_large/main.go +++ b/std/compress/lzss/compile_large/main.go @@ -3,7 +3,7 @@ package main import ( "fmt" "github.com/consensys/gnark/std/compress" - "github.com/consensys/gnark/std/compress/lzss_v2" + "github.com/consensys/gnark/std/compress/lzss" ) // executable to generate the constraints for the circuit and store it @@ -14,7 +14,7 @@ func check(e error) { } func main() { - cs, err := lzss_v2.BenchCompressionE2ECompilation(nil, "../../test_cases/large") + cs, err := lzss.BenchCompressionE2ECompilation(nil, "../../test_cases/large") check(err) fmt.Println(cs.GetNbConstraints(), "constraints") diff --git a/std/compress/lzss_v2/compress.go b/std/compress/lzss/compress.go similarity index 90% rename from std/compress/lzss_v2/compress.go rename to std/compress/lzss/compress.go index 656cf0fcae..6f8d921b61 100644 --- a/std/compress/lzss_v2/compress.go +++ b/std/compress/lzss/compress.go @@ -1,11 +1,11 @@ -package lzss_v2 +package lzss import ( "bytes" "fmt" "math/bits" - "github.com/consensys/gnark/std/compress/lzss_v2/suffixarray" + "github.com/consensys/gnark/std/compress/lzss/suffixarray" "github.com/icza/bitio" ) @@ -22,8 +22,17 @@ type Compressor struct { dictSa [maxDictSize]int32 // suffix array space. } +type CompressionMode uint8 + +const ( + BestCompression CompressionMode = 1 + GoodCompression CompressionMode = 2 + GoodSnarkDecompression CompressionMode = 4 + BestSnarkDecompression CompressionMode = 8 +) + // NewCompressor returns a new compressor with the given dictionary -func NewCompressor(dict []byte) (*Compressor, error) { +func NewCompressor(dict []byte, compressionMode CompressionMode) (*Compressor, error) { dict = augmentDict(dict) if len(dict) > maxDictSize { return nil, fmt.Errorf("dict size must be <= %d", maxDictSize) @@ -40,8 +49,8 @@ func augmentDict(dict []byte) []byte { return append(dict, symbolDict, symbolShort, symbolLong) } -func initDictBackref(dict []byte) backrefType { - addrNbBits := uint8(bits.Len(uint(len(dict)))) +func (compressor *Compressor) initDictBackref() backrefType { + addrNbBits := uint8(bits.Len(uint(len(compressor.dictData)))) return newBackRefType(symbolDict, (addrNbBits+forceDivisibleBy-1)/forceDivisibleBy*forceDivisibleBy, 8, true) } @@ -59,7 +68,7 @@ func (compressor *Compressor) Compress(d []byte) (c []byte, err error) { // build the index compressor.inputIndex = suffixarray.New(d, compressor.inputSa[:len(d)]) - dictBackRefType := initDictBackref(compressor.dictData) + dictBackRefType := compressor.initDictBackref() bDict := backref{bType: dictBackRefType, length: -1, offset: -1} bShort := backref{bType: shortBackRefType, length: -1, offset: -1} diff --git a/std/compress/lzss_v2/compress_test.go b/std/compress/lzss/compress_test.go similarity index 99% rename from std/compress/lzss_v2/compress_test.go rename to std/compress/lzss/compress_test.go index 5f95e88b09..ddfcf01fb3 100644 --- a/std/compress/lzss_v2/compress_test.go +++ b/std/compress/lzss/compress_test.go @@ -1,4 +1,4 @@ -package lzss_v2 +package lzss import ( "bytes" diff --git a/std/compress/lzss_v2/decompress.go b/std/compress/lzss/decompress.go similarity index 99% rename from std/compress/lzss_v2/decompress.go rename to std/compress/lzss/decompress.go index 403b1d6220..82151f8ae1 100644 --- a/std/compress/lzss_v2/decompress.go +++ b/std/compress/lzss/decompress.go @@ -1,4 +1,4 @@ -package lzss_v2 +package lzss import ( "bytes" diff --git a/std/compress/lzss_v2/dict_fun b/std/compress/lzss/dict_fun similarity index 100% rename from std/compress/lzss_v2/dict_fun rename to std/compress/lzss/dict_fun diff --git a/std/compress/lzss_v2/dict_naive b/std/compress/lzss/dict_naive similarity index 100% rename from std/compress/lzss_v2/dict_naive rename to std/compress/lzss/dict_naive diff --git a/std/compress/lzss_v2/e2e_test.go b/std/compress/lzss/e2e_test.go similarity index 99% rename from std/compress/lzss_v2/e2e_test.go rename to std/compress/lzss/e2e_test.go index 13d3b012f6..f0759ef37e 100644 --- a/std/compress/lzss_v2/e2e_test.go +++ b/std/compress/lzss/e2e_test.go @@ -1,4 +1,4 @@ -package lzss_v2 +package lzss import ( "github.com/consensys/gnark-crypto/ecc" diff --git a/std/compress/lzss_v2/snark.go b/std/compress/lzss/snark.go similarity index 99% rename from std/compress/lzss_v2/snark.go rename to std/compress/lzss/snark.go index abc7a61ee3..be4c71b32b 100644 --- a/std/compress/lzss_v2/snark.go +++ b/std/compress/lzss/snark.go @@ -1,4 +1,4 @@ -package lzss_v2 +package lzss import ( "fmt" diff --git a/std/compress/lzss_v2/snark_test.go b/std/compress/lzss/snark_test.go similarity index 99% rename from std/compress/lzss_v2/snark_test.go rename to std/compress/lzss/snark_test.go index 045a285ab8..d1bfba7360 100644 --- a/std/compress/lzss_v2/snark_test.go +++ b/std/compress/lzss/snark_test.go @@ -1,4 +1,4 @@ -package lzss_v2 +package lzss import ( "bytes" diff --git a/std/compress/lzss_v2/snark_testing.go b/std/compress/lzss/snark_testing.go similarity index 99% rename from std/compress/lzss_v2/snark_testing.go rename to std/compress/lzss/snark_testing.go index 62ed79ab4d..292cd999d3 100644 --- a/std/compress/lzss_v2/snark_testing.go +++ b/std/compress/lzss/snark_testing.go @@ -1,4 +1,4 @@ -package lzss_v2 +package lzss import ( "fmt" diff --git a/std/compress/lzss_v2/suffixarray/sais.go b/std/compress/lzss/suffixarray/sais.go similarity index 100% rename from std/compress/lzss_v2/suffixarray/sais.go rename to std/compress/lzss/suffixarray/sais.go diff --git a/std/compress/lzss_v2/suffixarray/sais2.go b/std/compress/lzss/suffixarray/sais2.go similarity index 100% rename from std/compress/lzss_v2/suffixarray/sais2.go rename to std/compress/lzss/suffixarray/sais2.go diff --git a/std/compress/lzss_v2/suffixarray/suffixarray.go b/std/compress/lzss/suffixarray/suffixarray.go similarity index 100% rename from std/compress/lzss_v2/suffixarray/suffixarray.go rename to std/compress/lzss/suffixarray/suffixarray.go diff --git a/std/compress/lzss_v2/testdata/fuzz/FuzzCompress/6ed62c91940dd97f b/std/compress/lzss/testdata/fuzz/FuzzCompress/6ed62c91940dd97f similarity index 100% rename from std/compress/lzss_v2/testdata/fuzz/FuzzCompress/6ed62c91940dd97f rename to std/compress/lzss/testdata/fuzz/FuzzCompress/6ed62c91940dd97f diff --git a/std/compress/lzss_v2/testdata/fuzz/FuzzCompress/e3443030b91d09bb b/std/compress/lzss/testdata/fuzz/FuzzCompress/e3443030b91d09bb similarity index 100% rename from std/compress/lzss_v2/testdata/fuzz/FuzzCompress/e3443030b91d09bb rename to std/compress/lzss/testdata/fuzz/FuzzCompress/e3443030b91d09bb