[libc][cpp::string] Allocate fewer temp strings in operator= and +=
This PR generally updates `cpp::string` to avoid incidental allocations. Specifically, it:
- Updates `opreator=(string_view)` to avoid allocating a temporary string: https://github.com/llvm/llvm-project/blob/67ebc4b221c3e94028b33004cd5cd08deee95048/libc/src/__support/CPP/string.h#L106-L108
- Changes `operator+=(const string&)` to accept a `string_view` so that strings may be appended without allocation.
- Makes the `string(string_view)` constructor explicit. Before, there were non-obvious allocations because of the implicit conversion.
This PR assumes that self-assignment and self-appends are not supported with `cpp::string`, and adds debug asserts preventing them. Currently, assignment doesn't work. `cpp::string s = "abc"; s = s;` will just zero out the string. This PR is a slight regression in that `operator+=(const cpp::string&)` previously worked, but now it errors in debug mode, and would result in a use-after-free without the assert statement. I don't think self-append/self-assignment is something `cpp::string` needs to support, so I omitted it, but if a reviewer thinks this behavior is important happy to amend this PR.
pgpkeys: update the keys for core@
adrian@ omitted at the moment until he publishes a new key, soon.
Approved by: core
Reviewed by: adrian
Differential Revision: https://reviews.freebsd.org/D58430
[profcheck][coro] Adding Branch weights PGO in Coroutines Passes (#184466)
The CoroSplit and CoroFrame generate several control flow instructions
(`br`, `select`, `switch`) that previously lacked `!prof` branch weight
metadata.
When a coroutine is split, most basic blocks are simply cloned into the
generated functions (`.resume`, `.destroy`, and `.cleanup`) and don't
actually change their internal structure or layout. This PR changes:
1. Dispatch Branch Weights:
Since the original coroutine already ran through PGO, we already have
the `SuspendFreqs` records telling us exactly how many times each
suspension point was executed in the real world.
In the new clone `.resume` functions, the compiler generates new routing
`switch` instruction to direct the traffic. Instead of guessing the
probabilities for these new routes, we simply look back at the
`SuspendFreqs` records, calculate the exact execution frequency and
[55 lines not shown]
[clang][sema] Call expressions are constructed for undeduced deleted functions (#208488)
The deleted function path of overload resolution always constructed a CallExpr node
for the called function even if the function could not be deduced.
This case is handled in other paths by DiagnoseUseOfDecl which does perform that
test. The delete path cannot use that path though, as DiagnoseUseOfDecl rejects
deleted functions, and the entire point of this code is to permit the continued
evaluation of code even if the resolved function was deleted.
To fix this we now manually check for a complete type before continuing to construct
a potentially bogus CallExpr.
update recoil-rts to latest release 2026.06.12. From fabien@ - thanks!
Includes some other changes:
- disable the new use of mimalloc (and use otto malloc instead)
- fix a memory alignment bug related to upstream reliance on mimalloc;
planned to be upstreamed
- build type change from RELWITHDEBINFO to RELEASE
- binary size reduction due to this and removal of headers for bundled
static libs
Update to 0.67
Upstream changes:
Changes for version 0.67
Update to version 0.67 Sun Feb 1 16:44:47 2026 +0000 e21f44f1ff462094395fae116dbe0c214f993764
Remove Test::More and Test::Builder from MANIFEST Sun Feb 1 16:44:47 2026 +0000 dbe85692c99d8c2a3974311cbb6f4de8803d91dd
Merge pull request #15 from pmqs/dependabot/github_actions/actions/cache-5 Sun Feb 1 16:42:41 2026 +0000 6f754d3fb497df0592f00b1f0e3903477d90af86
Merge pull request #14 from pmqs/dependabot/github_actions/actions/checkout-6 Sun Feb 1 16:42:27 2026 +0000 e522422e73d8feff9c9903ebdbd596ac1362d5b5
Bump actions/cache from 3 to 5 Fri Jan 30 09:53:35 2026 +0000 d1dedee227e1cd7238e7b19472a8ae339b34d269
Bump actions/checkout from 1 to 6 Fri Jan 30 09:53:16 2026 +0000 af078f45874ed71f1d3a41b9042f9ccbcd170106
Configure Dependabot for GitHub Actions updates Fri Jan 30 09:52:25 2026 +0000 95a010bcbcafe71e7f85dfa713d3f8cb4e8b09f9
Add perl 5.42 to workflow files Thu Sep 4 17:35:52 2025 +0100 56b6000cbebc11d5a44617f35c2096a6628b200c
fix typo in META.json Mon Oct 14 16:24:03 2024 +0100 4ff765bc17937c097ed36c2a0a4b3401aaa0474e
[libc][cpp::string] Allocate fewer temp strings in operator= and +=
This PR generally updates `cpp::string` to avoid incidental allocations. Specifically, it:
- Updates `opreator=(string_view)` to avoid allocating a temporary string: https://github.com/llvm/llvm-project/blob/67ebc4b221c3e94028b33004cd5cd08deee95048/libc/src/__support/CPP/string.h#L106-L108
- Changes `operator+=(const string&)` to accept a `string_view` so that strings may be appended without allocation.
- Makes the `string(string_view)` constructor explicit. Before, there were non-obvious allocations because of the implicit conversion.
This PR assumes that self-assignment and self-appends are not supported with `cpp::string`, and adds debug asserts preventing them. Currently, assignment doesn't work. `cpp::string s = "abc"; s = s;` will just zero out the string. This PR is a slight regression in that `operator+=(const cpp::string&)` previously worked, but now it errors in debug mode, and would result in a use-after-free without the assert statement. I don't think self-append/self-assignment is something `cpp::string` needs to support, so I omitted it, but if a reviewer thinks this behavior is important happy to amend this PR.
Update to 1.42
Upstream changes:
1.42 2026-06-30 21:25:05Z
- fix test error with allow_non-ref and JSON::XS >= 4.0 when
Cpanel::JSON::XS is not installed (RT#127753)
1.41 2026-06-18 03:44:01Z
- fix test error with allow_non-ref and Cpanel::JSON::XS >= 4.42
(RT#179192)
1.40 2023-09-09 21:59:01Z
- fix issues on perl 5.39.1 with 'import' subs
- added support for JSON v3, v4, JSON::XS v4
Update to 4.43
Upstream changes:
4.43 2026-07-18 (rurban)
- Fix canonical sort: compare by UTF-16 code units per RFC 8785 (GH #248, leont)
- Fix canonical sort on Perl 5.8-5.18: utf16_cmp now always attempts
UTF-8 decoding instead of checking SvUTF8 flag, since older Perls
may store valid UTF-8 hash keys without the flag set.
- Fix quadmath encode dropping ".0" for large floats (GH #246, reported by Tux).
The .0 guard condition that suppressed appending for NV values > UV_MAX was
incorrect on high-precision FP (quadmath, 128-bit long double on arm64) where
%g uses fixed-point notation for values like 1.01e30. Guarded with #if NV_DIG < 31
to skip only on double/80-bit-ld where %g naturally uses %e for large values.
4.42 2026-06-27 (rurban)
- Ensure encode with a type spec hashref does not change the hashref argument (GH #240)
- Fix -e docs: "written" → "read" (GH #239, reported by Ron Savage).
- Fix Boolean eq overload matching undef (GH #207, reported by fd-t).
Cpanel::JSON::XS::Boolean overloaded eq would match undef as equal
to false because undef stringifies to "". Added defined() guard.
[67 lines not shown]
[mlir][VectorToLLVM] Fix comment still referring to undef instead of poison (NFC) (#211196)
When updating operators from undef (deprecated) to poison, the
associated comment wasn't updated accordingly. This PR fixes it.
[X86] Don't emit x87 register scrub when x87 is unavailable (#211146)
### Summary
`-fzero-call-used-regs=all` always emits the x87 `fldz`/`fstp` scrub
sequence, without checking whether x87 is enabled. In a function built
with `-mno-x87` or `-msoft-float`, this injects 16 `x87` instructions
into a translation unit that must not touch the FPU:
```asm
// test.c
int f(int x) { return x + 1; }
$ clang -O2 -S -mno-x87 -msoft-float -mno-sse \
-fzero-call-used-regs=all --target=x86_64-linux-gnu test.c -o -
f:
leal 1(%rdi), %eax
fldz
... # 8x fldz
[30 lines not shown]
Update to 5.009
Upstream changes:
5.009
* Only use Perl's C<$Config{ccflags}> when building bundled zstd on
AIX / IBM toolchains, or when C<SEREAL_ZSTD_USE_CONFIG_CCFLAGS> is
set. Other platforms now use the normal zstd build flags again.
5.008
* Decoder now supports C<thaw_allow_classes> and C<thaw_deny_action>
to control thaw callbacks during decoding. Thanks to James Rouzier
for the patches.
5.007
* Use $Config{ccflags} to compile ztd with. Should fix AIX.
Thanks to Thomas Seeling for the suggestion.
5.006
* Use miniz 3.1.1
* Avoid deprecated ZSTD api.
* Tidy and regen.
5.005
[5 lines not shown]
Update to 5.009
Upstream changes:
5.009
* Only use Perl's C<$Config{ccflags}> when building bundled zstd on
AIX / IBM toolchains, or when C<SEREAL_ZSTD_USE_CONFIG_CCFLAGS> is
set. Other platforms now use the normal zstd build flags again.
5.008
* Released to match Decoder version.
5.007
* Use $Config{ccflags} to compile ztd with. Should fix AIX.
Thanks to Thomas Seeling for the suggestion.
5.006
* Use miniz 3.1.1
* Avoid deprecated ZSTD api.
* Tidy and regen.
5.005
* Update spec to document changes from version 5
* Security fixes in decoder.
[3 lines not shown]
Update to 5.009
Upstream changes:
5.009
* Only use Perl's C<$Config{ccflags}> when building bundled zstd on
AIX / IBM toolchains, or when C<SEREAL_ZSTD_USE_CONFIG_CCFLAGS> is
set. Other platforms now use the normal zstd build flags again.
5.008
* Decoder now supports C<thaw_allow_classes> and C<thaw_deny_action>
to control thaw callbacks during decoding. Thanks to James Rouzier
for the patches.
5.007
* Use $Config{ccflags} to compile ztd with. Should fix AIX.
Thanks to Thomas Seeling for the suggestion.