[libc++][pstl] Implementation of parallel std::is_heap_until() based on __parallel_find() (#218603)
This PR adds an implementation of a parallel `std::is_heap_until()`
based on `__parallel_find()`.
The implementation chops the input range `[first+1, last)` into
partitions and processes them in parallel.
For each partition, it derives the first and the last parents of these
children, and iterates over the parents checking their children for heap
violations.
Basically, it's very close to the implementation of the serial version,
but with a different prologue and epilogue.
Part of #99938.
---------
Co-authored-by: Louis Dionne <ldionne.2 at gmail.com>
py-anyio: updated to 4.15.0
4.15.0
- Added support for the newer keyword-only arguments on ``anyio.Path`` methods to match
the standard library ``pathlib.Path``:
* ``follow_symlinks`` on ``exists()`` (Python 3.12+)
* ``follow_symlinks`` on ``is_dir()`` (Python 3.13+)
* ``follow_symlinks`` on ``is_file()`` (Python 3.13+)
* ``follow_symlinks`` on ``owner()`` (Python 3.13+)
* ``follow_symlinks`` on ``group()`` (Python 3.13+)
* ``newline`` on ``read_text()`` (Python 3.13+)
- Added ``amap``, ``gather``, and ``as_completed`` utility functions to simplify common
patterns
- Added ``--anyio-mode`` command-line option as an alternative to the ``anyio_mode``
ini setting, and fix the pytest plugin's auto mode detection to recognize the mode
when set via either mechanism(e.g: ``pytest_asyncio``).
[73 lines not shown]
py-joblib: updated to 1.6.0
1.6.0
Fix caching of functions whose source cannot be retrieved, such as functions defined in a notebook cell. Their identity fell back to str(hash(func.__code__)), which is salted by PYTHONHASHSEED and so differed between processes. A worker reading the func_code.py written by another one concluded that the function had changed and wiped the whole cache directory for it, discarding results computed by its peers. func_code.py is also no longer rewritten in place, so a reader can no longer catch it half-written and draw the same conclusion.
Drop python 3.9 support. The oldest supported Python version is now Python 3.10.
Fix eval_expr (used to evaluate the pre_dispatch argument of Parallel) to raise a ValueError as documented instead of leaking a ZeroDivisionError for expressions that divide or take a modulo by zero.
MemorizedResult now forwards mmap_mode to its store backend, so a cached array reconstructed from a location is memory-mapped as requested instead of being loaded fully into memory.
Unvendor cloudpickle to more quickly benefit from maintenance releases of cloudpickle
Fix Memory.cache for functions with a keyword-only argument that has a default declared before a keyword-only argument without a default.
Fix behavior of filter_args on some precise cases.
Fix a concurrency error that could happen with unordered generator.
Fix: dump() now accepts any input os.PathLike object to be consistent with load.
The documentation now uses pydata sphinx theme. Furthermore, optional dependencies test and docs have been added to pyproject.toml.
Vendor loky 3.6.0
arm64 pmap: correct the condition for flushing the icache
Whenever we create a user-space mapping, we always set ATTR_S1_PXN in
the PTE, which blocks execution of user-space code while running in
kernel mode. However, when seeking to determine whether we need to
perform an icache flush before installing the new PTE, we test whether
sometimes the old PTE or other times the new PTE has ATTR_S1_XN set.
The trouble is that ATTR_S1_XN is defined as the bitwise OR of
ATTR_S1_PXN and ATTR_S1_UXN, and so the test for whether ATTR_S1_XN is
set is satisfied if either of its constituent bits is set, i.e., we
write (l3e & ATTR_S1_XN) != 0. Consequently, the test is always true.
In practice, I believe that the ill effects of this bug are limited:
In pmap_enter(), in rare circumstances, e.g., wiring a code page, an
unnecessary icache flush will be performed. In pmap_enter_l2() and
pmap_enter_l3c(), no icache flush will be performed. However,
typically an icache flush would have already been performed on each of
the constituent base pages.
[3 lines not shown]
py-vdirsyncer: updated to 0.21.0
0.21.0
- Implement retrying for ``google`` storage type when a rate limit is reached.
- ``tenacity`` is now a required dependency.
- Drop support for Python 3.8.
- Retry transient network errors for nullipotent requests.
- Add support for Python 3.14.
py-setuptools_scm: updated to 10.2.3
10.2.3 (2026-09-03)
Miscellaneous
- Do not run the xmlsec download regression test on Python 3.8, where no lxml wheel exists and `--no-build-isolation` leaves pip without a build toolchain for the lxml sdist.
py-vcs-versioning: updated to 2.3.4
2.3.4 (2026-09-03)
Fixed
- Ensure the vcs-versioning testsuite passes without setuptools-scm installed; the egg-info vs PKG-INFO discovery priority test moved to the setuptools-scm testsuite, which owns the egg-info entry point it needs.
2.3.3 (2026-09-03)
Fixed
- The `semver-pep440` and `semver-pep440-release-branch` version schemes now keep the PEP 440 epoch of the tag they are derived from, instead of emitting a version that sorts below it.
py-cachelib: updated to 0.17.0
0.17.0
- Timeout now also accepts a ``datetime.timedelta`` in addition to int. :pr:`510`
- Float timeouts are deprecated and now rounded up to whole seconds, so
backends with integer-second APIs (e.g. memcached) no longer fail with
a confusing ``TypeError``. Passing a float will raise a ``TypeError``
in a future release; timeouts of any other unsupported type raise
``TypeError`` immediately. :pr:`510`
- Add ``memcache_client_lib`` parameter to ``MemcachedCache`` to select which
memcache client library to use (``pylibmc``, ``google``, ``memcache``, or
``libmc``). When not set, the library is auto-detected as before. :pr:`511`
[Flang] Skip SimplifyIntrinsics for unsigned reductions (#220850)
SimplifyIntrinsics assumes that the reduction argument element type
matches the runtime call result type.
For UNSIGNED reductions, this is not true. For example, MAXVAL on an
UNSIGNED(4) array is lowered with an array element type of ui32, while
the runtime call returns i32 and is converted back to ui32 afterward.
This causes an assertions-enabled build to fail at -O1 and above with:
```
Assertion `*argType == resultType &&
"Argument/result types mismatch in reduction"' failed.
```
The existing simplified integer reduction path is also not safe for
unsigned values. In particular, MAXVAL currently uses a signed minimum
value as the reduction identity and `arith::MaxSIOp` for the comparison.
[9 lines not shown]
[ADT] Use isComparableWith in SmallPtrSet (#221020)
This patch updates operator== in SmallPtrSet to use
DebugEpochBase::HandleBase::isComparableWith, bringing it in line with
DenseMap, FoldingSet, and StringMap.
Assisted-by: Antigravity
pax: Ensure when removing ".." path components extra slashes are also
removed.
A specially constructed archive could trick pax into extracting outside
of the working directory. This also fixes a string ending in a compoment
of exactly ".." reading one past the NUL.
ok millert@
Make Younan Zhang happy and enhance deduction guide for type aliases to support template template parameters and reorder synthesized parameters accordingly