view release on metacpan or search on metacpan
ext/zstd/CHANGELOG view on Meta::CPAN
6465666768697071727374757677787980818283build: Allow user to
select
legacy level
for
cmake (
#3050, @shadchin)
build: Enable legacy support by
default
in cmake (
#3079, @niamster)
build: Meson build script improvements (
#3039, #3120, #3122, #3327, #3357, @eli-schwartz and #3276, @neheb)
build: Add aarch64 to supported architectures
for
zstd_trace (
#3054, @ooosssososos)
build: support AIX architecture (
#3219, @qiongsiwu)
build: Fix `ZSTD_LIB_MINIFY` build macro, which now reduces static library size by half (
#3366, @terrelln)
build: Fix Windows issues
with
Multithreading translation layer (
#3364, #3380, @yoniko) and ARM64 target (#3320, @cwoffenden)
build: Fix `cmake` script (
#3382, #3392, @terrelln and #3252 @Tachi107 and #3167 @Cyan4973)
doc: Updated man page, providing more details
for
`--train` mode (
#3112, @Cyan4973)
doc: Add decompressor errata document (
#3092, @terrelln)
misc: Enable Intel CET (
#2992, #2994, @hjl-tools)
misc: Fix `contrib/` seekable
format
(
#3058, @yhoogstrate and #3346, @daniellerozenblit)
misc: Improve speed of the one-file library generator (
#3241, @wahern and #3005, @cwoffenden)
v1.5.3 (dev version, unpublished)
v1.5.2 (Jan, 2022)
perf: Regain Minimal memset()-ing During Reuse of Compression Contexts (
@Cyan4973
,
#2969)
build: Build Zstd
with
`noexecstack` on All Architectures (
@felixhandte
,
#2964)
doc: Clarify Licensing (
@terrelln
,
#2981)
ext/zstd/lib/common/portability_macros.h view on Meta::CPAN
128129130131132133134135136137138139140141142143144145146147148149150151152153154155156#if !defined(ZSTD_DISABLE_ASM) && \
ZSTD_ASM_SUPPORTED && \
defined
(__x86_64__) && \
(DYNAMIC_BMI2 ||
defined
(__BMI2__))
# define ZSTD_ENABLE_ASM_X86_64_BMI2 1
#else
# define ZSTD_ENABLE_ASM_X86_64_BMI2 0
#endif
/*
* For x86 ELF targets, add .note.gnu.property section
for
Intel CET in
* assembly sources
when
CET is enabled.
*
* Additionally, any function that may be called indirectly must begin
*
with
ZSTD_CET_ENDBRANCH.
*/
#if defined(__ELF__) && (defined(__x86_64__) || defined(__i386__)) \
&&
defined
(__has_include)
# if __has_include(<cet.h>)
# include <cet.h>
# define ZSTD_CET_ENDBRANCH _CET_ENDBR
# endif
#endif
#ifndef ZSTD_CET_ENDBRANCH
# define ZSTD_CET_ENDBRANCH
#endif
#endif /* ZSTD_PORTABILITY_MACROS_H */
ext/zstd/lib/common/zstd_internal.h view on Meta::CPAN
252253254255256257258259260261262263264265266267268269270271272273274275276277278279MEM_STATIC size_t ZSTD_limitCopy(void* dst, size_t dstCapacity, const void* src, size_t srcSize)
{
size_t const
length
= MIN(dstCapacity, srcSize);
if
(
length
> 0) {
ZSTD_memcpy(dst, src,
length
);
}
return
length
;
}
/* define
"workspace is too large"
as this number of
times
larger than needed */
#define ZSTD_WORKSPACETOOLARGE_FACTOR 3
/*
when
workspace is continuously too large
* during at least this number of
times
,
* context's memory usage is considered wasteful,
* because it's sized to handle a worst case scenario which rarely happens.
* In which case, resize it down to free some memory */
#define ZSTD_WORKSPACETOOLARGE_MAXDURATION 128
/* Controls whether the input/output buffer is buffered or stable. */
typedef enum {
ZSTD_bm_buffered = 0, /* Buffer the input/output */
ZSTD_bm_stable = 1 /* ZSTD_inBuffer/ZSTD_outBuffer is stable */
} ZSTD_bufferMode_e;
/*-*******************************************
* Private declarations
ext/zstd/lib/compress/zstd_cwksp.h view on Meta::CPAN
711712713714715716717718719720721722723724725726727728729730731732733734735736MEM_STATIC size_t ZSTD_cwksp_available_space(ZSTD_cwksp* ws) {
return
(size_t)((BYTE*)ws->allocStart - (BYTE*)ws->tableEnd);
}
MEM_STATIC
int
ZSTD_cwksp_check_available(ZSTD_cwksp* ws, size_t additionalNeededSpace) {
return
ZSTD_cwksp_available_space(ws) >= additionalNeededSpace;
}
MEM_STATIC
int
ZSTD_cwksp_check_too_large(ZSTD_cwksp* ws, size_t additionalNeededSpace) {
return
ZSTD_cwksp_check_available(
ws, additionalNeededSpace * ZSTD_WORKSPACETOOLARGE_FACTOR);
}
MEM_STATIC
int
ZSTD_cwksp_check_wasteful(ZSTD_cwksp* ws, size_t additionalNeededSpace) {
return
ZSTD_cwksp_check_too_large(ws, additionalNeededSpace)
&& ws->workspaceOversizedDuration > ZSTD_WORKSPACETOOLARGE_MAXDURATION;
}
MEM_STATIC void ZSTD_cwksp_bump_oversized_duration(
ZSTD_cwksp* ws, size_t additionalNeededSpace) {
if
(ZSTD_cwksp_check_too_large(ws, additionalNeededSpace)) {
ws->workspaceOversizedDuration++;
}
else
{
ws->workspaceOversizedDuration = 0;
}
}
ext/zstd/lib/decompress/huf_decompress_amd64.S view on Meta::CPAN
90919293949596979899100101102103104105106107108109110
X(0, idx); \
X(1, idx); \
X(2, idx); \
X(3, idx)
/* Define both _HUF_* & HUF_* symbols because MacOS
*/
_HUF_decompress4X1_usingDTable_internal_fast_asm_loop:
HUF_decompress4X1_usingDTable_internal_fast_asm_loop:
ZSTD_CET_ENDBRANCH
/* Save all registers - even
if
they are callee saved
for
simplicity. */
push
%rax
push
%rbx
push
%rcx
push
%rdx
push
%rbp
push
%rsi
push
%rdi
push
%r8
push
%r9
ext/zstd/lib/decompress/huf_decompress_amd64.S view on Meta::CPAN
346347348349350351352353354355356357358359360361362363364365366
pop
%rsi
pop
%rbp
pop
%rdx
pop
%rcx
pop
%rbx
pop
%rax
ret
_HUF_decompress4X2_usingDTable_internal_fast_asm_loop:
HUF_decompress4X2_usingDTable_internal_fast_asm_loop:
ZSTD_CET_ENDBRANCH
/* Save all registers - even
if
they are callee saved
for
simplicity. */
push
%rax
push
%rbx
push
%rcx
push
%rdx
push
%rbp
push
%rsi
push
%rdi
push
%r8
push
%r9
ext/zstd/lib/decompress/zstd_decompress.c view on Meta::CPAN
1957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990
RETURN_ERROR_IF(zfh.windowSize > windowSizeMax,
frameParameter_windowTooLarge,
""
);
return
ZSTD_estimateDStreamSize((size_t)zfh.windowSize);
}
/* ***** Decompression ***** */
static
int
ZSTD_DCtx_isOverflow(ZSTD_DStream* zds, size_t const neededInBuffSize, size_t const neededOutBuffSize)
{
return
(zds->inBuffSize + zds->outBuffSize) >= (neededInBuffSize + neededOutBuffSize) * ZSTD_WORKSPACETOOLARGE_FACTOR;
}
static void ZSTD_DCtx_updateOversizedDuration(ZSTD_DStream* zds, size_t const neededInBuffSize, size_t const neededOutBuffSize)
{
if
(ZSTD_DCtx_isOverflow(zds, neededInBuffSize, neededOutBuffSize))
zds->oversizedDuration++;
else
zds->oversizedDuration = 0;
}
static
int
ZSTD_DCtx_isOversizedTooLong(ZSTD_DStream* zds)
{
return
zds->oversizedDuration >= ZSTD_WORKSPACETOOLARGE_MAXDURATION;
}
/* Checks that the output buffer hasn't changed
if
ZSTD_obm_stable is used. */
static size_t ZSTD_checkOutBuffer(ZSTD_DStream const* zds, ZSTD_outBuffer const* output)
{
ZSTD_outBuffer const expect = zds->expectedOutBuffer;
/* No requirement
when
ZSTD_obm_stable is not enabled. */
if
(zds->outBufferMode != ZSTD_bm_stable)
return
0;
/* Any buffer is allowed in zdss_init, this must be the same
for
every other call
until
ext/zstd/tests/fuzzer.c view on Meta::CPAN
363738394041424344454647484950515253545556#include "zstd_errors.h" /* ZSTD_getErrorCode */
#define ZDICT_STATIC_LINKING_ONLY
#include "zdict.h" /* ZDICT_trainFromBuffer */
#include "mem.h"
#include "datagen.h" /* RDG_genBuffer */
#define XXH_STATIC_LINKING_ONLY /* XXH64_state_t */
#include "xxhash.h" /* XXH64 */
#include "util.h"
#include "timefn.h" /* SEC_TO_MICRO, UTIL_time_t, UTIL_TIME_INITIALIZER, UTIL_clockSpanMicro, UTIL_getTime */
/* must be included
after
util.h, due to ERROR macro redefinition issue on Visual Studio */
#include "zstd_internal.h" /* ZSTD_WORKSPACETOOLARGE_MAXDURATION, ZSTD_WORKSPACETOOLARGE_FACTOR, KB, MB */
#include "threading.h" /* ZSTD_pthread_create, ZSTD_pthread_join */
/*-************************************
* Constants
**************************************/
#define GB *(1U<<30)
static const
int
FUZ_compressibility_default = 50;
static const
int
nbTestsDefault = 30000;
ext/zstd/tests/fuzzer.c view on Meta::CPAN
18971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919DISPLAYLEVEL(3,
"test%3i : compress large input with static CCtx : "
, testNb++);
CHECK_VAR(cSize, ZSTD_compressCCtx(staticCCtx,
compressedBuffer, compressedBufferSize,
CNBuffer, CNBuffSize, STATIC_CCTX_LEVEL) );
DISPLAYLEVEL(3,
"OK (%u bytes : %.2f%%)\n"
,
(unsigned)cSize, (double)cSize/CNBuffSize*100);
DISPLAYLEVEL(3,
"test%3i : compress small input often enough to trigger context reduce : "
, testNb++);
{
int
nbc;
assert(staticCCtxSize > smallCCtxSize * ZSTD_WORKSPACETOOLARGE_FACTOR); /* ensure size down scenario */
assert(CNBuffSize > smallInSize + ZSTD_WORKSPACETOOLARGE_MAXDURATION + 3);
for
(nbc=0; nbc<ZSTD_WORKSPACETOOLARGE_MAXDURATION+2; nbc++) {
CHECK_Z(ZSTD_compressCCtx(staticCCtx,
compressedBuffer, compressedBufferSize,
(char*)CNBuffer + nbc, smallInSize,
STATIC_CCTX_LEVEL) );
} }
DISPLAYLEVEL(3,
"OK \n"
)
DISPLAYLEVEL(3,
"test%3i : init CCtx for level %u : "
, testNb++, STATIC_CCTX_LEVEL);
CHECK_Z( ZSTD_compressBegin(staticCCtx, STATIC_CCTX_LEVEL) );
DISPLAYLEVEL(3,
"OK \n"
);
ext/zstd/tests/golden-compression/PR-3517-block-splitter-corruption-test view on Meta::CPAN
10000000100114101031400000000100114101031400000000100114101031400000000000010011410103010020121000400200110101112112102133020000130103110012004100203000040200001001120000100200220000001202001111101010121201010115010002004010100021001100001002200200200...