summaryrefslogtreecommitdiffstats
path: root/Modules/_zstd/_zstdmodule.c
Commit message (Collapse)AuthorAgeFilesLines
* [3.14] gh-134938: Add set_pledged_input_size() to ZstdCompressor (GH-135010) ↵Miss Islington (bot)2025-06-051-0/+3
| | | | | | | (GH-135173) (cherry picked from commit 4b44b3409ac026e7f13054a3daa18ab7ee14d85c) Co-authored-by: Emma Smith <emma@emmatyping.dev>
* [3.14] gh-132983: Minor fixes and clean up for the _zstd module (GH-134930) ↵Miss Islington (bot)2025-06-011-27/+60
| | | | | | | (GH-134998) (cherry picked from commit b5952371668089299bc8472c1adb9f8a0e69b4a2) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
* [3.14] gh-134885: zstd: Use Py_XSETREF (GH-134886) (GH-134922)Miss Islington (bot)2025-05-301-7/+4
| | | | | (cherry picked from commit 45c6c48afc13f9897010e32171a3e02d0624258c) Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
* [3.14] gh-132983: Split ``_zstd_set_c_parameters`` (GH-133921) (#134838)Miss Islington (bot)2025-05-281-16/+9
| | | | | | gh-132983: Split ``_zstd_set_c_parameters`` (GH-133921) (cherry picked from commit 11f7a939debd7731d1cb79ed84a473fa87c279c8) Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
* [3.14] gh-132983: Make _zstd C code PEP 7 compliant (GH-134605) (#134609)Miss Islington (bot)2025-05-241-57/+61
| | | | | | | | gh-132983: Make _zstd C code PEP 7 compliant (GH-134605) Make _zstd C code PEP 7 compliant (cherry picked from commit 973b8f69d31b4d86c37e0b7194a209f4f2efff06) Co-authored-by: Emma Smith <emma@emmatyping.dev>
* [3.14] gh-132983: Fix refleak in zstd dictionary functions (gh-134463)Miss Islington (bot)2025-05-211-2/+2
| | | | | (cherry picked from commit fb68776591485, AKA gh-134459) Co-authored-by: Emma Smith <emma@emmatyping.dev>
* [3.14] gh-132983: Refactor shared code in train_dict and finalize_dict ↵Miss Islington (bot)2025-05-211-68/+55
| | | | | | | | | | (GH-134432) (#134442) gh-132983: Refactor shared code in train_dict and finalize_dict (GH-134432) Refactor shared code in train_dict and finalize_dict (cherry picked from commit c64a21454b3c139af9e88941a286885fc4828a7e) Co-authored-by: Emma Smith <emma@emmatyping.dev>
* [3.14] gh-132983: Convert zstd ``__new__`` methods to Argument Clinic ↵Miss Islington (bot)2025-05-201-35/+30
| | | | | (GH-133860) (#133915) Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
* [3.14] gh-132983: Make zstd types immutable (GH-133784) (#133857)Miss Islington (bot)2025-05-101-0/+3
| | | | | | gh-132983: Make zstd types immutable (GH-133784) (cherry picked from commit 1a87b6e9ae6da255f30465ed59a78913ebf2e898) Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
* [3.14] gh-132983: Reduce the size of ``_zstdmodule.h`` (GH-133793) (#133854)Miss Islington (bot)2025-05-101-1/+7
| | | | | | gh-132983: Reduce the size of ``_zstdmodule.h`` (GH-133793) (cherry picked from commit 1a548c0a50641aa3358966e0949d29bcfa9dd480) Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
* [3.14] GH-132983: PEP 7 and Argument Clinic changes for zstd (GH-133791) ↵Miss Islington (bot)2025-05-101-35/+32
| | | | | | | | (#133792) GH-132983: PEP 7 and Argument Clinic changes for zstd (GH-133791) (cherry picked from commit 1978904a2fc6705303486f35336054d455b5018a) Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
* [3.14] GH-132983: remove empty_bytes from _zstd module state (GH-133785) ↵Miss Islington (bot)2025-05-091-9/+0
| | | | | | | | (#133788) GH-132983: remove empty_bytes from _zstd module state (GH-133785) (cherry picked from commit 98e2c3af4794d6c6ebe47b20badbd31c542d944e) Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
* [3.14] gh-132983: Simplify ``_zstd_exec()`` (GH-133775) (#133786)Miss Islington (bot)2025-05-091-146/+63
| | | | | | gh-132983: Simplify ``_zstd_exec()`` (GH-133775) (cherry picked from commit bbe9c31edc4fc3e1cdc908e9a06593c394f4bfdb) Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
* [3.14] gh-132983: Clean-ups for ``_zstd`` (GH-133670) (#133756)Miss Islington (bot)2025-05-091-133/+61
| | | | | | gh-132983: Clean-ups for ``_zstd`` (GH-133670) (cherry picked from commit c2a5d4b3839577342dc8e5b1a849f0c23dc55bb2) Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
* [3.14] gh-103092: Support subinterpreters in ``_zstd`` (GH-133674) (#133695)Miss Islington (bot)2025-05-081-3/+3
| | | | | | gh-103092: Support subinterpreters in ``_zstd`` (GH-133674) (cherry picked from commit 6f6f48d28963f54c4b2b42d526e2e3045eb1fc1e) Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
* gh-132983: Add the `compression.zstd` pacakge and tests (#133365)Emma Smith2025-05-061-49/+48
| | | | | | | Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com> Co-authored-by: Gregory P. Smith <greg@krypto.org> Co-authored-by: Tomas R. <tomas.roun8@gmail.com> Co-authored-by: Rogdham <contact@rogdham.net>
* gh-132983: Introduce `_zstd` bindings module (GH-133027)Emma Smith2025-05-041-0/+914
* Add _zstd module for https://peps.python.org/pep-0784/ This commit introduces the `_zstd` module, with bindings to libzstd from the pyzstd project. It also includes the unix build system configuration. Windows build system support will be integrated independently as it depends on integration with cpython-source-deps. * Add _zstd to modules * Fix path for compression.zstd module * Ignore _zstd module like _io * Expand module state macros to improve code quality Also removes module state references from the classes in the _zstd module and instead uses PyType_GetModuleState() * Remove backticks suggested in review Co-authored-by: Stan Ulbrych <89152624+StanFromIreland@users.noreply.github.com> * Use critical sections to lock object state This should avoid races and deadlocks. * Remove compress/decompress and mark module as not reliant on the GIL The `compress`/`decompress` functions will be moved to Python code for simplicity. C implementations can always be re-added in the future. Also, mark _zstd as not requiring the GIL. * Lift critical section to avoid clang warning * Respond to comments by picnixz * Call out pyzstd explicitly in license description Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com> * Use a much more robust implementation... ... for `get_zstd_state_from_type` Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com> * Use PyList_GetItemRef for thread safety purposes * Use a macro for the minimum supported version * remove const from primivite types * Use PyMem_New in another spot * Simplify error handling in _get_frame_size * Another simplification of error handling in get_frame_info * Rename _module_state to mod_state * Rewrite comment explaining the context of the code * Add link to pyzstd * Add TODO about refactoring dict training code * Use PyModule_AddObjectRef over PyModule_AddObject PyModule_AddObject is soft-deprecated, so we should use PyModule_AddObjectRef * Check result of OutputBufferGrow * Simplify return logic in `add_constant_to_type` Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com> * Ignore return value of _zstd_clear() Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com> * Remove redundant comments * Remove __reduce__ from ZstdDict We should instead document that to pickle a dictionary a user should use the `.dict_content` attribute. * Use PyUnicode_FromFormat instead of a buffer * Don't use C constants/types in error messages * Make error messages easier to understand for Python users * Lower minimum required version 1.4.0 * Use casts and make slot function signatures correct * Be consistent with CPython on const usage * Make else clauses in line with PEP 7 * Fix over-indented blocks in argument clinic * Add critical section around ZSTD_DCtx_setParameter * Add a TODO about refactoring critical sections * Use Py_UNREACHABLE * Move bytes operations out of Py_BEGIN_ALLOW_THREADS * Add TODO about ensuring a lock is held * Remove asserts that may not be correct * Add TODO to make ZstdDict and others GC objects * Make objects GC tracked * Remove unused include * Fix some memory issues * Fix refleaks on module and in ZstdDict * Update configure to check for ZDICT_finalizeDictionary * Properly check version in configure * exit(1) if check fails * Use AC_RUN_IFELSE * Use a define() to re-use version check * Actually properly set _zstd module status based on version --------- Co-authored-by: Stan Ulbrych <89152624+StanFromIreland@users.noreply.github.com> Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com> Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>