zstdlib 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGES.md +9 -0
- data/Gemfile +3 -0
- data/README.md +96 -0
- data/Rakefile +29 -0
- data/ext/zstdlib/extconf.rb +53 -0
- data/ext/zstdlib/ruby/zlib-2.2/zlib.c +4659 -0
- data/ext/zstdlib/ruby/zlib-2.3/zlib.c +4686 -0
- data/ext/zstdlib/ruby/zlib-2.4/zlib.c +4843 -0
- data/ext/zstdlib/ruby/zlib-2.5/zlib.c +4848 -0
- data/ext/zstdlib/ruby/zlib-2.6/zlib.c +4890 -0
- data/ext/zstdlib/zlib-1.2.11/adler32.c +186 -0
- data/ext/zstdlib/zlib-1.2.11/compress.c +86 -0
- data/ext/zstdlib/zlib-1.2.11/crc32.c +442 -0
- data/ext/zstdlib/zlib-1.2.11/crc32.h +441 -0
- data/ext/zstdlib/zlib-1.2.11/deflate.c +2163 -0
- data/ext/zstdlib/zlib-1.2.11/deflate.h +349 -0
- data/ext/zstdlib/zlib-1.2.11/gzclose.c +25 -0
- data/ext/zstdlib/zlib-1.2.11/gzguts.h +218 -0
- data/ext/zstdlib/zlib-1.2.11/gzlib.c +637 -0
- data/ext/zstdlib/zlib-1.2.11/gzread.c +654 -0
- data/ext/zstdlib/zlib-1.2.11/gzwrite.c +665 -0
- data/ext/zstdlib/zlib-1.2.11/infback.c +640 -0
- data/ext/zstdlib/zlib-1.2.11/inffast.c +323 -0
- data/ext/zstdlib/zlib-1.2.11/inffast.h +11 -0
- data/ext/zstdlib/zlib-1.2.11/inffixed.h +94 -0
- data/ext/zstdlib/zlib-1.2.11/inflate.c +1561 -0
- data/ext/zstdlib/zlib-1.2.11/inflate.h +125 -0
- data/ext/zstdlib/zlib-1.2.11/inftrees.c +304 -0
- data/ext/zstdlib/zlib-1.2.11/inftrees.h +62 -0
- data/ext/zstdlib/zlib-1.2.11/trees.c +1203 -0
- data/ext/zstdlib/zlib-1.2.11/trees.h +128 -0
- data/ext/zstdlib/zlib-1.2.11/uncompr.c +93 -0
- data/ext/zstdlib/zlib-1.2.11/zconf.h +534 -0
- data/ext/zstdlib/zlib-1.2.11/zlib.h +1912 -0
- data/ext/zstdlib/zlib-1.2.11/zutil.c +325 -0
- data/ext/zstdlib/zlib-1.2.11/zutil.h +271 -0
- data/ext/zstdlib/zlib.mk +14 -0
- data/ext/zstdlib/zlibwrapper/zlibwrapper.c +14 -0
- data/ext/zstdlib/zlibwrapper.mk +14 -0
- data/ext/zstdlib/zstd-1.3.8/lib/common/bitstream.h +455 -0
- data/ext/zstdlib/zstd-1.3.8/lib/common/compiler.h +140 -0
- data/ext/zstdlib/zstd-1.3.8/lib/common/cpu.h +215 -0
- data/ext/zstdlib/zstd-1.3.8/lib/common/debug.c +44 -0
- data/ext/zstdlib/zstd-1.3.8/lib/common/debug.h +134 -0
- data/ext/zstdlib/zstd-1.3.8/lib/common/entropy_common.c +236 -0
- data/ext/zstdlib/zstd-1.3.8/lib/common/error_private.c +54 -0
- data/ext/zstdlib/zstd-1.3.8/lib/common/error_private.h +76 -0
- data/ext/zstdlib/zstd-1.3.8/lib/common/fse.h +708 -0
- data/ext/zstdlib/zstd-1.3.8/lib/common/fse_decompress.c +309 -0
- data/ext/zstdlib/zstd-1.3.8/lib/common/huf.h +358 -0
- data/ext/zstdlib/zstd-1.3.8/lib/common/mem.h +380 -0
- data/ext/zstdlib/zstd-1.3.8/lib/common/pool.c +340 -0
- data/ext/zstdlib/zstd-1.3.8/lib/common/pool.h +84 -0
- data/ext/zstdlib/zstd-1.3.8/lib/common/threading.c +75 -0
- data/ext/zstdlib/zstd-1.3.8/lib/common/threading.h +123 -0
- data/ext/zstdlib/zstd-1.3.8/lib/common/xxhash.c +876 -0
- data/ext/zstdlib/zstd-1.3.8/lib/common/xxhash.h +305 -0
- data/ext/zstdlib/zstd-1.3.8/lib/common/zstd_common.c +83 -0
- data/ext/zstdlib/zstd-1.3.8/lib/common/zstd_errors.h +93 -0
- data/ext/zstdlib/zstd-1.3.8/lib/common/zstd_internal.h +266 -0
- data/ext/zstdlib/zstd-1.3.8/lib/compress/fse_compress.c +721 -0
- data/ext/zstdlib/zstd-1.3.8/lib/compress/hist.c +203 -0
- data/ext/zstdlib/zstd-1.3.8/lib/compress/hist.h +95 -0
- data/ext/zstdlib/zstd-1.3.8/lib/compress/huf_compress.c +798 -0
- data/ext/zstdlib/zstd-1.3.8/lib/compress/zstd_compress.c +4290 -0
- data/ext/zstdlib/zstd-1.3.8/lib/compress/zstd_compress_internal.h +860 -0
- data/ext/zstdlib/zstd-1.3.8/lib/compress/zstd_double_fast.c +499 -0
- data/ext/zstdlib/zstd-1.3.8/lib/compress/zstd_double_fast.h +38 -0
- data/ext/zstdlib/zstd-1.3.8/lib/compress/zstd_fast.c +391 -0
- data/ext/zstdlib/zstd-1.3.8/lib/compress/zstd_fast.h +37 -0
- data/ext/zstdlib/zstd-1.3.8/lib/compress/zstd_lazy.c +1106 -0
- data/ext/zstdlib/zstd-1.3.8/lib/compress/zstd_lazy.h +67 -0
- data/ext/zstdlib/zstd-1.3.8/lib/compress/zstd_ldm.c +597 -0
- data/ext/zstdlib/zstd-1.3.8/lib/compress/zstd_ldm.h +105 -0
- data/ext/zstdlib/zstd-1.3.8/lib/compress/zstd_opt.c +1217 -0
- data/ext/zstdlib/zstd-1.3.8/lib/compress/zstd_opt.h +56 -0
- data/ext/zstdlib/zstd-1.3.8/lib/compress/zstdmt_compress.c +2107 -0
- data/ext/zstdlib/zstd-1.3.8/lib/compress/zstdmt_compress.h +174 -0
- data/ext/zstdlib/zstd-1.3.8/lib/decompress/huf_decompress.c +1232 -0
- data/ext/zstdlib/zstd-1.3.8/lib/decompress/zstd_ddict.c +240 -0
- data/ext/zstdlib/zstd-1.3.8/lib/decompress/zstd_ddict.h +44 -0
- data/ext/zstdlib/zstd-1.3.8/lib/decompress/zstd_decompress.c +1672 -0
- data/ext/zstdlib/zstd-1.3.8/lib/decompress/zstd_decompress_block.c +1307 -0
- data/ext/zstdlib/zstd-1.3.8/lib/decompress/zstd_decompress_block.h +59 -0
- data/ext/zstdlib/zstd-1.3.8/lib/decompress/zstd_decompress_internal.h +168 -0
- data/ext/zstdlib/zstd-1.3.8/lib/zstd.h +1766 -0
- data/ext/zstdlib/zstd-1.3.8/zlibWrapper/gzclose.c +28 -0
- data/ext/zstdlib/zstd-1.3.8/zlibWrapper/gzcompatibility.h +68 -0
- data/ext/zstdlib/zstd-1.3.8/zlibWrapper/gzguts.h +227 -0
- data/ext/zstdlib/zstd-1.3.8/zlibWrapper/gzlib.c +640 -0
- data/ext/zstdlib/zstd-1.3.8/zlibWrapper/gzread.c +670 -0
- data/ext/zstdlib/zstd-1.3.8/zlibWrapper/gzwrite.c +671 -0
- data/ext/zstdlib/zstd-1.3.8/zlibWrapper/zstd_zlibwrapper.c +1105 -0
- data/ext/zstdlib/zstd-1.3.8/zlibWrapper/zstd_zlibwrapper.h +88 -0
- data/ext/zstdlib/zstd.mk +14 -0
- data/lib/zstdlib.rb +6 -0
- data/test/zstdlib_test.rb +21 -0
- metadata +198 -0
@@ -0,0 +1,174 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
|
3
|
+
* All rights reserved.
|
4
|
+
*
|
5
|
+
* This source code is licensed under both the BSD-style license (found in the
|
6
|
+
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
7
|
+
* in the COPYING file in the root directory of this source tree).
|
8
|
+
* You may select, at your option, one of the above-listed licenses.
|
9
|
+
*/
|
10
|
+
|
11
|
+
#ifndef ZSTDMT_COMPRESS_H
|
12
|
+
#define ZSTDMT_COMPRESS_H
|
13
|
+
|
14
|
+
#if defined (__cplusplus)
|
15
|
+
extern "C" {
|
16
|
+
#endif
|
17
|
+
|
18
|
+
|
19
|
+
/* Note : This is an internal API.
|
20
|
+
* Some methods are still exposed (ZSTDLIB_API),
|
21
|
+
* because it used to be the only way to invoke MT compression.
|
22
|
+
* Now, it's recommended to use ZSTD_compress_generic() instead.
|
23
|
+
* These methods will stop being exposed in a future version */
|
24
|
+
|
25
|
+
/* === Dependencies === */
|
26
|
+
#include <stddef.h> /* size_t */
|
27
|
+
#define ZSTD_STATIC_LINKING_ONLY /* ZSTD_parameters */
|
28
|
+
#include "zstd.h" /* ZSTD_inBuffer, ZSTD_outBuffer, ZSTDLIB_API */
|
29
|
+
|
30
|
+
|
31
|
+
/* === Constants === */
|
32
|
+
#ifndef ZSTDMT_NBWORKERS_MAX
|
33
|
+
# define ZSTDMT_NBWORKERS_MAX 200
|
34
|
+
#endif
|
35
|
+
#ifndef ZSTDMT_JOBSIZE_MIN
|
36
|
+
# define ZSTDMT_JOBSIZE_MIN (1 MB)
|
37
|
+
#endif
|
38
|
+
#define ZSTDMT_JOBSIZE_MAX (MEM_32bits() ? (512 MB) : (1024 MB))
|
39
|
+
|
40
|
+
|
41
|
+
/* === Memory management === */
|
42
|
+
typedef struct ZSTDMT_CCtx_s ZSTDMT_CCtx;
|
43
|
+
ZSTDLIB_API ZSTDMT_CCtx* ZSTDMT_createCCtx(unsigned nbWorkers);
|
44
|
+
ZSTDLIB_API ZSTDMT_CCtx* ZSTDMT_createCCtx_advanced(unsigned nbWorkers,
|
45
|
+
ZSTD_customMem cMem);
|
46
|
+
ZSTDLIB_API size_t ZSTDMT_freeCCtx(ZSTDMT_CCtx* mtctx);
|
47
|
+
|
48
|
+
ZSTDLIB_API size_t ZSTDMT_sizeof_CCtx(ZSTDMT_CCtx* mtctx);
|
49
|
+
|
50
|
+
|
51
|
+
/* === Simple one-pass compression function === */
|
52
|
+
|
53
|
+
ZSTDLIB_API size_t ZSTDMT_compressCCtx(ZSTDMT_CCtx* mtctx,
|
54
|
+
void* dst, size_t dstCapacity,
|
55
|
+
const void* src, size_t srcSize,
|
56
|
+
int compressionLevel);
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
/* === Streaming functions === */
|
61
|
+
|
62
|
+
ZSTDLIB_API size_t ZSTDMT_initCStream(ZSTDMT_CCtx* mtctx, int compressionLevel);
|
63
|
+
ZSTDLIB_API size_t ZSTDMT_resetCStream(ZSTDMT_CCtx* mtctx, unsigned long long pledgedSrcSize); /**< if srcSize is not known at reset time, use ZSTD_CONTENTSIZE_UNKNOWN. Note: for compatibility with older programs, 0 means the same as ZSTD_CONTENTSIZE_UNKNOWN, but it will change in the future to mean "empty" */
|
64
|
+
|
65
|
+
ZSTDLIB_API size_t ZSTDMT_nextInputSizeHint(const ZSTDMT_CCtx* mtctx);
|
66
|
+
ZSTDLIB_API size_t ZSTDMT_compressStream(ZSTDMT_CCtx* mtctx, ZSTD_outBuffer* output, ZSTD_inBuffer* input);
|
67
|
+
|
68
|
+
ZSTDLIB_API size_t ZSTDMT_flushStream(ZSTDMT_CCtx* mtctx, ZSTD_outBuffer* output); /**< @return : 0 == all flushed; >0 : still some data to be flushed; or an error code (ZSTD_isError()) */
|
69
|
+
ZSTDLIB_API size_t ZSTDMT_endStream(ZSTDMT_CCtx* mtctx, ZSTD_outBuffer* output); /**< @return : 0 == all flushed; >0 : still some data to be flushed; or an error code (ZSTD_isError()) */
|
70
|
+
|
71
|
+
|
72
|
+
/* === Advanced functions and parameters === */
|
73
|
+
|
74
|
+
ZSTDLIB_API size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
|
75
|
+
void* dst, size_t dstCapacity,
|
76
|
+
const void* src, size_t srcSize,
|
77
|
+
const ZSTD_CDict* cdict,
|
78
|
+
ZSTD_parameters params,
|
79
|
+
int overlapLog);
|
80
|
+
|
81
|
+
ZSTDLIB_API size_t ZSTDMT_initCStream_advanced(ZSTDMT_CCtx* mtctx,
|
82
|
+
const void* dict, size_t dictSize, /* dict can be released after init, a local copy is preserved within zcs */
|
83
|
+
ZSTD_parameters params,
|
84
|
+
unsigned long long pledgedSrcSize); /* pledgedSrcSize is optional and can be zero == unknown */
|
85
|
+
|
86
|
+
ZSTDLIB_API size_t ZSTDMT_initCStream_usingCDict(ZSTDMT_CCtx* mtctx,
|
87
|
+
const ZSTD_CDict* cdict,
|
88
|
+
ZSTD_frameParameters fparams,
|
89
|
+
unsigned long long pledgedSrcSize); /* note : zero means empty */
|
90
|
+
|
91
|
+
/* ZSTDMT_parameter :
|
92
|
+
* List of parameters that can be set using ZSTDMT_setMTCtxParameter() */
|
93
|
+
typedef enum {
|
94
|
+
ZSTDMT_p_jobSize, /* Each job is compressed in parallel. By default, this value is dynamically determined depending on compression parameters. Can be set explicitly here. */
|
95
|
+
ZSTDMT_p_overlapLog, /* Each job may reload a part of previous job to enhance compressionr ratio; 0 == no overlap, 6(default) == use 1/8th of window, >=9 == use full window. This is a "sticky" parameter : its value will be re-used on next compression job */
|
96
|
+
ZSTDMT_p_rsyncable /* Enables rsyncable mode. */
|
97
|
+
} ZSTDMT_parameter;
|
98
|
+
|
99
|
+
/* ZSTDMT_setMTCtxParameter() :
|
100
|
+
* allow setting individual parameters, one at a time, among a list of enums defined in ZSTDMT_parameter.
|
101
|
+
* The function must be called typically after ZSTD_createCCtx() but __before ZSTDMT_init*() !__
|
102
|
+
* Parameters not explicitly reset by ZSTDMT_init*() remain the same in consecutive compression sessions.
|
103
|
+
* @return : 0, or an error code (which can be tested using ZSTD_isError()) */
|
104
|
+
ZSTDLIB_API size_t ZSTDMT_setMTCtxParameter(ZSTDMT_CCtx* mtctx, ZSTDMT_parameter parameter, int value);
|
105
|
+
|
106
|
+
/* ZSTDMT_getMTCtxParameter() :
|
107
|
+
* Query the ZSTDMT_CCtx for a parameter value.
|
108
|
+
* @return : 0, or an error code (which can be tested using ZSTD_isError()) */
|
109
|
+
ZSTDLIB_API size_t ZSTDMT_getMTCtxParameter(ZSTDMT_CCtx* mtctx, ZSTDMT_parameter parameter, int* value);
|
110
|
+
|
111
|
+
|
112
|
+
/*! ZSTDMT_compressStream_generic() :
|
113
|
+
* Combines ZSTDMT_compressStream() with optional ZSTDMT_flushStream() or ZSTDMT_endStream()
|
114
|
+
* depending on flush directive.
|
115
|
+
* @return : minimum amount of data still to be flushed
|
116
|
+
* 0 if fully flushed
|
117
|
+
* or an error code
|
118
|
+
* note : needs to be init using any ZSTD_initCStream*() variant */
|
119
|
+
ZSTDLIB_API size_t ZSTDMT_compressStream_generic(ZSTDMT_CCtx* mtctx,
|
120
|
+
ZSTD_outBuffer* output,
|
121
|
+
ZSTD_inBuffer* input,
|
122
|
+
ZSTD_EndDirective endOp);
|
123
|
+
|
124
|
+
|
125
|
+
/* ========================================================
|
126
|
+
* === Private interface, for use by ZSTD_compress.c ===
|
127
|
+
* === Not exposed in libzstd. Never invoke directly ===
|
128
|
+
* ======================================================== */
|
129
|
+
|
130
|
+
/*! ZSTDMT_toFlushNow()
|
131
|
+
* Tell how many bytes are ready to be flushed immediately.
|
132
|
+
* Probe the oldest active job (not yet entirely flushed) and check its output buffer.
|
133
|
+
* If return 0, it means there is no active job,
|
134
|
+
* or, it means oldest job is still active, but everything produced has been flushed so far,
|
135
|
+
* therefore flushing is limited by speed of oldest job. */
|
136
|
+
size_t ZSTDMT_toFlushNow(ZSTDMT_CCtx* mtctx);
|
137
|
+
|
138
|
+
/*! ZSTDMT_CCtxParam_setMTCtxParameter()
|
139
|
+
* like ZSTDMT_setMTCtxParameter(), but into a ZSTD_CCtx_Params */
|
140
|
+
size_t ZSTDMT_CCtxParam_setMTCtxParameter(ZSTD_CCtx_params* params, ZSTDMT_parameter parameter, int value);
|
141
|
+
|
142
|
+
/*! ZSTDMT_CCtxParam_setNbWorkers()
|
143
|
+
* Set nbWorkers, and clamp it.
|
144
|
+
* Also reset jobSize and overlapLog */
|
145
|
+
size_t ZSTDMT_CCtxParam_setNbWorkers(ZSTD_CCtx_params* params, unsigned nbWorkers);
|
146
|
+
|
147
|
+
/*! ZSTDMT_updateCParams_whileCompressing() :
|
148
|
+
* Updates only a selected set of compression parameters, to remain compatible with current frame.
|
149
|
+
* New parameters will be applied to next compression job. */
|
150
|
+
void ZSTDMT_updateCParams_whileCompressing(ZSTDMT_CCtx* mtctx, const ZSTD_CCtx_params* cctxParams);
|
151
|
+
|
152
|
+
/*! ZSTDMT_getFrameProgression():
|
153
|
+
* tells how much data has been consumed (input) and produced (output) for current frame.
|
154
|
+
* able to count progression inside worker threads.
|
155
|
+
*/
|
156
|
+
ZSTD_frameProgression ZSTDMT_getFrameProgression(ZSTDMT_CCtx* mtctx);
|
157
|
+
|
158
|
+
|
159
|
+
/*! ZSTDMT_initCStream_internal() :
|
160
|
+
* Private use only. Init streaming operation.
|
161
|
+
* expects params to be valid.
|
162
|
+
* must receive dict, or cdict, or none, but not both.
|
163
|
+
* @return : 0, or an error code */
|
164
|
+
size_t ZSTDMT_initCStream_internal(ZSTDMT_CCtx* zcs,
|
165
|
+
const void* dict, size_t dictSize, ZSTD_dictContentType_e dictContentType,
|
166
|
+
const ZSTD_CDict* cdict,
|
167
|
+
ZSTD_CCtx_params params, unsigned long long pledgedSrcSize);
|
168
|
+
|
169
|
+
|
170
|
+
#if defined (__cplusplus)
|
171
|
+
}
|
172
|
+
#endif
|
173
|
+
|
174
|
+
#endif /* ZSTDMT_COMPRESS_H */
|