zstd-ruby 1.3.4.0 → 1.3.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/ext/zstdruby/libzstd/Makefile +56 -10
- data/ext/zstdruby/libzstd/README.md +4 -0
- data/ext/zstdruby/libzstd/common/bitstream.h +6 -19
- data/ext/zstdruby/libzstd/common/compiler.h +3 -3
- data/ext/zstdruby/libzstd/common/cpu.h +1 -2
- data/ext/zstdruby/libzstd/common/debug.c +44 -0
- data/ext/zstdruby/libzstd/common/debug.h +123 -0
- data/ext/zstdruby/libzstd/common/entropy_common.c +16 -1
- data/ext/zstdruby/libzstd/common/fse.h +45 -41
- data/ext/zstdruby/libzstd/common/fse_decompress.c +1 -1
- data/ext/zstdruby/libzstd/common/huf.h +34 -27
- data/ext/zstdruby/libzstd/common/pool.c +89 -32
- data/ext/zstdruby/libzstd/common/pool.h +29 -19
- data/ext/zstdruby/libzstd/common/zstd_common.c +0 -5
- data/ext/zstdruby/libzstd/common/zstd_internal.h +3 -37
- data/ext/zstdruby/libzstd/compress/fse_compress.c +28 -163
- data/ext/zstdruby/libzstd/compress/hist.c +195 -0
- data/ext/zstdruby/libzstd/compress/hist.h +92 -0
- data/ext/zstdruby/libzstd/compress/huf_compress.c +14 -6
- data/ext/zstdruby/libzstd/compress/zstd_compress.c +798 -350
- data/ext/zstdruby/libzstd/compress/zstd_compress_internal.h +120 -34
- data/ext/zstdruby/libzstd/compress/zstd_double_fast.c +247 -87
- data/ext/zstdruby/libzstd/compress/zstd_double_fast.h +4 -1
- data/ext/zstdruby/libzstd/compress/zstd_fast.c +177 -56
- data/ext/zstdruby/libzstd/compress/zstd_fast.h +4 -1
- data/ext/zstdruby/libzstd/compress/zstd_lazy.c +331 -65
- data/ext/zstdruby/libzstd/compress/zstd_lazy.h +13 -0
- data/ext/zstdruby/libzstd/compress/zstd_ldm.c +15 -20
- data/ext/zstdruby/libzstd/compress/zstd_ldm.h +1 -2
- data/ext/zstdruby/libzstd/compress/zstd_opt.c +503 -300
- data/ext/zstdruby/libzstd/compress/zstd_opt.h +7 -0
- data/ext/zstdruby/libzstd/compress/zstdmt_compress.c +122 -47
- data/ext/zstdruby/libzstd/compress/zstdmt_compress.h +5 -5
- data/ext/zstdruby/libzstd/decompress/huf_decompress.c +325 -325
- data/ext/zstdruby/libzstd/decompress/zstd_decompress.c +80 -43
- data/ext/zstdruby/libzstd/dictBuilder/cover.c +9 -2
- data/ext/zstdruby/libzstd/dictBuilder/zdict.c +5 -5
- data/ext/zstdruby/libzstd/legacy/zstd_v04.c +12 -61
- data/ext/zstdruby/libzstd/zstd.h +137 -69
- data/lib/zstd-ruby/version.rb +1 -1
- metadata +7 -3
data/ext/zstdruby/libzstd/zstd.h
CHANGED
@@ -59,7 +59,7 @@ extern "C" {
|
|
59
59
|
/*------ Version ------*/
|
60
60
|
#define ZSTD_VERSION_MAJOR 1
|
61
61
|
#define ZSTD_VERSION_MINOR 3
|
62
|
-
#define ZSTD_VERSION_RELEASE
|
62
|
+
#define ZSTD_VERSION_RELEASE 5
|
63
63
|
|
64
64
|
#define ZSTD_VERSION_NUMBER (ZSTD_VERSION_MAJOR *100*100 + ZSTD_VERSION_MINOR *100 + ZSTD_VERSION_RELEASE)
|
65
65
|
ZSTDLIB_API unsigned ZSTD_versionNumber(void); /**< useful to check dll version */
|
@@ -70,6 +70,12 @@ ZSTDLIB_API unsigned ZSTD_versionNumber(void); /**< useful to check dll versio
|
|
70
70
|
#define ZSTD_VERSION_STRING ZSTD_EXPAND_AND_QUOTE(ZSTD_LIB_VERSION)
|
71
71
|
ZSTDLIB_API const char* ZSTD_versionString(void); /* added in v1.3.0 */
|
72
72
|
|
73
|
+
/***************************************
|
74
|
+
* Default constant
|
75
|
+
***************************************/
|
76
|
+
#ifndef ZSTD_CLEVEL_DEFAULT
|
77
|
+
# define ZSTD_CLEVEL_DEFAULT 3
|
78
|
+
#endif
|
73
79
|
|
74
80
|
/***************************************
|
75
81
|
* Simple API
|
@@ -96,7 +102,7 @@ ZSTDLIB_API size_t ZSTD_decompress( void* dst, size_t dstCapacity,
|
|
96
102
|
* `src` should point to the start of a ZSTD encoded frame.
|
97
103
|
* `srcSize` must be at least as large as the frame header.
|
98
104
|
* hint : any size >= `ZSTD_frameHeaderSize_max` is large enough.
|
99
|
-
* @return : - decompressed size of
|
105
|
+
* @return : - decompressed size of `src` frame content, if known
|
100
106
|
* - ZSTD_CONTENTSIZE_UNKNOWN if the size cannot be determined
|
101
107
|
* - ZSTD_CONTENTSIZE_ERROR if an error occurred (e.g. invalid magic number, srcSize too small)
|
102
108
|
* note 1 : a 0 return value means the frame is valid but "empty".
|
@@ -106,7 +112,8 @@ ZSTDLIB_API size_t ZSTD_decompress( void* dst, size_t dstCapacity,
|
|
106
112
|
* Optionally, application can rely on some implicit limit,
|
107
113
|
* as ZSTD_decompress() only needs an upper bound of decompressed size.
|
108
114
|
* (For example, data could be necessarily cut into blocks <= 16 KB).
|
109
|
-
* note 3 : decompressed size is always present when compression is
|
115
|
+
* note 3 : decompressed size is always present when compression is completed using single-pass functions,
|
116
|
+
* such as ZSTD_compress(), ZSTD_compressCCtx() ZSTD_compress_usingDict() or ZSTD_compress_usingCDict().
|
110
117
|
* note 4 : decompressed size can be very large (64-bits value),
|
111
118
|
* potentially larger than what local system can handle as a single memory segment.
|
112
119
|
* In which case, it's necessary to use streaming mode to decompress data.
|
@@ -123,8 +130,7 @@ ZSTDLIB_API unsigned long long ZSTD_getFrameContentSize(const void *src, size_t
|
|
123
130
|
* Both functions work the same way, but ZSTD_getDecompressedSize() blends
|
124
131
|
* "empty", "unknown" and "error" results to the same return value (0),
|
125
132
|
* while ZSTD_getFrameContentSize() gives them separate return values.
|
126
|
-
* `src`
|
127
|
-
* @return : content size to be decompressed, as a 64-bits value _if known and not empty_, 0 otherwise. */
|
133
|
+
* @return : decompressed size of `src` frame content _if known and not empty_, 0 otherwise. */
|
128
134
|
ZSTDLIB_API unsigned long long ZSTD_getDecompressedSize(const void* src, size_t srcSize);
|
129
135
|
|
130
136
|
|
@@ -272,33 +278,38 @@ typedef struct ZSTD_outBuffer_s {
|
|
272
278
|
* since it will play nicer with system's memory, by re-using already allocated memory.
|
273
279
|
* Use one separate ZSTD_CStream per thread for parallel execution.
|
274
280
|
*
|
275
|
-
* Start a new compression by initializing ZSTD_CStream.
|
281
|
+
* Start a new compression by initializing ZSTD_CStream context.
|
276
282
|
* Use ZSTD_initCStream() to start a new compression operation.
|
277
|
-
* Use ZSTD_initCStream_usingDict() or ZSTD_initCStream_usingCDict() for
|
283
|
+
* Use variants ZSTD_initCStream_usingDict() or ZSTD_initCStream_usingCDict() for streaming with dictionary (experimental section)
|
278
284
|
*
|
279
|
-
* Use ZSTD_compressStream()
|
280
|
-
* The function will automatically update both `pos` fields
|
281
|
-
* Note that
|
282
|
-
*
|
285
|
+
* Use ZSTD_compressStream() as many times as necessary to consume input stream.
|
286
|
+
* The function will automatically update both `pos` fields within `input` and `output`.
|
287
|
+
* Note that the function may not consume the entire input,
|
288
|
+
* for example, because the output buffer is already full,
|
289
|
+
* in which case `input.pos < input.size`.
|
290
|
+
* The caller must check if input has been entirely consumed.
|
291
|
+
* If not, the caller must make some room to receive more compressed data,
|
292
|
+
* typically by emptying output buffer, or allocating a new output buffer,
|
293
|
+
* and then present again remaining input data.
|
283
294
|
* @return : a size hint, preferred nb of bytes to use as input for next function call
|
284
295
|
* or an error code, which can be tested using ZSTD_isError().
|
285
296
|
* Note 1 : it's just a hint, to help latency a little, any other value will work fine.
|
286
297
|
* Note 2 : size hint is guaranteed to be <= ZSTD_CStreamInSize()
|
287
298
|
*
|
288
|
-
* At any moment, it's possible to flush whatever data
|
289
|
-
* `output->pos` will be updated.
|
290
|
-
* Note that
|
291
|
-
*
|
299
|
+
* At any moment, it's possible to flush whatever data might remain stuck within internal buffer,
|
300
|
+
* using ZSTD_flushStream(). `output->pos` will be updated.
|
301
|
+
* Note that, if `output->size` is too small, a single invocation of ZSTD_flushStream() might not be enough (return code > 0).
|
302
|
+
* In which case, make some room to receive more compressed data, and call again ZSTD_flushStream().
|
303
|
+
* @return : 0 if internal buffers are entirely flushed,
|
304
|
+
* >0 if some data still present within internal buffer (the value is minimal estimation of remaining size),
|
292
305
|
* or an error code, which can be tested using ZSTD_isError().
|
293
306
|
*
|
294
307
|
* ZSTD_endStream() instructs to finish a frame.
|
295
308
|
* It will perform a flush and write frame epilogue.
|
296
309
|
* The epilogue is required for decoders to consider a frame completed.
|
297
|
-
*
|
298
|
-
* In which case, call again ZSTD_endStream() to complete the flush.
|
310
|
+
* flush() operation is the same, and follows same rules as ZSTD_flushStream().
|
299
311
|
* @return : 0 if frame fully completed and fully flushed,
|
300
|
-
|
301
|
-
(value is minimum size estimation for remaining data to flush, but it could be more)
|
312
|
+
* >0 if some data still present within internal buffer (the value is minimal estimation of remaining size),
|
302
313
|
* or an error code, which can be tested using ZSTD_isError().
|
303
314
|
*
|
304
315
|
* *******************************************************************/
|
@@ -390,7 +401,6 @@ ZSTDLIB_API size_t ZSTD_DStreamOutSize(void); /*!< recommended size for output
|
|
390
401
|
#define ZSTD_SEARCHLOG_MIN 1
|
391
402
|
#define ZSTD_SEARCHLENGTH_MAX 7 /* only for ZSTD_fast, other strategies are limited to 6 */
|
392
403
|
#define ZSTD_SEARCHLENGTH_MIN 3 /* only for ZSTD_btopt, other strategies are limited to 4 */
|
393
|
-
#define ZSTD_TARGETLENGTH_MIN 1 /* only used by btopt, btultra and btfast */
|
394
404
|
#define ZSTD_LDM_MINMATCH_MIN 4
|
395
405
|
#define ZSTD_LDM_MINMATCH_MAX 4096
|
396
406
|
#define ZSTD_LDM_BUCKETSIZELOG_MAX 8
|
@@ -479,10 +489,10 @@ ZSTDLIB_API size_t ZSTD_findFrameCompressedSize(const void* src, size_t srcSize)
|
|
479
489
|
* however it does mean that all frame data must be present and valid. */
|
480
490
|
ZSTDLIB_API unsigned long long ZSTD_findDecompressedSize(const void* src, size_t srcSize);
|
481
491
|
|
482
|
-
|
483
|
-
*
|
484
|
-
*
|
485
|
-
*
|
492
|
+
/** ZSTD_frameHeaderSize() :
|
493
|
+
* srcSize must be >= ZSTD_frameHeaderSize_prefix.
|
494
|
+
* @return : size of the Frame Header,
|
495
|
+
* or an error code (if srcSize is too small) */
|
486
496
|
ZSTDLIB_API size_t ZSTD_frameHeaderSize(const void* src, size_t srcSize);
|
487
497
|
|
488
498
|
|
@@ -880,6 +890,11 @@ typedef struct {
|
|
880
890
|
unsigned dictID;
|
881
891
|
unsigned checksumFlag;
|
882
892
|
} ZSTD_frameHeader;
|
893
|
+
/** ZSTD_getFrameHeader() :
|
894
|
+
* decode Frame Header, or requires larger `srcSize`.
|
895
|
+
* @return : 0, `zfhPtr` is correctly filled,
|
896
|
+
* >0, `srcSize` is too small, value is wanted `srcSize` amount,
|
897
|
+
* or an error code, which can be tested using ZSTD_isError() */
|
883
898
|
ZSTDLIB_API size_t ZSTD_getFrameHeader(ZSTD_frameHeader* zfhPtr, const void* src, size_t srcSize); /**< doesn't consume input */
|
884
899
|
ZSTDLIB_API size_t ZSTD_decodingBufferSize_min(unsigned long long windowSize, unsigned long long frameContentSize); /**< when frame content size is not known, pass in frameContentSize == ZSTD_CONTENTSIZE_UNKNOWN */
|
885
900
|
|
@@ -901,23 +916,15 @@ ZSTDLIB_API ZSTD_nextInputType_e ZSTD_nextInputType(ZSTD_DCtx* dctx);
|
|
901
916
|
/** New advanced API (experimental) */
|
902
917
|
/* ============================================ */
|
903
918
|
|
904
|
-
/*
|
905
|
-
* In this
|
906
|
-
*
|
907
|
-
*
|
919
|
+
/* API design :
|
920
|
+
* In this advanced API, parameters are pushed one by one into an existing context,
|
921
|
+
* using ZSTD_CCtx_set*() functions.
|
922
|
+
* Pushed parameters are sticky : they are applied to next job, and any subsequent job.
|
923
|
+
* It's possible to reset parameters to "default" using ZSTD_CCtx_reset().
|
924
|
+
* Important : "sticky" parameters only work with `ZSTD_compress_generic()` !
|
925
|
+
* For any other entry point, "sticky" parameters are ignored !
|
908
926
|
*
|
909
927
|
* This API is intended to replace all others advanced / experimental API entry points.
|
910
|
-
* But it stands a reasonable chance to become "stable", after a reasonable testing period.
|
911
|
-
*/
|
912
|
-
|
913
|
-
/* note on naming convention :
|
914
|
-
* Initially, the API favored names like ZSTD_setCCtxParameter() .
|
915
|
-
* In this proposal, convention is changed towards ZSTD_CCtx_setParameter() .
|
916
|
-
* The main driver is that it identifies more clearly the target object type.
|
917
|
-
* It feels clearer when considering multiple targets :
|
918
|
-
* ZSTD_CDict_setParameter() (rather than ZSTD_setCDictParameter())
|
919
|
-
* ZSTD_CCtxParams_setParameter() (rather than ZSTD_setCCtxParamsParameter() )
|
920
|
-
* etc...
|
921
928
|
*/
|
922
929
|
|
923
930
|
/* note on enum design :
|
@@ -947,7 +954,7 @@ typedef enum {
|
|
947
954
|
/* compression parameters */
|
948
955
|
ZSTD_p_compressionLevel=100, /* Update all compression parameters according to pre-defined cLevel table
|
949
956
|
* Default level is ZSTD_CLEVEL_DEFAULT==3.
|
950
|
-
* Special: value 0 means
|
957
|
+
* Special: value 0 means default, which is controlled by ZSTD_CLEVEL_DEFAULT.
|
951
958
|
* Note 1 : it's possible to pass a negative compression level by casting it to unsigned type.
|
952
959
|
* Note 2 : setting a level sets all default values of other compression parameters.
|
953
960
|
* Note 3 : setting compressionLevel automatically updates ZSTD_p_compressLiterals. */
|
@@ -956,16 +963,19 @@ typedef enum {
|
|
956
963
|
* Special: value 0 means "use default windowLog".
|
957
964
|
* Note: Using a window size greater than ZSTD_MAXWINDOWSIZE_DEFAULT (default: 2^27)
|
958
965
|
* requires explicitly allowing such window size during decompression stage. */
|
959
|
-
ZSTD_p_hashLog, /* Size of the probe table, as a power of 2.
|
966
|
+
ZSTD_p_hashLog, /* Size of the initial probe table, as a power of 2.
|
960
967
|
* Resulting table size is (1 << (hashLog+2)).
|
961
968
|
* Must be clamped between ZSTD_HASHLOG_MIN and ZSTD_HASHLOG_MAX.
|
962
969
|
* Larger tables improve compression ratio of strategies <= dFast,
|
963
970
|
* and improve speed of strategies > dFast.
|
964
971
|
* Special: value 0 means "use default hashLog". */
|
965
|
-
ZSTD_p_chainLog, /* Size of the
|
972
|
+
ZSTD_p_chainLog, /* Size of the multi-probe search table, as a power of 2.
|
966
973
|
* Resulting table size is (1 << (chainLog+2)).
|
974
|
+
* Must be clamped between ZSTD_CHAINLOG_MIN and ZSTD_CHAINLOG_MAX.
|
967
975
|
* Larger tables result in better and slower compression.
|
968
976
|
* This parameter is useless when using "fast" strategy.
|
977
|
+
* Note it's still useful when using "dfast" strategy,
|
978
|
+
* in which case it defines a secondary probe table.
|
969
979
|
* Special: value 0 means "use default chainLog". */
|
970
980
|
ZSTD_p_searchLog, /* Number of search attempts, as a power of 2.
|
971
981
|
* More attempts result in better and slower compression.
|
@@ -1047,27 +1057,52 @@ typedef enum {
|
|
1047
1057
|
/* experimental parameters - no stability guaranteed */
|
1048
1058
|
/* =================================================================== */
|
1049
1059
|
|
1050
|
-
ZSTD_p_compressLiterals=1000, /* control huffman compression of literals (enabled) by default.
|
1051
|
-
* disabling it improves speed and decreases compression ratio by a large amount.
|
1052
|
-
* note : this setting is automatically updated when changing compression level.
|
1053
|
-
* positive compression levels set ZSTD_p_compressLiterals to 1.
|
1054
|
-
* negative compression levels set ZSTD_p_compressLiterals to 0. */
|
1055
|
-
|
1056
1060
|
ZSTD_p_forceMaxWindow=1100, /* Force back-reference distances to remain < windowSize,
|
1057
1061
|
* even when referencing into Dictionary content (default:0) */
|
1062
|
+
ZSTD_p_forceAttachDict, /* ZSTD supports usage of a CDict in-place
|
1063
|
+
* (avoiding having to copy the compression tables
|
1064
|
+
* from the CDict into the working context). Using
|
1065
|
+
* a CDict in this way saves an initial setup step,
|
1066
|
+
* but comes at the cost of more work per byte of
|
1067
|
+
* input. ZSTD has a simple internal heuristic that
|
1068
|
+
* guesses which strategy will be faster. You can
|
1069
|
+
* use this flag to override that guess.
|
1070
|
+
*
|
1071
|
+
* Note that the by-reference, in-place strategy is
|
1072
|
+
* only used when reusing a compression context
|
1073
|
+
* with compatible compression parameters. (If
|
1074
|
+
* incompatible / uninitialized, the working
|
1075
|
+
* context needs to be cleared anyways, which is
|
1076
|
+
* about as expensive as overwriting it with the
|
1077
|
+
* dictionary context, so there's no savings in
|
1078
|
+
* using the CDict by-ref.)
|
1079
|
+
*
|
1080
|
+
* Values greater than 0 force attaching the dict.
|
1081
|
+
* Values less than 0 force copying the dict.
|
1082
|
+
* 0 selects the default heuristic-guided behavior.
|
1083
|
+
*/
|
1058
1084
|
|
1059
1085
|
} ZSTD_cParameter;
|
1060
1086
|
|
1061
1087
|
|
1062
1088
|
/*! ZSTD_CCtx_setParameter() :
|
1063
1089
|
* Set one compression parameter, selected by enum ZSTD_cParameter.
|
1064
|
-
* Setting a parameter is generally only possible during frame initialization (before starting compression)
|
1065
|
-
*
|
1066
|
-
*
|
1067
|
-
*
|
1090
|
+
* Setting a parameter is generally only possible during frame initialization (before starting compression).
|
1091
|
+
* Exception : when using multi-threading mode (nbThreads >= 1),
|
1092
|
+
* following parameters can be updated _during_ compression (within same frame):
|
1093
|
+
* => compressionLevel, hashLog, chainLog, searchLog, minMatch, targetLength and strategy.
|
1094
|
+
* new parameters will be active on next job, or after a flush().
|
1095
|
+
* Note : when `value` type is not unsigned (int, or enum), cast it to unsigned for proper type checking.
|
1096
|
+
* @result : informational value (typically, value being set, correctly clamped),
|
1068
1097
|
* or an error code (which can be tested with ZSTD_isError()). */
|
1069
1098
|
ZSTDLIB_API size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned value);
|
1070
1099
|
|
1100
|
+
/*! ZSTD_CCtx_getParameter() :
|
1101
|
+
* Get the requested value of one compression parameter, selected by enum ZSTD_cParameter.
|
1102
|
+
* @result : 0, or an error code (which can be tested with ZSTD_isError()).
|
1103
|
+
*/
|
1104
|
+
ZSTDLIB_API size_t ZSTD_CCtx_getParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned* value);
|
1105
|
+
|
1071
1106
|
/*! ZSTD_CCtx_setPledgedSrcSize() :
|
1072
1107
|
* Total input data size to be compressed as a single frame.
|
1073
1108
|
* This value will be controlled at the end, and result in error if not respected.
|
@@ -1115,29 +1150,39 @@ ZSTDLIB_API size_t ZSTD_CCtx_refCDict(ZSTD_CCtx* cctx, const ZSTD_CDict* cdict);
|
|
1115
1150
|
/*! ZSTD_CCtx_refPrefix() :
|
1116
1151
|
* Reference a prefix (single-usage dictionary) for next compression job.
|
1117
1152
|
* Decompression need same prefix to properly regenerate data.
|
1118
|
-
* Prefix is **only used once**. Tables are discarded at end of compression job.
|
1119
|
-
* Subsequent compression jobs will be done without prefix (if none is explicitly referenced).
|
1120
|
-
* If there is a need to use same prefix multiple times, consider embedding it into a ZSTD_CDict instead.
|
1153
|
+
* Prefix is **only used once**. Tables are discarded at end of compression job (ZSTD_e_end).
|
1121
1154
|
* @result : 0, or an error code (which can be tested with ZSTD_isError()).
|
1122
1155
|
* Special: Adding any prefix (including NULL) invalidates any previous prefix or dictionary
|
1123
|
-
* Note 1 : Prefix buffer is referenced. It must outlive compression job.
|
1156
|
+
* Note 1 : Prefix buffer is referenced. It **must** outlive compression job.
|
1157
|
+
* Its contain must remain unmodified up to end of compression (ZSTD_e_end).
|
1124
1158
|
* Note 2 : Referencing a prefix involves building tables, which are dependent on compression parameters.
|
1125
1159
|
* It's a CPU consuming operation, with non-negligible impact on latency.
|
1160
|
+
* If there is a need to use same prefix multiple times, consider loadDictionary instead.
|
1126
1161
|
* Note 3 : By default, the prefix is treated as raw content (ZSTD_dm_rawContent).
|
1127
1162
|
* Use ZSTD_CCtx_refPrefix_advanced() to alter dictMode. */
|
1128
|
-
ZSTDLIB_API size_t ZSTD_CCtx_refPrefix(ZSTD_CCtx* cctx,
|
1129
|
-
|
1163
|
+
ZSTDLIB_API size_t ZSTD_CCtx_refPrefix(ZSTD_CCtx* cctx,
|
1164
|
+
const void* prefix, size_t prefixSize);
|
1165
|
+
ZSTDLIB_API size_t ZSTD_CCtx_refPrefix_advanced(ZSTD_CCtx* cctx,
|
1166
|
+
const void* prefix, size_t prefixSize,
|
1167
|
+
ZSTD_dictContentType_e dictContentType);
|
1130
1168
|
|
1131
1169
|
/*! ZSTD_CCtx_reset() :
|
1132
1170
|
* Return a CCtx to clean state.
|
1133
1171
|
* Useful after an error, or to interrupt an ongoing compression job and start a new one.
|
1134
1172
|
* Any internal data not yet flushed is cancelled.
|
1135
|
-
*
|
1136
|
-
* All parameters are back to default values.
|
1137
|
-
* It's possible to modify compression parameters after a reset.
|
1173
|
+
* The parameters and dictionary are kept unchanged, to reset them use ZSTD_CCtx_resetParameters().
|
1138
1174
|
*/
|
1139
1175
|
ZSTDLIB_API void ZSTD_CCtx_reset(ZSTD_CCtx* cctx);
|
1140
1176
|
|
1177
|
+
/*! ZSTD_CCtx_resetParameters() :
|
1178
|
+
* All parameters are back to default values (compression level is ZSTD_CLEVEL_DEFAULT).
|
1179
|
+
* Dictionary (if any) is dropped.
|
1180
|
+
* Resetting parameters is only possible during frame initialization (before starting compression).
|
1181
|
+
* To reset the context use ZSTD_CCtx_reset().
|
1182
|
+
* @return 0 or an error code (which can be checked with ZSTD_isError()).
|
1183
|
+
*/
|
1184
|
+
ZSTDLIB_API size_t ZSTD_CCtx_resetParameters(ZSTD_CCtx* cctx);
|
1185
|
+
|
1141
1186
|
|
1142
1187
|
|
1143
1188
|
typedef enum {
|
@@ -1235,6 +1280,13 @@ ZSTDLIB_API size_t ZSTD_CCtxParams_init_advanced(ZSTD_CCtx_params* cctxParams, Z
|
|
1235
1280
|
*/
|
1236
1281
|
ZSTDLIB_API size_t ZSTD_CCtxParam_setParameter(ZSTD_CCtx_params* params, ZSTD_cParameter param, unsigned value);
|
1237
1282
|
|
1283
|
+
/*! ZSTD_CCtxParam_getParameter() :
|
1284
|
+
* Similar to ZSTD_CCtx_getParameter.
|
1285
|
+
* Get the requested value of one compression parameter, selected by enum ZSTD_cParameter.
|
1286
|
+
* @result : 0, or an error code (which can be tested with ZSTD_isError()).
|
1287
|
+
*/
|
1288
|
+
ZSTDLIB_API size_t ZSTD_CCtxParam_getParameter(ZSTD_CCtx_params* params, ZSTD_cParameter param, unsigned* value);
|
1289
|
+
|
1238
1290
|
/*! ZSTD_CCtx_setParametersUsingCCtxParams() :
|
1239
1291
|
* Apply a set of ZSTD_CCtx_params to the compression context.
|
1240
1292
|
* This can be done even after compression is started,
|
@@ -1246,10 +1298,13 @@ ZSTDLIB_API size_t ZSTD_CCtx_setParametersUsingCCtxParams(
|
|
1246
1298
|
ZSTD_CCtx* cctx, const ZSTD_CCtx_params* params);
|
1247
1299
|
|
1248
1300
|
|
1249
|
-
|
1301
|
+
/* ==================================== */
|
1302
|
+
/*=== Advanced decompression API ===*/
|
1303
|
+
/* ==================================== */
|
1250
1304
|
|
1251
|
-
/* The following
|
1252
|
-
*
|
1305
|
+
/* The following API works the same way as the advanced compression API :
|
1306
|
+
* a context is created, parameters are pushed into it one by one,
|
1307
|
+
* then the context can be used to decompress data using an interface similar to the straming API.
|
1253
1308
|
*/
|
1254
1309
|
|
1255
1310
|
/*! ZSTD_DCtx_loadDictionary() :
|
@@ -1286,17 +1341,23 @@ ZSTDLIB_API size_t ZSTD_DCtx_refDDict(ZSTD_DCtx* dctx, const ZSTD_DDict* ddict);
|
|
1286
1341
|
|
1287
1342
|
/*! ZSTD_DCtx_refPrefix() :
|
1288
1343
|
* Reference a prefix (single-usage dictionary) for next compression job.
|
1289
|
-
* Prefix is **only used once**.
|
1290
|
-
*
|
1344
|
+
* Prefix is **only used once**. Reference is discarded at end of frame.
|
1345
|
+
* End of frame is reached when ZSTD_DCtx_decompress_generic() returns 0.
|
1291
1346
|
* @result : 0, or an error code (which can be tested with ZSTD_isError()).
|
1292
1347
|
* Note 1 : Adding any prefix (including NULL) invalidates any previously set prefix or dictionary
|
1293
|
-
* Note 2 : Prefix buffer is referenced. It must outlive
|
1348
|
+
* Note 2 : Prefix buffer is referenced. It **must** outlive decompression job.
|
1349
|
+
* Prefix buffer must remain unmodified up to the end of frame,
|
1350
|
+
* reached when ZSTD_DCtx_decompress_generic() returns 0.
|
1294
1351
|
* Note 3 : By default, the prefix is treated as raw content (ZSTD_dm_rawContent).
|
1295
1352
|
* Use ZSTD_CCtx_refPrefix_advanced() to alter dictMode.
|
1296
1353
|
* Note 4 : Referencing a raw content prefix has almost no cpu nor memory cost.
|
1354
|
+
* A fulldict prefix is more costly though.
|
1297
1355
|
*/
|
1298
|
-
ZSTDLIB_API size_t ZSTD_DCtx_refPrefix(ZSTD_DCtx* dctx,
|
1299
|
-
|
1356
|
+
ZSTDLIB_API size_t ZSTD_DCtx_refPrefix(ZSTD_DCtx* dctx,
|
1357
|
+
const void* prefix, size_t prefixSize);
|
1358
|
+
ZSTDLIB_API size_t ZSTD_DCtx_refPrefix_advanced(ZSTD_DCtx* dctx,
|
1359
|
+
const void* prefix, size_t prefixSize,
|
1360
|
+
ZSTD_dictContentType_e dictContentType);
|
1300
1361
|
|
1301
1362
|
|
1302
1363
|
/*! ZSTD_DCtx_setMaxWindowSize() :
|
@@ -1318,6 +1379,13 @@ ZSTDLIB_API size_t ZSTD_DCtx_setMaxWindowSize(ZSTD_DCtx* dctx, size_t maxWindowS
|
|
1318
1379
|
ZSTDLIB_API size_t ZSTD_DCtx_setFormat(ZSTD_DCtx* dctx, ZSTD_format_e format);
|
1319
1380
|
|
1320
1381
|
|
1382
|
+
/** ZSTD_getFrameHeader_advanced() :
|
1383
|
+
* same as ZSTD_getFrameHeader(),
|
1384
|
+
* with added capability to select a format (like ZSTD_f_zstd1_magicless) */
|
1385
|
+
ZSTDLIB_API size_t ZSTD_getFrameHeader_advanced(ZSTD_frameHeader* zfhPtr,
|
1386
|
+
const void* src, size_t srcSize, ZSTD_format_e format);
|
1387
|
+
|
1388
|
+
|
1321
1389
|
/*! ZSTD_decompress_generic() :
|
1322
1390
|
* Behave the same as ZSTD_decompressStream.
|
1323
1391
|
* Decompression parameters cannot be changed once decompression is started.
|
data/lib/zstd-ruby/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zstd-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SpringMT
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-06-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -94,6 +94,8 @@ files:
|
|
94
94
|
- ext/zstdruby/libzstd/common/bitstream.h
|
95
95
|
- ext/zstdruby/libzstd/common/compiler.h
|
96
96
|
- ext/zstdruby/libzstd/common/cpu.h
|
97
|
+
- ext/zstdruby/libzstd/common/debug.c
|
98
|
+
- ext/zstdruby/libzstd/common/debug.h
|
97
99
|
- ext/zstdruby/libzstd/common/entropy_common.c
|
98
100
|
- ext/zstdruby/libzstd/common/error_private.c
|
99
101
|
- ext/zstdruby/libzstd/common/error_private.h
|
@@ -111,6 +113,8 @@ files:
|
|
111
113
|
- ext/zstdruby/libzstd/common/zstd_errors.h
|
112
114
|
- ext/zstdruby/libzstd/common/zstd_internal.h
|
113
115
|
- ext/zstdruby/libzstd/compress/fse_compress.c
|
116
|
+
- ext/zstdruby/libzstd/compress/hist.c
|
117
|
+
- ext/zstdruby/libzstd/compress/hist.h
|
114
118
|
- ext/zstdruby/libzstd/compress/huf_compress.c
|
115
119
|
- ext/zstdruby/libzstd/compress/zstd_compress.c
|
116
120
|
- ext/zstdruby/libzstd/compress/zstd_compress_internal.h
|
@@ -185,7 +189,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
185
189
|
version: '0'
|
186
190
|
requirements: []
|
187
191
|
rubyforge_project:
|
188
|
-
rubygems_version: 2.6
|
192
|
+
rubygems_version: 2.7.6
|
189
193
|
signing_key:
|
190
194
|
specification_version: 4
|
191
195
|
summary: Ruby binding for zstd(Zstandard - Fast real-time compression algorithm)
|