zstd-ruby 1.5.2.3 → 1.5.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +13 -5
  3. data/ext/zstdruby/extconf.rb +1 -1
  4. data/ext/zstdruby/libzstd/common/allocations.h +55 -0
  5. data/ext/zstdruby/libzstd/common/bits.h +200 -0
  6. data/ext/zstdruby/libzstd/common/bitstream.h +19 -60
  7. data/ext/zstdruby/libzstd/common/compiler.h +26 -3
  8. data/ext/zstdruby/libzstd/common/cpu.h +1 -1
  9. data/ext/zstdruby/libzstd/common/debug.c +1 -1
  10. data/ext/zstdruby/libzstd/common/debug.h +1 -1
  11. data/ext/zstdruby/libzstd/common/entropy_common.c +12 -40
  12. data/ext/zstdruby/libzstd/common/error_private.c +9 -2
  13. data/ext/zstdruby/libzstd/common/error_private.h +1 -1
  14. data/ext/zstdruby/libzstd/common/fse.h +5 -83
  15. data/ext/zstdruby/libzstd/common/fse_decompress.c +7 -99
  16. data/ext/zstdruby/libzstd/common/huf.h +65 -156
  17. data/ext/zstdruby/libzstd/common/mem.h +39 -46
  18. data/ext/zstdruby/libzstd/common/pool.c +26 -10
  19. data/ext/zstdruby/libzstd/common/pool.h +7 -1
  20. data/ext/zstdruby/libzstd/common/portability_macros.h +22 -3
  21. data/ext/zstdruby/libzstd/common/threading.c +68 -14
  22. data/ext/zstdruby/libzstd/common/threading.h +5 -10
  23. data/ext/zstdruby/libzstd/common/xxhash.c +2 -2
  24. data/ext/zstdruby/libzstd/common/xxhash.h +8 -8
  25. data/ext/zstdruby/libzstd/common/zstd_common.c +1 -36
  26. data/ext/zstdruby/libzstd/common/zstd_deps.h +1 -1
  27. data/ext/zstdruby/libzstd/common/zstd_internal.h +17 -118
  28. data/ext/zstdruby/libzstd/common/zstd_trace.h +3 -3
  29. data/ext/zstdruby/libzstd/compress/clevels.h +1 -1
  30. data/ext/zstdruby/libzstd/compress/fse_compress.c +7 -124
  31. data/ext/zstdruby/libzstd/compress/hist.c +1 -1
  32. data/ext/zstdruby/libzstd/compress/hist.h +1 -1
  33. data/ext/zstdruby/libzstd/compress/huf_compress.c +234 -169
  34. data/ext/zstdruby/libzstd/compress/zstd_compress.c +1243 -538
  35. data/ext/zstdruby/libzstd/compress/zstd_compress_internal.h +225 -151
  36. data/ext/zstdruby/libzstd/compress/zstd_compress_literals.c +115 -39
  37. data/ext/zstdruby/libzstd/compress/zstd_compress_literals.h +16 -8
  38. data/ext/zstdruby/libzstd/compress/zstd_compress_sequences.c +3 -3
  39. data/ext/zstdruby/libzstd/compress/zstd_compress_sequences.h +1 -1
  40. data/ext/zstdruby/libzstd/compress/zstd_compress_superblock.c +25 -21
  41. data/ext/zstdruby/libzstd/compress/zstd_compress_superblock.h +1 -1
  42. data/ext/zstdruby/libzstd/compress/zstd_cwksp.h +128 -62
  43. data/ext/zstdruby/libzstd/compress/zstd_double_fast.c +95 -33
  44. data/ext/zstdruby/libzstd/compress/zstd_double_fast.h +3 -2
  45. data/ext/zstdruby/libzstd/compress/zstd_fast.c +433 -148
  46. data/ext/zstdruby/libzstd/compress/zstd_fast.h +3 -2
  47. data/ext/zstdruby/libzstd/compress/zstd_lazy.c +398 -345
  48. data/ext/zstdruby/libzstd/compress/zstd_lazy.h +4 -2
  49. data/ext/zstdruby/libzstd/compress/zstd_ldm.c +5 -5
  50. data/ext/zstdruby/libzstd/compress/zstd_ldm.h +1 -1
  51. data/ext/zstdruby/libzstd/compress/zstd_ldm_geartab.h +1 -1
  52. data/ext/zstdruby/libzstd/compress/zstd_opt.c +106 -80
  53. data/ext/zstdruby/libzstd/compress/zstd_opt.h +1 -1
  54. data/ext/zstdruby/libzstd/compress/zstdmt_compress.c +17 -9
  55. data/ext/zstdruby/libzstd/compress/zstdmt_compress.h +1 -1
  56. data/ext/zstdruby/libzstd/decompress/huf_decompress.c +434 -441
  57. data/ext/zstdruby/libzstd/decompress/huf_decompress_amd64.S +30 -39
  58. data/ext/zstdruby/libzstd/decompress/zstd_ddict.c +4 -4
  59. data/ext/zstdruby/libzstd/decompress/zstd_ddict.h +1 -1
  60. data/ext/zstdruby/libzstd/decompress/zstd_decompress.c +205 -80
  61. data/ext/zstdruby/libzstd/decompress/zstd_decompress_block.c +201 -81
  62. data/ext/zstdruby/libzstd/decompress/zstd_decompress_block.h +6 -1
  63. data/ext/zstdruby/libzstd/decompress/zstd_decompress_internal.h +4 -2
  64. data/ext/zstdruby/libzstd/dictBuilder/cover.c +19 -15
  65. data/ext/zstdruby/libzstd/dictBuilder/cover.h +1 -1
  66. data/ext/zstdruby/libzstd/dictBuilder/fastcover.c +2 -2
  67. data/ext/zstdruby/libzstd/dictBuilder/zdict.c +11 -89
  68. data/ext/zstdruby/libzstd/zdict.h +53 -31
  69. data/ext/zstdruby/libzstd/zstd.h +580 -135
  70. data/ext/zstdruby/libzstd/zstd_errors.h +27 -8
  71. data/ext/zstdruby/main.c +6 -0
  72. data/ext/zstdruby/skippable_frame.c +63 -0
  73. data/lib/zstd-ruby/version.rb +1 -1
  74. metadata +9 -6
@@ -1,6 +1,6 @@
1
1
  /* ******************************************************************
2
2
  * FSE : Finite State Entropy encoder
3
- * Copyright (c) Yann Collet, Facebook, Inc.
3
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
4
4
  *
5
5
  * You can contact the author at :
6
6
  * - FSE source repository : https://github.com/Cyan4973/FiniteStateEntropy
@@ -26,6 +26,7 @@
26
26
  #define ZSTD_DEPS_NEED_MALLOC
27
27
  #define ZSTD_DEPS_NEED_MATH64
28
28
  #include "../common/zstd_deps.h" /* ZSTD_malloc, ZSTD_free, ZSTD_memcpy, ZSTD_memset */
29
+ #include "../common/bits.h" /* ZSTD_highbit32 */
29
30
 
30
31
 
31
32
  /* **************************************************************
@@ -90,7 +91,7 @@ size_t FSE_buildCTable_wksp(FSE_CTable* ct,
90
91
  assert(tableLog < 16); /* required for threshold strategy to work */
91
92
 
92
93
  /* For explanations on how to distribute symbol values over the table :
93
- * http://fastcompression.blogspot.fr/2014/02/fse-distributing-symbol-values.html */
94
+ * https://fastcompression.blogspot.fr/2014/02/fse-distributing-symbol-values.html */
94
95
 
95
96
  #ifdef __clang_analyzer__
96
97
  ZSTD_memset(tableSymbol, 0, sizeof(*tableSymbol) * tableSize); /* useless initialization, just to keep scan-build happy */
@@ -191,7 +192,7 @@ size_t FSE_buildCTable_wksp(FSE_CTable* ct,
191
192
  break;
192
193
  default :
193
194
  assert(normalizedCounter[s] > 1);
194
- { U32 const maxBitsOut = tableLog - BIT_highbit32 ((U32)normalizedCounter[s]-1);
195
+ { U32 const maxBitsOut = tableLog - ZSTD_highbit32 ((U32)normalizedCounter[s]-1);
195
196
  U32 const minStatePlus = (U32)normalizedCounter[s] << maxBitsOut;
196
197
  symbolTT[s].deltaNbBits = (maxBitsOut << 16) - minStatePlus;
197
198
  symbolTT[s].deltaFindState = (int)(total - (unsigned)normalizedCounter[s]);
@@ -342,21 +343,11 @@ size_t FSE_writeNCount (void* buffer, size_t bufferSize,
342
343
  * FSE Compression Code
343
344
  ****************************************************************/
344
345
 
345
- FSE_CTable* FSE_createCTable (unsigned maxSymbolValue, unsigned tableLog)
346
- {
347
- size_t size;
348
- if (tableLog > FSE_TABLELOG_ABSOLUTE_MAX) tableLog = FSE_TABLELOG_ABSOLUTE_MAX;
349
- size = FSE_CTABLE_SIZE_U32 (tableLog, maxSymbolValue) * sizeof(U32);
350
- return (FSE_CTable*)ZSTD_malloc(size);
351
- }
352
-
353
- void FSE_freeCTable (FSE_CTable* ct) { ZSTD_free(ct); }
354
-
355
346
  /* provides the minimum logSize to safely represent a distribution */
356
347
  static unsigned FSE_minTableLog(size_t srcSize, unsigned maxSymbolValue)
357
348
  {
358
- U32 minBitsSrc = BIT_highbit32((U32)(srcSize)) + 1;
359
- U32 minBitsSymbols = BIT_highbit32(maxSymbolValue) + 2;
349
+ U32 minBitsSrc = ZSTD_highbit32((U32)(srcSize)) + 1;
350
+ U32 minBitsSymbols = ZSTD_highbit32(maxSymbolValue) + 2;
360
351
  U32 minBits = minBitsSrc < minBitsSymbols ? minBitsSrc : minBitsSymbols;
361
352
  assert(srcSize > 1); /* Not supported, RLE should be used instead */
362
353
  return minBits;
@@ -364,7 +355,7 @@ static unsigned FSE_minTableLog(size_t srcSize, unsigned maxSymbolValue)
364
355
 
365
356
  unsigned FSE_optimalTableLog_internal(unsigned maxTableLog, size_t srcSize, unsigned maxSymbolValue, unsigned minus)
366
357
  {
367
- U32 maxBitsSrc = BIT_highbit32((U32)(srcSize - 1)) - minus;
358
+ U32 maxBitsSrc = ZSTD_highbit32((U32)(srcSize - 1)) - minus;
368
359
  U32 tableLog = maxTableLog;
369
360
  U32 minBits = FSE_minTableLog(srcSize, maxSymbolValue);
370
361
  assert(srcSize > 1); /* Not supported, RLE should be used instead */
@@ -532,40 +523,6 @@ size_t FSE_normalizeCount (short* normalizedCounter, unsigned tableLog,
532
523
  return tableLog;
533
524
  }
534
525
 
535
-
536
- /* fake FSE_CTable, for raw (uncompressed) input */
537
- size_t FSE_buildCTable_raw (FSE_CTable* ct, unsigned nbBits)
538
- {
539
- const unsigned tableSize = 1 << nbBits;
540
- const unsigned tableMask = tableSize - 1;
541
- const unsigned maxSymbolValue = tableMask;
542
- void* const ptr = ct;
543
- U16* const tableU16 = ( (U16*) ptr) + 2;
544
- void* const FSCT = ((U32*)ptr) + 1 /* header */ + (tableSize>>1); /* assumption : tableLog >= 1 */
545
- FSE_symbolCompressionTransform* const symbolTT = (FSE_symbolCompressionTransform*) (FSCT);
546
- unsigned s;
547
-
548
- /* Sanity checks */
549
- if (nbBits < 1) return ERROR(GENERIC); /* min size */
550
-
551
- /* header */
552
- tableU16[-2] = (U16) nbBits;
553
- tableU16[-1] = (U16) maxSymbolValue;
554
-
555
- /* Build table */
556
- for (s=0; s<tableSize; s++)
557
- tableU16[s] = (U16)(tableSize + s);
558
-
559
- /* Build Symbol Transformation Table */
560
- { const U32 deltaNbBits = (nbBits << 16) - (1 << nbBits);
561
- for (s=0; s<=maxSymbolValue; s++) {
562
- symbolTT[s].deltaNbBits = deltaNbBits;
563
- symbolTT[s].deltaFindState = s-1;
564
- } }
565
-
566
- return 0;
567
- }
568
-
569
526
  /* fake FSE_CTable, for rle input (always same symbol) */
570
527
  size_t FSE_buildCTable_rle (FSE_CTable* ct, BYTE symbolValue)
571
528
  {
@@ -664,78 +621,4 @@ size_t FSE_compress_usingCTable (void* dst, size_t dstSize,
664
621
 
665
622
  size_t FSE_compressBound(size_t size) { return FSE_COMPRESSBOUND(size); }
666
623
 
667
- #ifndef ZSTD_NO_UNUSED_FUNCTIONS
668
- /* FSE_compress_wksp() :
669
- * Same as FSE_compress2(), but using an externally allocated scratch buffer (`workSpace`).
670
- * `wkspSize` size must be `(1<<tableLog)`.
671
- */
672
- size_t FSE_compress_wksp (void* dst, size_t dstSize, const void* src, size_t srcSize, unsigned maxSymbolValue, unsigned tableLog, void* workSpace, size_t wkspSize)
673
- {
674
- BYTE* const ostart = (BYTE*) dst;
675
- BYTE* op = ostart;
676
- BYTE* const oend = ostart + dstSize;
677
-
678
- unsigned count[FSE_MAX_SYMBOL_VALUE+1];
679
- S16 norm[FSE_MAX_SYMBOL_VALUE+1];
680
- FSE_CTable* CTable = (FSE_CTable*)workSpace;
681
- size_t const CTableSize = FSE_CTABLE_SIZE_U32(tableLog, maxSymbolValue);
682
- void* scratchBuffer = (void*)(CTable + CTableSize);
683
- size_t const scratchBufferSize = wkspSize - (CTableSize * sizeof(FSE_CTable));
684
-
685
- /* init conditions */
686
- if (wkspSize < FSE_COMPRESS_WKSP_SIZE_U32(tableLog, maxSymbolValue)) return ERROR(tableLog_tooLarge);
687
- if (srcSize <= 1) return 0; /* Not compressible */
688
- if (!maxSymbolValue) maxSymbolValue = FSE_MAX_SYMBOL_VALUE;
689
- if (!tableLog) tableLog = FSE_DEFAULT_TABLELOG;
690
-
691
- /* Scan input and build symbol stats */
692
- { CHECK_V_F(maxCount, HIST_count_wksp(count, &maxSymbolValue, src, srcSize, scratchBuffer, scratchBufferSize) );
693
- if (maxCount == srcSize) return 1; /* only a single symbol in src : rle */
694
- if (maxCount == 1) return 0; /* each symbol present maximum once => not compressible */
695
- if (maxCount < (srcSize >> 7)) return 0; /* Heuristic : not compressible enough */
696
- }
697
-
698
- tableLog = FSE_optimalTableLog(tableLog, srcSize, maxSymbolValue);
699
- CHECK_F( FSE_normalizeCount(norm, tableLog, count, srcSize, maxSymbolValue, /* useLowProbCount */ srcSize >= 2048) );
700
-
701
- /* Write table description header */
702
- { CHECK_V_F(nc_err, FSE_writeNCount(op, oend-op, norm, maxSymbolValue, tableLog) );
703
- op += nc_err;
704
- }
705
-
706
- /* Compress */
707
- CHECK_F( FSE_buildCTable_wksp(CTable, norm, maxSymbolValue, tableLog, scratchBuffer, scratchBufferSize) );
708
- { CHECK_V_F(cSize, FSE_compress_usingCTable(op, oend - op, src, srcSize, CTable) );
709
- if (cSize == 0) return 0; /* not enough space for compressed data */
710
- op += cSize;
711
- }
712
-
713
- /* check compressibility */
714
- if ( (size_t)(op-ostart) >= srcSize-1 ) return 0;
715
-
716
- return op-ostart;
717
- }
718
-
719
- typedef struct {
720
- FSE_CTable CTable_max[FSE_CTABLE_SIZE_U32(FSE_MAX_TABLELOG, FSE_MAX_SYMBOL_VALUE)];
721
- union {
722
- U32 hist_wksp[HIST_WKSP_SIZE_U32];
723
- BYTE scratchBuffer[1 << FSE_MAX_TABLELOG];
724
- } workspace;
725
- } fseWkspMax_t;
726
-
727
- size_t FSE_compress2 (void* dst, size_t dstCapacity, const void* src, size_t srcSize, unsigned maxSymbolValue, unsigned tableLog)
728
- {
729
- fseWkspMax_t scratchBuffer;
730
- DEBUG_STATIC_ASSERT(sizeof(scratchBuffer) >= FSE_COMPRESS_WKSP_SIZE_U32(FSE_MAX_TABLELOG, FSE_MAX_SYMBOL_VALUE)); /* compilation failures here means scratchBuffer is not large enough */
731
- if (tableLog > FSE_MAX_TABLELOG) return ERROR(tableLog_tooLarge);
732
- return FSE_compress_wksp(dst, dstCapacity, src, srcSize, maxSymbolValue, tableLog, &scratchBuffer, sizeof(scratchBuffer));
733
- }
734
-
735
- size_t FSE_compress (void* dst, size_t dstCapacity, const void* src, size_t srcSize)
736
- {
737
- return FSE_compress2(dst, dstCapacity, src, srcSize, FSE_MAX_SYMBOL_VALUE, FSE_DEFAULT_TABLELOG);
738
- }
739
- #endif
740
-
741
624
  #endif /* FSE_COMMONDEFS_ONLY */
@@ -1,7 +1,7 @@
1
1
  /* ******************************************************************
2
2
  * hist : Histogram functions
3
3
  * part of Finite State Entropy project
4
- * Copyright (c) Yann Collet, Facebook, Inc.
4
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
5
5
  *
6
6
  * You can contact the author at :
7
7
  * - FSE source repository : https://github.com/Cyan4973/FiniteStateEntropy
@@ -1,7 +1,7 @@
1
1
  /* ******************************************************************
2
2
  * hist : Histogram functions
3
3
  * part of Finite State Entropy project
4
- * Copyright (c) Yann Collet, Facebook, Inc.
4
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
5
5
  *
6
6
  * You can contact the author at :
7
7
  * - FSE source repository : https://github.com/Cyan4973/FiniteStateEntropy