py-regex: updated to 2026.7.19
2026.7.19
Git issue 607: SIGSEGV: NULL pointer dereference in `basic_match()` when `(?R)`/`(?0)` recursion is used inside a fuzzy-matching quantifier
Git issue 608: SIGSEGV: out-of-bounds read in `bytes1_char_at()` with `DOTALL` + a fuzzy constraint + `(?r)` reverse-direction matching
py-setuptools_scm: updated to 10.2.1
10.2.1 (2026-07-21)
Fixed
- Omit ``scm_version.json`` and ``scm_file_list.json`` from wheel ``.dist-info``
while still including them in sdists for fallback discovery.
postgresql-timescaledb: updated to 2.28.3
2.28.3
Bugfixes
* Wrong result when evaluating a function returning NULL in the columnar query execution pipeline
* Fix incorrect usage of sort transformation for sort key expressions with negative constants
* Allow enabling and disabling triggers on hypertables with columnstore enabled
* Fix columnstore sort pushdown to check for different query sort key collation
* Fix potentially wrong results for stddev(float4) and stddev(float8) when used with avg() in the columnar query execution pipeline
* Fix race condition when enabling compression on a hypertable
* Batch filtering for compressed DML should respect collation
* Direct delete failed to handle array predicates with NULL values and deleted more rows than intended
* Reuse existing dimension_slice IDs when possible
* Truncate constraint name before trying to rename
[AArch64][GlobalISel] Select vector element extract into GPR (#210030)
Prototyping a new minimal type-based approach to RegBankSelect (#199040)
for compile-time purposes exposed various gaps in instruction selection
when not using the existing RegBankSelect pass. These manifested as new
fallbacks when compiling the IR dataset from [1].
This patch teaches instruction selection to handle extracts of scalar
i8/i16/i32 into GPR directly. This will prevent new fallbacks being
introduced when a new type-based RBS pass is added.
The test cases are extracted from [1].
Assisted-by: codex
[1] https://davemgreen.github.io/gisel.html
[LoopInterchange] Prevent the transformation stage from stopping partway (#205564)
As mentioned in #205562, there are cases where the transformation stage
in LoopInterchange stops partway through, and the output IR ends up
partially modified rather than interchanged. Notably, the interchange is
recognized as having succeeded internally even in such cases. Apparently
this happens not to cause any miscompiles at the moment, but it is
clearly dangerous.
This patch removes the early exit in the transformation phase. We cannot
simply remove it, which checks for the presence of a unique successor of
the inner loop header, because there is a case where the header actually
has multiple successors. To avoid that situation, this patch changes the
code to call SplitBlock on the inner loop header unconditionally.
The test changes fall into two categories: some are simply due to newly
added redundant BBs. In the others, the expected interchanges are now
applied as intended, whereas previously the transformation failed and
the interchanges were not applied before this patch.
[InstCombine] Optimize GEP comparisons with constant offsets (#208547)
https://alive2.llvm.org/ce/z/dCmoVn
In a GEP comparison with the same base like
%1 = gep i8, @base, i64 a
%2 = gep i8, @base, i64 b
%cmp = icmp ... %1, %2
When we know that the offsets cross the base's alignment boundary the
same
number of times, it means that either both of them will overflow, or
none of
them will. In these cases we can turn the comparison into offset
comparison:
%cmp = icmp ... a, b
[flang][PFT-to-MLIR] allocate missing body blocks in `createEmptyRegionBlocks` (#210950)
Problem
-------
Under -mmlir --wrap-unstructured-constructs-in-execute-region, branch
lowering hit a null Evaluation::block for body statements inside an
OpenMP loop. genMultiwayBranch tripped
Bridge.cpp: Assertion `block && "missing multiway branch block"' failed
and genFIR(SelectCaseStmt) tripped
Bridge.cpp: Assertion `e->block && "missing CaseStmt block"' failed
The wrap machinery decides an unstructured DO/IF is wrappable and stops
propagating its isUnstructured flag to the enclosing OpenMPConstruct.
The OMP construct's isUnstructured stays false, so the top-level
createEmptyBlocks treats it as a structured directive with nested
evaluations — it allocates only the OMP construct's first-nested block
[17 lines not shown]
[AMDGPU] Do not copy noundef onto a widened kernarg load (#211181)
Sub-dword args are widened to an i32 load whose extra bits belong to a
sibling kernarg or padding, so noundef on the original arg does not
cover the full loaded value
Only copy it when the load type matches the argument type, mirroring the
existing range/nofpclass guards
[InstCombine] foldVectorBinop - don't fold length changing shuffles across binops (#211115)
As discussed on #210948 - the "Op(shuffle(V1, Mask), shuffle(V2, Mask))
-> shuffle(Op(V1, V2), Mask)" fold should only occur in InstCombine if
the shuffle is "like for like" and not length changing.
Leave the more general fold to an upcoming VectorCombine patch which can
handle the cost:benefit analysis, including multiuse shuffles.
[AMDGPU] Builtins and intrinsics for v_cvt_scalef32_pk32_(fp|bf)6_f32 (#210713)
- builtins with documentation
- instructions
- new subtarget feature only for gfx13
- GlobalISel RegBankLegalize rules
- tests
bash-completion: updated to 2.18.0
2.18.0
This release comes with notable changes to the directories used for
looking up and sourcing completion recipes and helpers, allowing for
more flexibility and customization and fewer conflicts between things
shipping with bash-completion and third party/upstream/origin packages.
Files that come with bash-completion itself are located in directories
reserved for that use, their names ending with `-core` and
`-fallback`. Packages should continue install their files in the same
`completions` and `helpers` dirs like before; these directories
precede the bash-completion "core" ones in lookup order.
A new concept of `startup` dirs has been introduced. Files from these
directories are sourced eagerly on bash-completion startup. This
replaces and allows for more flexibility than using the deprecated
`/etc/bash_completion.d` directory for this purpose.
interfaces: resolve VLAN devices indirectly via interfaces_configure()
This also adds device creation for parents so that we ca naturally
resolve QinQ and VLANs on bridges.
[Support] parallelFor: enable caller participation
`parallelFor` dispatches its work to the thread pool and blocks the calling
thread in the `TaskGroup` destructor until the workers finish. The caller
thus stays idle instead of joining the work as modern parallel libraries do,
and `numactl -C 0-7 ld.lld --threads=8` ends up slower than
`numactl -C 0-8 ld.lld --threads=8`.
Run one worker on the calling thread instead. This requires that no
`parallelFor` body reads `getThreadIndex()`, which is unset on the caller;
the last such user is removed by #209687.
In the jobserver mode: only pool workers acquire job slots, so a
jobserver-limited process may briefly exceed its granted concurrency by
one thread. This is acceptable, better than pessimizing the common
non-jobserver case, and parallelFor is unused by jobserver users.
Pull Request: https://github.com/llvm/llvm-project/pull/209690
PerThreadBumpPtrAllocator: remove dependency on getThreadIndex (#209687)
PerThreadAllocator, only used by DWARFLinker, indexes a fixed
getThreadCount()-sized array by `getThreadIndex()`, so it only works on
ThreadPoolExecutor threads (and asserts elsewhere). It false-shares
adjacent threads' bump pointers.
Instead, create each thread's sub-allocator lazily on first use, keyed
by a process-unique instance id in a thread-local cache, with the
instance owning the heap-allocated sub-allocators. This drops the
getThreadIndex()/getThreadCount() dependence, unblocking the caller
participation change for `parallelFor`.
mlir::ThreadLocalCache solves the same problem by keying a per-thread
map on the instance pointer and reclaiming a thread's slot when an instance
dies, but costs a map lookup and shared_ptr bookkeeping per allocation; instances
here are few and short-lived, so an id-indexed vector is cheaper. The counter
behind claimPerThreadAllocatorId is defined out of line in Allocator.cpp
so Windows DLLs cannot duplicate it and alias two instances' sub-allocators.
Aided by Claude Fable 5