1. Oct 25, 2023
  2. Oct 24, 2023
  3. Oct 22, 2023
  4. Oct 20, 2023
  5. Oct 18, 2023
  6. Oct 16, 2023
    • Pablo Speciale's avatar
      Update pytest to version 7.2.0 (which removes their dependency on py) (#4880) · 0cbd92ba
      Pablo Speciale authored
      * Update pytest (which removes their dependency on py)
      
      The py library through 1.11.0 for Python allows remote attackers to conduct a ReDoS (Regular expression Denial of Service) attack via a Subversion repository with crafted info data, because the InfoSvnCommand argument is mishandled.
      
      The particular codepath in question is the regular expression at py._path.svnurl.InfoSvnCommand.lspattern and is only relevant when dealing with subversion (svn) projects. Notably the codepath is not used in the popular pytest project. The developers of the pytest package have released version 7.2.0 which removes their dependency on py. Users of pytest seeing alerts relating to this advisory may update to version 7.2.0 of pytest to resolve this issue. See https://github.com/pytest-dev/py/issues/287#issuecomment-1290407715 for additional context.
      
      * Added conditions so that we keep using 7.0.0 on python 3.6
      0cbd92ba
  7. Oct 12, 2023
    • Ralf W. Grosse-Kunstleve's avatar
      Add pybind11/gil_safe_call_once.h (to fix deadlocks in pybind11/numpy.h) (#4877) · 0e2c3e5d
      Ralf W. Grosse-Kunstleve authored
      * LazyInitializeAtLeastOnceDestroyNever v1
      
      * Go back to using `union` as originally suggested by jbms@. The trick (also suggested by jbms@) is to add empty ctor + dtor.
      
      * Revert "Go back to using `union` as originally suggested by jbms@. The trick (also suggested by jbms@) is to add empty ctor + dtor."
      
      This reverts commit e7b8c4f0fcd72191e88d1c17abf5da08fe3a9c6f.
      
      * Remove `#include <stdalign.h>`
      
      * `include\pybind11/numpy.h(24,10): fatal error C1083: Cannot open include file: 'stdalign.h': No such file or directory`
      
      * @tkoeppe wrote: this is a C interop header (and we're not writing C)
      
      * Suppress gcc 4.8.5 (CentOS 7) warning.
      
      ```
      include/pybind11/eigen/../numpy.h:63:53: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
               return *reinterpret_cast<T *>(value_storage_);
                                                           ^
      ```
      
      * Replace comments:
      
      Document PRECONDITION.
      
      Adopt comment suggested by @tkoeppe: https://github.com/pybind/pybind11/pull/4877#discussion_r1350356093
      
      * Adopt suggestion by @tkoeppe:
      
      * https://github.com/pybind/pybind11/pull/4877#issuecomment-1752969127
      
      * https://godbolt.org/z/Wa79nKz6e
      
      * Add `PYBIND11_CONSTINIT`, but it does not work for the current use cases:
      
      ```
      g++ -o pybind11/tests/test_numpy_array.os -c -std=c++20 -fPIC -fvisibility=hidden -O0 -g -Wall -Wextra -Wconversion -Wcast-qual -Wdeprecated -Wundef -Wnon-virtual-dtor -Wunused-result -Werror -isystem /usr/include/python3.11 -isystem /usr/include/eigen3 -DPYBIND11_STRICT_ASSERTS_CLASS_HOLDER_VS_TYPE_CASTER_MIX -DPYBIND11_ENABLE_TYPE_CASTER_ODR_GUARD_IF_AVAILABLE -DPYBIND11_TEST_BOOST -Ipybind11/include -I/usr/local/google/home/rwgk/forked/pybind11/include -I/usr/local/google/home/rwgk/clone/pybind11/include /usr/local/google/home/rwgk/forked/pybind11/tests/test_numpy_array.cpp
      ```
      
      ```
      In file included from /usr/local/google/home/rwgk/forked/pybind11/tests/test_numpy_array.cpp:10:
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/numpy.h: In static member function ‘static pybind11::detail::npy_api& pybind11::detail::npy_api::get()’:
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/numpy.h:258:82: error: ‘constinit’ variable ‘api_init’ does not have a constant initializer
        258 |         PYBIND11_CONSTINIT static LazyInitializeAtLeastOnceDestroyNever<npy_api> api_init;
            |                                                                                  ^~~~~~~~
      ```
      
      ```
      In file included from /usr/local/google/home/rwgk/forked/pybind11/tests/test_numpy_array.cpp:10:
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/numpy.h: In static member function ‘static pybind11::object& pybind11::dtype::_dtype_from_pep3118()’:
      /usr/local/google/home/rwgk/forked/pybind11/include/pybind11/numpy.h:697:13: error: ‘constinit’ variable ‘imported_obj’ does not have a constant initializer
        697 |             imported_obj;
            |             ^~~~~~~~~~~~
      ```
      
      * Revert "Add `PYBIND11_CONSTINIT`, but it does not work for the current use cases:"
      
      This reverts commit f07b28bda9f91fb723aa898a21c81b6dd6857072.
      
      * Reapply "Add `PYBIND11_CONSTINIT`, but it does not work for the current use cases:"
      
      This reverts commit 36be645758aa82b576d24003808386bec6e55bf9.
      
      * Add Default Member Initializer on `value_storage_` as suggested by @tkoeppe:
      
      https://github.com/pybind/pybind11/pull/4877#issuecomment-1753201342
      
      This fixes the errors reported under commit f07b28bda9f91fb723aa898a21c81b6dd6857072.
      
      * Fix copy-paste-missed-a-change mishap in commit 88cec1152ab5576db19bab95c484672f06f5989a.
      
      * Semi-paranoid placement new (based on https://github.com/pybind/pybind11/pull/4877#discussion_r1350573114).
      
      * Move PYBIND11_CONSTINIT to detail/common.h
      
      * Move code to the right places, rename new class and some variables.
      
      * Fix oversight: update tests/extra_python_package/test_files.py
      
      * Get the name right first.
      
      * Use `std::call_once`, `std::atomic`, following a pattern developed by @tkoeppe
      
      * Make the API more self-documenting (and possibly more easily reusable).
      
      * google-clang-tidy IWYU fixes
      
      * Rewrite comment as suggested by @tkoeppe
      
      * Update test_exceptions.cpp and exceptions.rst
      
      * Fix oversight in previous commit: add `PYBIND11_CONSTINIT`
      
      * Make `get_stored()` non-const for simplicity.
      
      As suggested by @tkoeppe: not seeing any reasonable use in which `get_stored` has to be const.
      
      * Add comment regarding `KeyboardInterrupt` behavior, based heavily on information provided by @jbms.
      
      * Add `assert(PyGILState_Check())` in `gil_scoped_release` ctor (simple & non-simple implementation) as suggested by @EthanSteinberg.
      
      * Fix oversight in previous commit (missing include cassert).
      
      * Remove use of std::atomic, leaving comments with rationale, why it is not needed.
      
      * Rewrite comment re `std:optional` based on deeper reflection (aka 2nd thoughts).
      
      * Additional comment with the conclusion of a discussion under PR #4877.
      
      * https://github.com/pybind/pybind11/pull/4877#issuecomment-1757363179
      
      * Small comment changes suggested by @tkoeppe.
      0e2c3e5d
  8. Oct 06, 2023
  9. Oct 04, 2023
  10. Sep 28, 2023
  11. Sep 25, 2023
  12. Sep 16, 2023
  13. Sep 15, 2023
  14. Sep 13, 2023
  15. Sep 07, 2023
  16. Sep 06, 2023
  17. Sep 02, 2023
  18. Aug 31, 2023
  19. Aug 24, 2023
  20. Aug 15, 2023
  21. Aug 11, 2023
  22. Aug 08, 2023
  23. Aug 05, 2023
  24. Aug 04, 2023
  25. Jul 24, 2023
    • Ralf W. Grosse-Kunstleve's avatar
      Add command to check for vX.Y.Z tag vs pybind11/_version.py consistency. (#4757) · f3e06028
      Ralf W. Grosse-Kunstleve authored
      * Add command to check for vX.Y.Z tag vs pybind11/_version.py consistency. Piggy-backing hints for converting changelog to release message.
      
      * Simpler way of double-checking version number in sources vs. git tag
      
      * Even simpler.
      
      * Fix rst rendering (hopefully) and remove stray dots.
      
      * [ci skip] Trying more to make GitHub rst renderer show this nicely.
      
      * [ci skip] Fix up RST rendering issues.
      
      Lesson learned:
      
      This is NOT GOOD:
      
      ```
      - Bullet nesting level 1.
          - Bullet nesting level 2.
      ```
      
      This is BETTER:
      
      ```
      - Bullet nesting level 1.
        - Bullet nesting level 2.
      ```
      
      Also consistently adding empty lines between bullet points, to make the .rst
      file easier to read.
      
      Also piggy-backing a few very minor enhancements.
      f3e06028