head 1.1; branch 1.1.1; access; symbols netbsd-11-0-RC5:1.1.1.1 netbsd-11-0-RC4:1.1.1.1 zstd-1-5-7:1.1.1.2 netbsd-11-0-RC3:1.1.1.1 netbsd-11-0-RC2:1.1.1.1 netbsd-11-0-RC1:1.1.1.1 perseant-exfatfs-base-20250801:1.1.1.1 netbsd-11:1.1.1.1.0.2 netbsd-11-base:1.1.1.1 zstd-1-5-6:1.1.1.1 META:1.1.1; locks; strict; comment @// @; 1.1 date 2024.10.27.22.44.09; author christos; state Exp; branches 1.1.1.1; next ; commitid IUZDrqSXcnIYVlvF; 1.1.1.1 date 2024.10.27.22.44.09; author christos; state Exp; branches; next 1.1.1.2; commitid IUZDrqSXcnIYVlvF; 1.1.1.2 date 2026.05.01.14.27.21; author christos; state Exp; branches; next ; commitid LjoDikzDsAzrt7EG; desc @@ 1.1 log @Initial revision @ text @/* * Copyright (c) Meta Platforms, Inc. and affiliates. * All rights reserved. * * This source code is licensed under both the BSD-style license (found in the * LICENSE file in the root directory of this source tree) and the GPLv2 (found * in the COPYING file in the root directory of this source tree). */ extern "C" { #include "datagen.h" } #include "Options.h" #include "test/RoundTrip.h" #include "utils/ScopeGuard.h" #include #include #include #include #include using namespace std; using namespace pzstd; namespace { string writeData(size_t size, double matchProba, double litProba, unsigned seed) { std::unique_ptr buf(new uint8_t[size]); RDG_genBuffer(buf.get(), size, matchProba, litProba, seed); string file = tmpnam(nullptr); auto fd = std::fopen(file.c_str(), "wb"); auto guard = makeScopeGuard([&] { std::fclose(fd); }); auto bytesWritten = std::fwrite(buf.get(), 1, size, fd); if (bytesWritten != size) { std::abort(); } return file; } template string generateInputFile(Generator& gen) { // Use inputs ranging from 1 Byte to 2^16 Bytes std::uniform_int_distribution size{1, 1 << 16}; std::uniform_real_distribution<> prob{0, 1}; return writeData(size(gen), prob(gen), prob(gen), gen()); } template Options generateOptions(Generator& gen, const string& inputFile) { Options options; options.inputFiles = {inputFile}; options.overwrite = true; std::uniform_int_distribution numThreads{1, 32}; std::uniform_int_distribution compressionLevel{1, 10}; options.numThreads = numThreads(gen); options.compressionLevel = compressionLevel(gen); return options; } } int main() { std::mt19937 gen(std::random_device{}()); auto newlineGuard = makeScopeGuard([] { std::fprintf(stderr, "\n"); }); for (unsigned i = 0; i < 10000; ++i) { if (i % 100 == 0) { std::fprintf(stderr, "Progress: %u%%\r", i / 100); } auto inputFile = generateInputFile(gen); auto inputGuard = makeScopeGuard([&] { std::remove(inputFile.c_str()); }); for (unsigned i = 0; i < 10; ++i) { auto options = generateOptions(gen, inputFile); if (!roundTrip(options)) { std::fprintf(stderr, "numThreads: %u\n", options.numThreads); std::fprintf(stderr, "level: %u\n", options.compressionLevel); std::fprintf(stderr, "decompress? %u\n", (unsigned)options.decompress); std::fprintf(stderr, "file: %s\n", inputFile.c_str()); return 1; } } } return 0; } @ 1.1.1.1 log @Import zstd-1.5.6 from: https://github.com/facebook/zstd/releases/download/v1.5.6/zstd-1.5.6.tar.gz @ text @@ 1.1.1.2 log @Import zstd-1.5.7 (previous was 1.5.6) V1.5.7 (Feb 2025) fix: compression bug in 32-bit mode associated with long-lasting sessions api: new method `ZSTD_compressSequencesAndLiterals()` (#4217, #4232) api: `ZSTD_getFrameHeader()` works on skippable frames (#4228) perf: substantial compression speed improvements (up to +30%) on small data, by @@TocarIP (#4144) and @@cyan4973 (#4165) perf: improved compression speed (~+5%) for dictionary compression at low levels (#4170) perf: much faster speed for `--patch-from` at high compression levels (#4276) perf: higher `--patch-from` compression ratios, notably at high levels (#4288) perf: better speed for binaries on Windows (@@pps83) and when compiled with Visual Studio (@@MessyHack) perf: slight compression ratio improvement thanks to better block boundaries (#4136, #4176, #4178) perf: slight compression ratio improvement for `dfast`, aka levels 3 and 4 (#4171) perf: runtime bmi2 detection enabled on x86 32-bit mode (#4251) cli: multi-threading as default CLI setting, by @@daniellerozenblit cli: new `--max` command (#4290) build: improve `msbuild` version autodetection, support VS2022, by @@ManuelBlanc build: fix `meson` build by @@artem and @@Victor-C-Zhang, and on Windows by @@bgilbert build: compatibility with Apple Framework, by @@Treata11 build: improve icc/icx compatibility, by @@josepho0918 and @@luau-project build: improve compatibility with Android NDK, by Adenilson Cavalcanti portability: linux kernel branch, with improved support for Sequence producers (@@embg, @@gcabiddu, @@cyan4973) portability: improved qnx compatibility, suggested by @@rainbowball portability: improved install script for FreeBSD, by @@sunpoet portability: fixed test suite compatibility with gnu hurd, by @@diegonc doc: clarify specification, by @@elasota misc: improved tests/decodecorpus validation tool (#4102), by antmicro @ text @d9 1 d11 1 @