{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":67155890,"defaultBranch":"dev","name":"zstd","ownerLogin":"terrelln","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2016-09-01T18:24:43.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/6619134?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1711472728.0","currentOid":""},"activityList":{"items":[{"before":null,"after":"c8566273481e0866474af52bf0ece03d7e47e764","ref":"refs/heads/2024-03-26-oss-fuzz-build-fix","pushedAt":"2024-03-26T17:05:28.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"[fuzz] Turn off -Werror by default\n\nThis was causing OSS-Fuzz errors, due to compiler differences.\n* Fix the issue\n* Also turn off -Werror so we don't fail fuzzer builds for warnings\n* Turn on -Werror in our CI","shortMessageHtmlLink":"[fuzz] Turn off -Werror by default"}},{"before":"8e3e6b8983ce081ac9b3994cb52426a891e6c4c4","after":"731f4b70fcd22fc9badd4e51dc6d939ee6da6c54","ref":"refs/heads/2024-03-19-generate-sequences","pushedAt":"2024-03-21T14:18:36.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"Fix & fuzz ZSTD_generateSequences\n\nThis function was seriously flawed:\n* It didn't do output bounds checks\n* It produced invalid sequences when an uncompressed or RLE block was emitted\n* It produced invalid sequences when the block splitter was enabled\n* It produced invalid sequences when ZSTD_c_targetCBlockSize was enabled\n\nI've attempted to fix these issues, but this function is just a bad idea,\nso I've marked it as deprecated and unsafe. We should replace it with\n`ZSTD_extractSequences()` which operates on a compressed frame.","shortMessageHtmlLink":"Fix & fuzz ZSTD_generateSequences"}},{"before":"a7e5e9349b3e4c59eaa88cb1b9b47d674a6ae8db","after":"8e3e6b8983ce081ac9b3994cb52426a891e6c4c4","ref":"refs/heads/2024-03-19-generate-sequences","pushedAt":"2024-03-19T21:42:57.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"Fix & fuzz ZSTD_generateSequences\n\nThis function was seriously flawed:\n* It didn't do output bounds checks\n* It produced invalid sequences when an uncompressed or RLE block was emitted\n* It produced invalid sequences when the block splitter was enabled\n* It produced invalid sequences when ZSTD_c_targetCBlockSize was enabled\n\nI've attempted to fix these issues, but this function is just a bad idea,\nso I've marked it as deprecated and unsafe. We should replace it with\n`ZSTD_extractSequences()` which operates on a compressed frame.","shortMessageHtmlLink":"Fix & fuzz ZSTD_generateSequences"}},{"before":"0a268d11d3efea308ec2f6ccb7b971f6fd89c998","after":"a7e5e9349b3e4c59eaa88cb1b9b47d674a6ae8db","ref":"refs/heads/2024-03-19-generate-sequences","pushedAt":"2024-03-19T20:48:43.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"Fix & fuzz ZSTD_generateSequences\n\nThis function was seriously flawed:\n* It didn't do output bounds checks\n* It produced invalid sequences when an uncompressed or RLE block was emitted\n* It produced invalid sequences when the block splitter was enabled\n* It produced invalid sequences when ZSTD_c_targetCBlockSize was enabled\n\nI've attempted to fix these issues, but this function is just a bad idea,\nso I've marked it as deprecated and unsafe. We should replace it with\n`ZSTD_extractSequences()` which operates on a compressed frame.","shortMessageHtmlLink":"Fix & fuzz ZSTD_generateSequences"}},{"before":"646759afb763c457e6fd10be9b396ac68f440a5e","after":"0a268d11d3efea308ec2f6ccb7b971f6fd89c998","ref":"refs/heads/2024-03-19-generate-sequences","pushedAt":"2024-03-19T20:41:10.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"Fix & fuzz ZSTD_generateSequences\n\nThis function was seriously flawed:\n* It didn't do output bounds checks\n* It produced invalid sequences when an uncompressed or RLE block was emitted\n* It produced invalid sequences when the block splitter was enabled\n* It produced invalid sequences when ZSTD_c_targetCBlockSize was enabled\n\nI've attempted to fix these issues, but this function is just a bad idea,\nso I've marked it as deprecated and unsafe. We should replace it with\n`ZSTD_extractSequences()` which operates on a compressed frame.","shortMessageHtmlLink":"Fix & fuzz ZSTD_generateSequences"}},{"before":null,"after":"e010d83b51fafd35a527dedfb8ef93457b874e2d","ref":"refs/heads/2024-03-19-extract-sequences","pushedAt":"2024-03-19T20:35:56.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"extract sequences","shortMessageHtmlLink":"extract sequences"}},{"before":null,"after":"646759afb763c457e6fd10be9b396ac68f440a5e","ref":"refs/heads/2024-03-19-generate-sequences","pushedAt":"2024-03-19T19:54:24.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"Fix & fuzz ZSTD_generateSequences\n\nThis function was seriously flawed:\n* It didn't do output bounds checks\n* It produced invalid sequences when an uncompressed or RLE block was emitted\n* It produced invalid sequences when the block splitter was enabled\n* It produced invalid sequences when ZSTD_c_targetCBlockSize was enabled\n\nI've attempted to fix these issues, but this function is just a bad idea,\nso I've marked it as deprecated and unsafe. We should replace it with\n`ZSTD_extractSequences()` which operates on a compressed frame.","shortMessageHtmlLink":"Fix & fuzz ZSTD_generateSequences"}},{"before":"29593b80bb06c69b323c5e66bc5347cd12be43a6","after":"42b02f5185393e5f71abaa4c532684de3569be85","ref":"refs/heads/2024-03-18-cmake-docs","pushedAt":"2024-03-18T16:31:31.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"[cmake] Emit warnings for contradictory build settings\n\nDocument that the `ZSTD_BUILD_{SHARED,STATIC}` take precedence over `BUILD_SHARED_LIBS` when exactly one is ON.\n\nThanks to @teo-tsirpanis for pointing out the potentially confusing behavior.","shortMessageHtmlLink":"[cmake] Emit warnings for contradictory build settings"}},{"before":null,"after":"29593b80bb06c69b323c5e66bc5347cd12be43a6","ref":"refs/heads/2024-03-18-cmake-docs","pushedAt":"2024-03-18T16:29:54.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"[cmake] Emit warnings for contradictory build settings\n\nDocument that the `ZSTD_BUILD_{SHARED,STATIC}` take precedence over `BUILD_SHARED_LIBS` when exactly one is ON.\n\nThanks to @teo-tsirpanis for pointing out the potentially confusing behavior.","shortMessageHtmlLink":"[cmake] Emit warnings for contradictory build settings"}},{"before":null,"after":"527e0a0281147eef65b3ecbc5950bd375b9ecf1c","ref":"refs/heads/2024-03-14-pr-3716-cmake-target-includes","pushedAt":"2024-03-14T19:40:44.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"[cmake] Fix up PR #3716\n\n* Make a variable `PublicHeaders` for Zstd's public headers\n* Add `PublicHeaders` to `Headers`, which was missing\n* Only export `${LIBRARY_DIR}` publicly, not `common/`\n* Switch the `target_include_directories()` to `INTERFACE` because zstd uses relative includes internally, so doesn't need any include directories to build\n* Switch installation to use the `PublicHeaders` variable, and test that the right headers are installed","shortMessageHtmlLink":"[cmake] Fix up PR facebook#3716"}},{"before":null,"after":"e9c7245e72c24842234d47bd510c384b3756e48e","ref":"refs/heads/2024-03-14-issue-3859-cmake-selected-target","pushedAt":"2024-03-14T15:51:10.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"[cmake] Always create libzstd target\n\nIf both `ZSTD_BUILD_SHARED` and `ZSTD_BUILD_STATIC` are set, then cmake exports the libraries `libzstd_shared` and `libzstd_static` only.\nIt does not export `libzstd`, which is only exported when exactly one of `ZSTD_BUILD_SHARED` and `ZSTD_BUILD_STATIC` is set.\nThis PR exports `libzstd` in that case, based on the value of the standard CMake variable [`BUILD_SHARED_LIBS`](https://cmake.org/cmake/help/latest/variable/BUILD_SHARED_LIBS.html).\nThis ensures that `libzstd` can always be used to refer to the exported zstd library, since the build errors if neither `ZSTD_BUILD_SHARED` nor `ZSTD_BUILD_STATIC` are set.\n\nI tested all the possible combinations of `ZSTD_BUILD_SHARED`, `ZSTD_BUILD_STATIC`, and `BUILD_SHARED_LIBS` and they always worked as expected:\n* If only exactly one of `ZSTD_BUILD_SHARED` and `ZSTD_BUILD_STATIC` is set, that is used as `libzstd`.\n* Otherwise, libzstd is set based on `BUILD_SHARED_LIBS`.\n\nFixes #3859.","shortMessageHtmlLink":"[cmake] Always create libzstd target"}},{"before":"941552db43257f0e575084155db7b0d572d18b52","after":"a88781954a875c4f00883eba6a8c5d172c4f5c17","ref":"refs/heads/2024-03-12-issue-3841-asm-bti","pushedAt":"2024-03-13T18:37:40.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"[asm][aarch64] Mark that BTI and PAC are supported\n\nMark that `huf_decompress_amd64.S` supports BTI and PAC, which it trivially does because it is empty for aarch64.\n\nThe issue only requested BTI markings, but it also makes sense to mark PAC, which is the only other feature.\n\nAlso run add a test for this mode to the ARM64 QEMU test. Before this PR it warns on `huf_decompress_amd64.S`, after it doesn't.\n\nFixes Issue #3841.","shortMessageHtmlLink":"[asm][aarch64] Mark that BTI and PAC are supported"}},{"before":"08d4cba81b1e479ba2e600ce58322c64aa967be6","after":"941552db43257f0e575084155db7b0d572d18b52","ref":"refs/heads/2024-03-12-issue-3841-asm-bti","pushedAt":"2024-03-13T17:26:23.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"attempt to repro the issue in ci","shortMessageHtmlLink":"attempt to repro the issue in ci"}},{"before":null,"after":"08d4cba81b1e479ba2e600ce58322c64aa967be6","ref":"refs/heads/2024-03-12-issue-3841-asm-bti","pushedAt":"2024-03-13T16:59:02.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"attempt to repro the issue in ci","shortMessageHtmlLink":"attempt to repro the issue in ci"}},{"before":"93e70be85ef1b2ca927e0cc1aecc0bd29d146914","after":"7fc8efd53cc50cc69ce62f785801a91712f0ed53","ref":"refs/heads/2024-03-12-issue-3646-cpuid-rbx-clobbering","pushedAt":"2024-03-12T20:40:52.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"[CI] Run tests with CMake on Windows\n\nBuild and run tests on Windows with CMake","shortMessageHtmlLink":"[CI] Run tests with CMake on Windows"}},{"before":"4a8724f9797734e2159d886b973145903e0861e1","after":"93e70be85ef1b2ca927e0cc1aecc0bd29d146914","ref":"refs/heads/2024-03-12-issue-3646-cpuid-rbx-clobbering","pushedAt":"2024-03-12T20:32:38.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"[CI] Run tests with CMake on Windows\n\nBuild and run tests on Windows with CMake","shortMessageHtmlLink":"[CI] Run tests with CMake on Windows"}},{"before":"d80e109e0abc83bafadd3d8693dae36fc2acaf54","after":"4a8724f9797734e2159d886b973145903e0861e1","ref":"refs/heads/2024-03-12-issue-3646-cpuid-rbx-clobbering","pushedAt":"2024-03-12T20:22:21.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"[CI] Run tests with CMake on Windows\n\nBuild and run tests on Windows with CMake","shortMessageHtmlLink":"[CI] Run tests with CMake on Windows"}},{"before":"1c8a5a2cfc657163b68e80c65165acc6c8dbca0d","after":"d80e109e0abc83bafadd3d8693dae36fc2acaf54","ref":"refs/heads/2024-03-12-issue-3646-cpuid-rbx-clobbering","pushedAt":"2024-03-12T20:11:44.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"[CI] Run tests with CMake on Windows\n\nBuild and run tests on Windows with CMake","shortMessageHtmlLink":"[CI] Run tests with CMake on Windows"}},{"before":"876eec0af5fe6fe587a4d024e67c8890b22e8e58","after":"1c8a5a2cfc657163b68e80c65165acc6c8dbca0d","ref":"refs/heads/2024-03-12-issue-3646-cpuid-rbx-clobbering","pushedAt":"2024-03-12T19:58:23.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"[CI] Run tests with CMake on Windows\n\nBuild and run tests on Windows with CMake","shortMessageHtmlLink":"[CI] Run tests with CMake on Windows"}},{"before":"0b8b7ea6f350716993bfe1811c0d74f29cadc437","after":"876eec0af5fe6fe587a4d024e67c8890b22e8e58","ref":"refs/heads/2024-03-12-issue-3646-cpuid-rbx-clobbering","pushedAt":"2024-03-12T19:38:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"[CI] Run tests with CMake on Windows\n\nBuild and run tests on Windows with CMake","shortMessageHtmlLink":"[CI] Run tests with CMake on Windows"}},{"before":"b6c4f39a6a4952c7adf8cb92e7fbb9ce2ce12f2f","after":"0b8b7ea6f350716993bfe1811c0d74f29cadc437","ref":"refs/heads/2024-03-12-issue-3646-cpuid-rbx-clobbering","pushedAt":"2024-03-12T19:25:49.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"[cpu] Backport fix for rbx clobbering on Windows with Clang\n\nBackport folly fix for rbx clobbering: https://github.com/facebook/folly/commit/f22f88b8b9d70160388f0f149bc9abaeb82c250b\n\nThis supercedes PR #3646.","shortMessageHtmlLink":"[cpu] Backport fix for rbx clobbering on Windows with Clang"}},{"before":"7819ca40b8aea07e10b46c3cc45354a54856a27e","after":"b6c4f39a6a4952c7adf8cb92e7fbb9ce2ce12f2f","ref":"refs/heads/2024-03-12-issue-3646-cpuid-rbx-clobbering","pushedAt":"2024-03-12T19:23:10.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"[cpu] Backport fix for rbx clobbering on Windows with Clang\n\nBackport folly fix for rbx clobbering: https://github.com/facebook/folly/commit/f22f88b8b9d70160388f0f149bc9abaeb82c250b\n\nThis supercedes PR #3646.","shortMessageHtmlLink":"[cpu] Backport fix for rbx clobbering on Windows with Clang"}},{"before":null,"after":"7819ca40b8aea07e10b46c3cc45354a54856a27e","ref":"refs/heads/2024-03-12-issue-3646-cpuid-rbx-clobbering","pushedAt":"2024-03-12T19:18:47.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"[cpu] Backport fix for rbx clobbering on Windows with Clang\n\nBackport folly fix for rbx clobbering: https://github.com/facebook/folly/commit/f22f88b8b9d70160388f0f149bc9abaeb82c250b\n\nThis supercedes PR #3646.","shortMessageHtmlLink":"[cpu] Backport fix for rbx clobbering on Windows with Clang"}},{"before":"c7269add7eaf028ed828d9af41e732cf01993aad","after":"92fbd42894e4dd9d58d3184923b17dda94ca6b44","ref":"refs/heads/dev","pushedAt":"2024-03-12T19:11:33.000Z","pushType":"push","commitsCount":191,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"Export ZSTD_LEGACY_SUPPORT in tests/Makefile (#3955)\n\nThis doesn't affect most of the targets, but will help me sleep better at night knowing that future refactors won't break the legacy support.\r\n\r\nShould have been included in https://github.com/facebook/zstd/pull/3943 but I noticed after that merged, so putting up a separate PR.","shortMessageHtmlLink":"Export ZSTD_LEGACY_SUPPORT in tests/Makefile (facebook#3955)"}},{"before":"abc2deaf46af05cbffcd47a03790531e32b24c32","after":"85c9b2cdc21ef4fe20b336b097fdc8f64d800fa1","ref":"refs/heads/2023-11-21-issue-3830","pushedAt":"2023-11-21T21:24:00.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"Modernize macros to use `do { } while (0)`\n\nThis PR introduces no functional changes. It attempts to change all\nmacros currently using `{ }` or some variant of that to to\n`do { } while (0)`, and introduces trailing `;` where necessary.\nThere were no bugs found during this migration.\n\nThe bug in Visual Studios warning on this has been fixed since VS2015.\nAdditionally, we have several instances of `do { } while (0)` which have\nbeen present for several releases, so we don't have to worry about\nbreaking peoples builds.\n\nFixes Issue #3830.","shortMessageHtmlLink":"Modernize macros to use do { } while (0)"}},{"before":"c7269add7eaf028ed828d9af41e732cf01993aad","after":"abc2deaf46af05cbffcd47a03790531e32b24c32","ref":"refs/heads/2023-11-21-issue-3830","pushedAt":"2023-11-21T21:18:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"Modernize macros to use `do { } while (0)`\n\nThis PR introduces no functional changes. It attempts to change all\nmacros currently using `{ }` or some variant of that to to\n`do { } while (0)`, and introduces trailing `;` where necessary.\nThere were no bugs found during this migration.\n\nThe bug in Visual Studios warning on this has been fixed since VS2015.\nAdditionally, we have several instances of `do { } while (0)` which have\nbeen present for several releases, so we don't have to worry about\nbreaking peoples builds.\n\nFixes Issue #3830.","shortMessageHtmlLink":"Modernize macros to use do { } while (0)"}},{"before":null,"after":"c7269add7eaf028ed828d9af41e732cf01993aad","ref":"refs/heads/2023-11-21-issue-3830","pushedAt":"2023-11-21T21:14:17.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"[huf] Improve fast huffman decoding speed in linux kernel\n\ngcc in the linux kernel was not unrolling the inner loops of the Huffman\ndecoder, which was destroying decoding performance. The compiler was\ngenerating crazy code with all sorts of branches. I suspect because of\nSpectre mitigations, but I'm not certain. Once the loops were manually\nunrolled, performance was restored.\n\nAdditionally, when gcc couldn't prove that the variable left shift in\nthe 4X2 decode loop wasn't greater than 63, it inserted checks to verify\nit. To fix this, mask `entry.nbBits & 0x3F`, which allows gcc to eliete\nthis check. This is a no op, because `entry.nbBits` is guaranteed to be\nless than 64.\n\nLastly, introduce the `HUF_DISABLE_FAST_DECODE` macro to disable the\nfast C loops for Issue #3762. So if even after this change, there is a\nperformance regression, users can opt-out at compile time.","shortMessageHtmlLink":"[huf] Improve fast huffman decoding speed in linux kernel"}},{"before":"88204484a7f07781e7d2d04fb5658e7c15e3021d","after":"c7269add7eaf028ed828d9af41e732cf01993aad","ref":"refs/heads/dev","pushedAt":"2023-11-21T17:58:36.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"[huf] Improve fast huffman decoding speed in linux kernel\n\ngcc in the linux kernel was not unrolling the inner loops of the Huffman\ndecoder, which was destroying decoding performance. The compiler was\ngenerating crazy code with all sorts of branches. I suspect because of\nSpectre mitigations, but I'm not certain. Once the loops were manually\nunrolled, performance was restored.\n\nAdditionally, when gcc couldn't prove that the variable left shift in\nthe 4X2 decode loop wasn't greater than 63, it inserted checks to verify\nit. To fix this, mask `entry.nbBits & 0x3F`, which allows gcc to eliete\nthis check. This is a no op, because `entry.nbBits` is guaranteed to be\nless than 64.\n\nLastly, introduce the `HUF_DISABLE_FAST_DECODE` macro to disable the\nfast C loops for Issue #3762. So if even after this change, there is a\nperformance regression, users can opt-out at compile time.","shortMessageHtmlLink":"[huf] Improve fast huffman decoding speed in linux kernel"}},{"before":null,"after":"f45429b84a2400d259cb18c1983aa013be8878be","ref":"refs/heads/2023-11-21-do-while","pushedAt":"2023-11-21T17:58:06.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"[nocommit] Use do-while loop in macros","shortMessageHtmlLink":"[nocommit] Use do-while loop in macros"}},{"before":null,"after":"a7231038fe1ad4b5749869c9851d9c16ca132111","ref":"refs/heads/2023-11-21-vaargs-empty","pushedAt":"2023-11-21T17:56:24.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"terrelln","name":"Nick Terrell","path":"/terrelln","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6619134?s=80&v=4"},"commit":{"message":"[nocommit] Test empty __VA_ARGS__ in CI","shortMessageHtmlLink":"[nocommit] Test empty __VA_ARGS__ in CI"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wMy0yNlQxNzowNToyOC4wMDAwMDBazwAAAAQf4kzd","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wMy0yNlQxNzowNToyOC4wMDAwMDBazwAAAAQf4kzd","endCursor":"Y3Vyc29yOnYyOpK7MjAyMy0xMS0yMVQxNzo1NjoyNC4wMDAwMDBazwAAAAO0hcfk"}},"title":"Activity ยท terrelln/zstd"}