[CIR] Implement Namespace/global TLS CIR CodeGen (#196332)
Unlike local TLS, global TLS functions need to be initialized upon their
first use in a thread.
First, all attempts to 'get' said TLS global are replaced with calls to
a 'wrapper' function, which calls an 'init' alias function, then returns
the global. While classic codegen manages to omit this in simple cases
sometimes, this CIR implementation doesn't attempt to do such constant
folding/inlining. The call to the 'init' is omitted if there is no
ctor/dtor setup required, so sometimes the wrapper is just a 'no-op'
(intentionally!).
There are also two types of 'global' TLS functions: unordered, and
ordered. Unordered are typically variable templates, and their 'init'
function initializes JUST them. The rest are ordered, which requires all
ordered initializations to happen as soon as any happen.
The Wrapper:
[25 lines not shown]
AMDGPU/GlobalISel: Switch to extended LLTs
Switch is required to be able to translate bfloat.
After the switch most of the codegen patterns now require explicit
type on register to match instead of LLT::scalar.
So we can still use LLT::scalar for type checks but new instructions
created during lowerings/combines need to use propper extended LLT.
inst select test sources fully switched to i32/f32 so patterns can match
for legalizer and regbanklegalize left as is (should probably be switched
as well)
New functionality worth noting is f16 and bitcast lowering to i32
f16 = g_bitcast i16
->
i32 = g_anyext i16
f16 = g_trunc i32
f16 = trunc i32 is legal
NAS-140959 / 27.0.0-BETA.1 / get rid of misleading bisect function (#18925)
Remove the misleadingly-named `bisect` helper from
`middlewared/utils/__init__.py`. Despite the name, it wasn't a bisection
it was a partition (split an iterable into two lists by predicate),
which collided with Python's stdlib `bisect` module that does binary
search on sorted sequences.
It had a single caller (`plugins/alert/alert.py`, two call sites).
Inlined as a small file-local `partition[T](...)` helper using PEP 695
generic syntax — no TypeVar boilerplate, no shared utility for one
consumer.
## Change
- `middlewared/utils/__init__.py`: dropped `bisect`, the `_V` TypeVar,
and the now-unused `Callable`/`Iterable`/`TypeVar` imports.
- `plugins/alert/alert.py`: added a local `partition` helper with
docstring; updated both call sites; added `Iterable` to the
`TYPE_CHECKING` block.
haproxy: updated to 3.3.9
3.3.9
- BUG/MINOR: sink: do not free existing sinks on allocation error
- BUG/MINOR: vars: make parse_store() return error on var_set() failure
- BUG/MINOR: vars: don't store the variable twice with set-var-fmt
- BUG/MINOR: vars: only print first invalid char in fill_desc()
- BUG/MINOR: hpack: validate idx > 0 in hpack_valid_idx()
- BUG/MEDIUM: cli: fix master CLI connection slot leak on client disconnect
- BUG/MINOR: acl: fix a possible arg corruption in smp_fetch_acl_parse()
- BUG/MINOR: map: do not leak a map descriptor on load error
- CLEANUP: map/cli: fix some map-related help messages
- BUG/MINOR: pattern: release the reference on failure to load from file
- CI: github: add DEBUG_STRICT=2 to ASAN jobs
- BUG/MEDIUM: mux-h2: fix the body_len to check when parsing request trailers
- BUG/MAJOR: mux-h2: preset MSGF_BODY_CL on H2_SF_DATA_CLEN in h2c_dec_hdrs()
- BUG/MINOR: dns: always validate the source address in responses
- BUG/MINOR: tcpcheck: Properly report error for http health-checks
- BUG/MINOR: resolvers: Free new requester on error when linking a resolution
[17 lines not shown]
ugrep: updated to 7.8.1
7.8.1
Fixed two issues:
fix 545 --disable-avx512 tested and working
fix 544 (same as 537) a bug in the ugrep v7.6 ~ v7.8 (since March 5, 2026) that can't handle very long lines in huge files properly, outputting uninitialized input file buffer contents as if part of the matching line or contents read after the input file buffer as if part of the matching line.
NAS-140958 / 27.0.0-BETA.1 / fix update crash (#18923)
We don't officially support jumping multiple major versions when doing
updates. We have always said that you need to go to the next major
version during upgrade process. However, internally, I was working on
something unrelated and tried to bump an internal system from a nightly
running 25.04 to latest 27 nightly. It failed in a rather peculiar way.
The long-story kept short is that it's failing on an import in
`utils/__init__.py` which is kind of gross. The very simple solution is
to remove the import which I've done in this PR. It's safe to remove
this import because we already set the default executor in`main.py`.
With the changes in this PR, I was able to upgrade the system without
issues.The crash looked something like this:
```
Status: Preparing GRUB configuration
[EFAULT] Error: Command ['chroot', '/tmp/tmp9p1rlsk3', '/usr/local/bin/truenas-grub.py'] failed with exit code -6: Fatal Python error: init_py_struct_prop_state: Hidden property in zfs_prop_table. [src/libzfs/py_zfs_prop.c:148]
Python runtime state: initialized
Current thread 0x00007f7328236100 (most recent call first):
[80 lines not shown]
[clang][bytecode] Fix a crash in Descriptor::getElemDataSize() (#196929)
`FIXED_SIZE_INT_TYPE_SWITCH` does not handle `PT_Bool`, handle it
explicitly before.
[clang][OpenMP 6.0][CodeGen] Codegen for declare_target 'local' clause (#196431)
Implement code generation for the OpenMP 6.0 declare_target 'local'
clause, which creates device-only variables with per-device static
storage.
A 'local' variable exists in the device image with its static
initializer and is always accessed directly by device code. This is the
same as 'to'/'enter' without unified shared memory, except that no
offload entry is registered.
Using 'device_type(nohost)' with 'local' is not yet supported. Sema
generates a warning and converts it to 'device_type(any)'.
Testing:
- Updated tests:
clang/test/OpenMP/declare_target_messages.cpp
clang/test/OpenMP/declare_target_ast_print.cpp
- New tests:
[2 lines not shown]
[gn] port 07b5dfe9473c6 + deps (LLVMABI dep in clang) (#196944)
Also adds build files for llvm/lib/ABI, which was dead code before
07b5dfe9473c6 (at least in the GN build).
[AMDGPU] Replace vdst_in opcode exclusion list with position check
Use getNamedOperandIdx to detect if vdst_in has already been added
by a prior converter, instead of maintaining a hardcoded opcode list.
Revert "security/openvpn: sync with upstream"
This reverts commit 79cc01b3d886ca3cac70328d887ca82058f64f1f.
Defer this to avoid premature noise on 26.1.8 since it will be
a long weekend for many.
taglib: updated to 2.3
TagLib 2.3 (May 10, 2026)
* MP4: Support for chapters (Nero and QuickTime).
* WAV: Support for BEXT and iXML chunks.
* FLAC: Support for BEXT and iXML application blocks.
* Opus: New audio property `outputGain()`.
* Speed up Matroska reading by using seek head for element lookup.
* Speed up Matroska writing by offering multiple write style modes.
* More tolerant handling of files with oversized RIFF chunks, zero size ID3v2
frames and Matroska chapters without edition.
* Avoid wrong content-based detection as MPEG files.
* Fix bitrate calculations for MPEG ADTS and MP4 ESDS.
* Fix data race with multi-threaded use of `MP4::ItemFactory`.
* Fix unbounded recursion in EBML/Matroska `MasterElement` and MP4 atoms.
* Limit number of MP4 atoms at top level.
* Fix writing too many offsets when updating MP4 stco/co64 atoms.
* Fix k bounds in Shorten Rice-Golomb coding.
[LV] Add test showing lack of gather/scatter can prevent if-convert
This introduces a new force-target-supports-gather-scatter-ops CLI
option for testing, as well a new isLegalMaskedLoadOrStore() helper.