FreeNAS/freenas 0984981 — src/middlewared/middlewared/alembic/versions/27.0 2026-11-03_14-00_webshare_mcp.py, src/middlewared/middlewared/api/v27_0_0 webshare.py

Add Webshare MCP option

## Context
Webshare ships an MCP server configured through the `mcp` block of the webshare-auth config, and there was no way to turn it on from middleware. This brings the MCP settings from master to 27.

## Solution
- **New settings**: `webshare.update` accepts `mcp_enabled`, `mcp_allowed_groups` and `mcp_allow_write`, which are rendered into the `mcp` block. `allowed_hosts` is left unset.
- **MCP groups must be login groups**: webshare only checks login groups at OAuth consent, while token refresh and session spawn check only the MCP groups, so every MCP group must be `truenas_webshare` or an entry of `groups`. Otherwise MCP access could outlive Webshare access. Enabling MCP without a group is rejected, since webshare denies everyone on an empty list.
- **Canonical group names**: MCP groups are resolved through NSS, compared by gid and stored under their canonical name, so a directory service group typed differently from its NSS name still matches its login group entry.
- **Migration**: the new columns are added by a migration that skips itself when they already exist, so the same file can be carried to master alongside its existing revision.
- Validation now collects every error before raising, and the `truenas_webshare` group name lives in a single constant.
DeltaFile
+83-27src/middlewared/middlewared/plugins/webshare/config.py
+69-0tests/api2/test_webshare_mcp.py
+32-0src/middlewared/middlewared/alembic/versions/27.0/2026-11-03_14-00_webshare_mcp.py
+19-0src/middlewared/middlewared/api/v27_0_0/webshare.py
+7-2src/middlewared/middlewared/etc_files/webshare-auth/config.json.py
+4-4tests/api2/test_webshare_search.py
+214-332 files not shown
+218-358 files

FreeNAS/freenas 308bd87 — tests/unit test_directoryservices_idmap_cache.py

Format new directory services idmap cache unit test with ruff
DeltaFile
+111-94tests/unit/test_directoryservices_idmap_cache.py
+111-941 files

LLVM/project 2d1b755 — llvm/include/llvm/Transforms/Vectorize LoopVectorizationLegality.h, llvm/lib/Transforms/Vectorize VPlanUtils.h VPlanAnalysis.h

[LV] Strip unused forward declarations (NFC) (#238313)

Assisted-by: llm
DeltaFile
+0-3llvm/lib/Transforms/Vectorize/VPlanHelpers.h
+0-3llvm/lib/Transforms/Vectorize/VPlan.h
+0-2llvm/lib/Transforms/Vectorize/VPlanAnalysis.h
+0-2llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.h
+0-2llvm/include/llvm/Transforms/Vectorize/LoopVectorizationLegality.h
+0-1llvm/lib/Transforms/Vectorize/VPlanUtils.h
+0-136 files

LLVM/project 00f2b0e — llvm/lib/Analysis TypeBasedAliasAnalysis.cpp LastRunTrackingAnalysis.cpp, llvm/unittests/Analysis FunctionPropertiesAnalysisTest.cpp

[Analysis] Port more cl::opt options to AnalysisOptions (#238015)

Port -enable-tbaa, -enable-scoped-noalias, -disable-last-run-tracking,
-inliner-function-import-stats, -ctx-profile-printer-level,
-enable-detailed-function-properties and
-view-block-freq-propagation-dags.

* The TypeBasedAAResult and ScopedNoAliasAAResult constructors take an
  LLVMContext. ScopedNoAliasAAResult::alias(LocA, LocB) is no longer
  static.
* Rename -disable-last-run-tracking to -enable-last-run-tracking. The
  old spelling remains an alias that accepts no value.

LLM-aided
DeltaFile
+14-19llvm/unittests/Analysis/FunctionPropertiesAnalysisTest.cpp
+29-0llvm/lib/Analysis/AnalysisOptions.td
+10-12llvm/lib/Analysis/ScopedNoAliasAA.cpp
+2-18llvm/lib/Analysis/BlockFrequencyInfo.cpp
+10-9llvm/lib/Analysis/TypeBasedAliasAnalysis.cpp
+12-7llvm/lib/Analysis/LastRunTrackingAnalysis.cpp
+77-6514 files not shown
+127-13020 files

LLVM/project ea51924 — llvm/lib/Transforms/Vectorize VPlanUtils.cpp, llvm/test/Transforms/LoopVectorize uniform-shared-operands.ll

[VPlan] Avoid exponential recursion in uniformity checks (NFC) (#231607)

Hello, I have attempted to fix #231031.

The root cause lies in isUniformAcrossVFsAndUFs repeatedly traversing
shared operands; each fshl in the issue references the previous value
three times, leading to redundant traversals.

I replaced recursion with a local SmallSetVector worklist to avoid
checking the same value multiple times, while keeping the original
checks in a helper function.

I tested this on Windows x64 using an AMD Ryzen 9 9950X and an LLVM
Release build with assertions enabled. Running opt
-passes=loop-vectorize -disable-output, the median execution time over
three runs dropped from 47.11 seconds to 33.30
milliseconds—approximately 1,415 times faster.



    [2 lines not shown]
DeltaFile
+126-0llvm/test/Transforms/LoopVectorize/uniform-shared-operands.ll
+45-19llvm/lib/Transforms/Vectorize/VPlanUtils.cpp
+34-0llvm/unittests/Transforms/Vectorize/VPlanTest.cpp
+205-193 files

FreeNAS/freenas 81c5e2a — src/middlewared/middlewared/plugins/directoryservices_ activedirectory_health_mixin.py, src/middlewared/middlewared/utils/directoryservices credential.py krb5_error.py

NAS-144268 / 27.0.0 / Fix KRB5Error mapping of minor codes outside the krb5 error table (by anodos325) (#20123)

KRB5Error took the low byte of any GSSAPI minor code as a KRB5ErrCode.
Codes missing from the enum raised ValueError in the constructor, so the
original error was lost and no `except KRB5Error` handler ran. Minor
codes that are not krb5 codes at all (an errno from the keyring ccache,
a GSSAPI synthetic code) got a wrong name. The enum also lacked
KRB5_CC_NOT_KTYPE and three KRB5_SAM_* codes, so every value from 200 up
was off by one or four.

- Set krb5_code only when the minor code is in the krb5 error table;
otherwise it is None and str() returns the GSSAPI message.
- Regenerate KRB5ErrCode from krb5_err.et (MIT krb5 1.21.3).
- _recover_secrets: a KRB5Error with no krb5_code propagates instead of
faulting as AD_SECRET_INVALID.
- Fix minor codes in two AD tests that did not match their comments.

Original PR: https://github.com/truenas/middleware/pull/20105

Co-authored-by: Andrew Walker <andrew.walker at truenas.com>
DeltaFile
+102-41src/middlewared/middlewared/utils/directoryservices/krb5_error.py
+34-2tests/unit/test_activedirectory_health.py
+36-0tests/unit/test_krb5_error.py
+2-2src/middlewared/middlewared/utils/directoryservices/credential.py
+4-0src/middlewared/middlewared/plugins/directoryservices_/activedirectory_health_mixin.py
+1-1tests/unit/test_activedirectory_join.py
+179-466 files

LLVM/project e7740e5 — llvm/lib/Transforms/Utils Local.cpp

[SimplifyCFG] Erase terminator before RAUW when folding empty block (#237414)

BB->replaceAllUsesWith(Succ) calls replaceSuccessorsPhiUsesWith(), which
scans the phis of Succ for entries from BB. When BB is killable, those
entries have already been removed by
redirectValuesFromPredecessorsToPhi(), so the scan finds nothing.

Prerequisite for PR #225647

No functional change; check-llvm and llvm-test-suite output are
unchanged.

Signed-off-by: Max Brandtner <maximilian.immanuel.brandtner at protonmail.com>
DeltaFile
+6-4llvm/lib/Transforms/Utils/Local.cpp
+6-41 files

FreeNAS/freenas f4efff1 — src/middlewared/middlewared/plugins/directoryservices_ datastore.py, tests/directory_services test_activedirectory_idmap.py

Expire directory services cache when an idmap change is saved while disabled

Configuration changes are rejected while directory services are enabled, so
an idmap backend change is normally saved in the call that disables them or
in a later call while they are disabled. The stored configuration then
already matched on re-enable, the only comparison was skipped, and the user
and group cache was never rebuilt. group.query kept returning GIDs from the
old backend, ACLs saved through the UI were bound to IDs that no longer
resolved, and SMB access was denied until directoryservices.cache_refresh
was run by hand.

Compare the stored idmap configuration (including trusted domain settings)
on every update and expire the cache whenever it changes, so that the next
activation rebuilds it.
DeltaFile
+187-0tests/unit/test_directoryservices_idmap_cache.py
+29-4tests/directory_services/test_activedirectory_idmap.py
+19-2src/middlewared/middlewared/plugins/directoryservices_/datastore.py
+235-63 files

LLVM/project 6301a8b — utils/bazel/llvm-project-overlay/libc BUILD.bazel, utils/bazel/llvm-project-overlay/libc/src/inttypes BUILD.bazel

[bazel] Add a subpackage for libc/src/inttypes (#238078)

Part of https://github.com/llvm/llvm-project/issues/238076. This PR
leaves aliases behind in `libc/BUILD.bazel` just so that any downstream
consumer doesn't need to update in lockstep with this commit. They can
be removed later.
DeltaFile
+64-0utils/bazel/llvm-project-overlay/libc/src/inttypes/BUILD.bazel
+8-38utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+4-4utils/bazel/llvm-project-overlay/libc/test/src/inttypes/BUILD.bazel
+76-423 files

LLVM/project cef25c4 — llvm/test/Transforms/LoopStrengthReduce/X86 incoming-dead-insts.ll

[LSR] Precommit test for LCSSA optimization regression

We end up doing critical edge splitting in this test case which with
LCSSA preservation enabled prevents us from deleting some dead
instructions.

Assisted-By: LLM

Reviewers: nikic, john-brawn-arm, preames

Pull Request: https://github.com/llvm/llvm-project/pull/237531
DeltaFile
+55-0llvm/test/Transforms/LoopStrengthReduce/X86/incoming-dead-insts.ll
+55-01 files

LLVM/project 1b1eb6c — flang/test/Lower/OpenMP reduction-mixed-modifiers.f90, mlir/lib/Dialect/OpenMP/IR OpenMPDialect.cpp

[mlir][OpenMP] Support different reduction modifiers per variable (#238044)

Previously the OpenMP dialect would use one modifier for the whole
reduction clause. There was no way to express something like
```
!$omp parallel reduction(task, +: x) reduction(default, +: y)
```

Update the clause printing and parsing to render the above example like
```
omp.parallel reduction(task @x_recipe %x_host -> %x_priv,
                       @y_recipe %y_host -> %y_priv : !x_type, !y_type)
```
Note that the default modifier is omitted.

The dialect does allow missmatched modifiers even when inscan is used.
This is not allowed by the OpenMP standard but it turned out to be
needed if an inscan reduction was combined with the compiler-generated
reductions added for conditional-lastprivate.

    [5 lines not shown]
DeltaFile
+409-0mlir/test/Target/LLVMIR/openmp-reduction-mixed-modifiers.mlir
+117-98mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
+124-0flang/test/Lower/OpenMP/reduction-mixed-modifiers.f90
+41-31mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+71-0mlir/test/Dialect/OpenMP/reduction-modifiers.mlir
+64-0mlir/test/Dialect/OpenMP/reduction-modifiers-invalid.mlir
+826-12914 files not shown
+921-18020 files

FreeBSD/ports 7e23248 — devel/sem Makefile distinfo

devel/sem: Update to 0.29.1
DeltaFile
+3-3devel/sem/distinfo
+1-1devel/sem/Makefile
+4-42 files

LLVM/project b332a3a — llvm/lib/Transforms/Scalar LoopStrengthReduce.cpp, llvm/test/Transforms/LoopStrengthReduce/X86 lcssa-preservation-regression.ll duplicate-phi-nodes.ll

[LSR] Deduplicate Phi Nodes before rewriteLoopExitValues

Otherwise we might end up with duplicate LCSSA phi nodes that cause
rewriteLoopExitValues to bail given the extra uses, which can cause
optimization regressions.

This works towards getting LSR to work with LCSSA IR which is the last
remaining known blocker for enabling the NewPM for CodeGen more broadly.
A set of patches in https://github.com/llvm/llvm-project/pull/235054
shows a mix of improvements/regressions, but an overall improvement.

Reviewers: preames, john-brawn-arm, nikic

Pull Request: https://github.com/llvm/llvm-project/pull/237520
DeltaFile
+3-6llvm/test/Transforms/LoopStrengthReduce/X86/duplicate-phi-nodes.ll
+9-0llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
+0-2llvm/test/Transforms/LoopStrengthReduce/X86/lcssa-preservation-regression.ll
+12-83 files

FreeBSD/ports fbaa438 — sysutils/ytop Makefile distinfo

sysutils/ytop: update to 1.1.0

Remove the ncurses dependency in favor of a built-in VT terminal module.
Separate the thread list into a dedicated view with per-thread metrics.
Add a CPU usage grid to the thread view.

PR:             300469
DeltaFile
+9-5sysutils/ytop/pkg-descr
+3-3sysutils/ytop/distinfo
+2-2sysutils/ytop/Makefile
+14-103 files

LLVM/project 651ca4d — lld/test/COFF print-search-paths-arm.s

Fix requires in arm test
DeltaFile
+1-1lld/test/COFF/print-search-paths-arm.s
+1-11 files

LLVM/project 6263b73 — lld/COFF Driver.cpp, lld/test/COFF print-search-paths-arm64.s print-search-paths-arm.s

Add extra paths and arm tests
DeltaFile
+23-0lld/test/COFF/print-search-paths-arm.s
+4-3lld/COFF/Driver.cpp
+2-2lld/test/COFF/print-search-paths-arm64.s
+29-53 files

FreeBSD/poudriere b0f0c86 — src/share/poudriere jail.sh ports.sh

Merge pull request #1386 from michael-o/fix-ptname-hyphen-warning-v2

ports, jail: Warn instead of erroring on hyphenated PTNAME/JAILNAME
DeltaFile
+13-5src/share/poudriere/common.sh
+1-3src/share/poudriere/ports.sh
+2-0src/share/poudriere/jail.sh
+16-83 files

LLVM/project 075fa54 — llvm/test/Transforms/LoopStrengthReduce/X86 duplicate-phi-nodes.ll

[LSR] Precommit test with duplicate LCSSA Phi Nodes

This test shows an example where we end up with duplicate LCSSA phi
nodes which prevents rewriteLoopExitValues from rewriting an IV use to
an out-of-loop expression.

Assisted-By: LLM

Reviewers: nikic, preames, john-brawn-arm

Pull Request: https://github.com/llvm/llvm-project/pull/237519
DeltaFile
+54-0llvm/test/Transforms/LoopStrengthReduce/X86/duplicate-phi-nodes.ll
+54-01 files

FreeBSD/poudriere 828228e — src/share/poudriere jail.sh ports.sh

ports, jail: Warn instead of erroring on hyphenated PTNAME/JAILNAME

Downgrade the ports-tree hyphen check from a hard err() to a warning,
consistent with the existing SETNAME hyphen warning. Extract the
hyphen check into a shared check_name_hyphen() helper in common.sh and
apply it uniformly at the point each identifier is established:
jail creation, jail rename, and ports tree creation. SETNAME keeps its
existing call in jail_start(), since a set has no separate creation
step -- its first use in a build is effectively its creation.

The warning intentionally doesn't name a specific mechanism (e.g. the
previous "-z" claim for ports tree names): no code path splits a
hyphenated name back into components during normal creation or build
handling. The only place a joined name is ever decomposed is
for_each_build()'s fallback for build logs predating separate
jailname/ptname/setname metadata (2013, a2300607), which no longer
applies to any name established from this point forward. Warning only
at creation time reflects that once a name exists, cautioning about it
again on every later build is not actionable.

    [2 lines not shown]
DeltaFile
+13-5src/share/poudriere/common.sh
+1-3src/share/poudriere/ports.sh
+2-0src/share/poudriere/jail.sh
+16-83 files

OPNSense/plugins 2309ccc — security/acme-client pkg-descr, security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient LeCertificate.php LeCommon.php

Merge pull request #5719 from daemonhorn/fix/acme-client-false-validation-failed-on-skip

security/acme-client: fix false "validation failed" status on skipped renewal
DeltaFile
+19-0security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeValidation/Base.php
+6-0security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeCommon.php
+5-0security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeCertificate.php
+3-0security/acme-client/pkg-descr
+33-04 files

NetBSD/pkgsrc-wip c5cc9af — nim distinfo, nim/patches patch-dist_nimble_src_nimblepkg_downloadnim.nim patch-dist_nimble_vendor_chronos_chronos_sendfile.nim

Make wip/nim v.2.4.0 build under NetBSD-current
DeltaFile
+19-0nim/patches/patch-dist_nimble_vendor_chronos_chronos_sendfile.nim
+16-0nim/patches/patch-dist_nimble_src_nimblepkg_downloadnim.nim
+2-0nim/distinfo
+37-03 files

LLVM/project b0af47f — llvm/include/llvm/Transforms/Utils StripConvergenceIntrinsics.h, llvm/test/CodeGen/SPIRV loop-unroll-nonshader.ll

[NewPM] Make LoopSimplify, RegToMem and StripConvergenceIntrinsics required (#238319)

SPIR-V lowering needs these passes on optnone functions

Their legacy PM versions never skip functions, so mark them required
DeltaFile
+6-2llvm/test/CodeGen/SPIRV/loop-unroll-nonshader.ll
+4-1llvm/test/CodeGen/SPIRV/hlsl-intrinsics/WaveActiveAnyTrue.ll
+1-1llvm/test/Feature/optnone-opt.ll
+1-1llvm/include/llvm/Transforms/Utils/StripConvergenceIntrinsics.h
+2-0llvm/test/CodeGen/SPIRV/structurizer/do-continue.ll
+2-0llvm/test/CodeGen/SPIRV/structurizer/cf.while.continue.ll
+16-52 files not shown
+18-78 files

FreeNAS/freenas a51706d —

Empty commit to create PR on github.

You should reset it
DeltaFile
+0-00 files

FreeBSD/ports 5a96e9b — sysutils/screen Makefile, sysutils/screen-devel Makefile

sysutils/screen*: Add UTMPX option

Add a configuration option to log screen PTYs to UTMPX.

PR:     299259
DeltaFile
+7-1sysutils/screen/Makefile
+7-1sysutils/screen-devel/Makefile
+14-22 files

FreeNAS/freenas 1ab4b28 —

Empty commit to create PR on github.

You should reset it
DeltaFile
+0-00 files

FreeNAS/freenas 1f6c94d — src/middlewared/middlewared/plugins/directoryservices_ activedirectory_health_mixin.py, src/middlewared/middlewared/utils/directoryservices credential.py krb5_error.py

NAS-144268 / 28.0.0-BETA.1 / Fix KRB5Error mapping of minor codes outside the krb5 error table (#20105)

KRB5Error took the low byte of any GSSAPI minor code as a KRB5ErrCode.
Codes missing from the enum raised ValueError in the constructor, so the
original error was lost and no `except KRB5Error` handler ran. Minor
codes that are not krb5 codes at all (an errno from the keyring ccache,
a GSSAPI synthetic code) got a wrong name. The enum also lacked
KRB5_CC_NOT_KTYPE and three KRB5_SAM_* codes, so every value from 200 up
was off by one or four.

- Set krb5_code only when the minor code is in the krb5 error table;
otherwise it is None and str() returns the GSSAPI message.
- Regenerate KRB5ErrCode from krb5_err.et (MIT krb5 1.21.3).
- _recover_secrets: a KRB5Error with no krb5_code propagates instead of
faulting as AD_SECRET_INVALID.
- Fix minor codes in two AD tests that did not match their comments.
DeltaFile
+102-41src/middlewared/middlewared/utils/directoryservices/krb5_error.py
+34-2tests/unit/test_activedirectory_health.py
+36-0tests/unit/test_krb5_error.py
+2-2src/middlewared/middlewared/utils/directoryservices/credential.py
+4-0src/middlewared/middlewared/plugins/directoryservices_/activedirectory_health_mixin.py
+1-1tests/unit/test_activedirectory_join.py
+179-466 files

LLVM/project 4993d37 — libc/src/__support/math expf_float_utils.h expf.h, libc/src/__support/math/check CMakeLists.txt

[libc][math] Move CR/RN expf to float_eval_cr_rn namespace (#237614)

Rename `math::float_eval::cr_expf_rn` to `math::float_eval_cr_rn::expf`
and restore namespace-based implementation selection with `using`,
removing the forwarding wrapper.

Also register the missing `check.exp_exceptions` CMake target, which
caused CMake to skip the tests:

```text
Skipping test libc.test.src.math.expf_test as it has missing deps:
libc.src.__support.math.check.exp_exceptions.
```

---------

Signed-off-by: Leandro Augusto Lacerda Campos <leandrolcampos at yahoo.com.br>
DeltaFile
+8-4libc/src/__support/math/expf_float_eval.h
+5-5libc/src/__support/math/expf.h
+10-0libc/src/__support/math/check/CMakeLists.txt
+4-4libc/src/__support/math/expf_float_utils.h
+4-3libc/test/src/math/exhaustive/expf_test.cpp
+1-1libc/test/src/math/smoke/expf_test.cpp
+32-172 files not shown
+35-188 files

LLVM/project 09336c7 — llvm/lib/Target/DirectX DirectX.h

rebase

Created using spr 1.3.7
DeltaFile
+19-26llvm/lib/Target/DirectX/DirectX.h
+19-261 files

LLVM/project 7082783 — llvm/lib/Target/DirectX DirectX.h

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+19-26llvm/lib/Target/DirectX/DirectX.h
+19-261 files

FreeNAS/freenas 71865b4 — src/middlewared/middlewared/alembic/versions/27.0 2026-11-03_12-00_container_memory.py, src/middlewared/middlewared/alembic/versions/28.0 2026-11-03_12-30_merge.py

NAS-145022 / 28.0.0-BETA.1 / Add memory limit to containers (by Qubad786) (#20119)

## Problem
Containers report 1 PiB of memory and there is no way to cap how much
memory a container can use, because libvirt is always handed a
placeholder 1 PiB value for `<memory>`.

## Solution
Added a `memory` column and API field (MiB, `ge=20`) to containers. The
value is passed to libvirt, which enforces it as a hard cgroup limit and
reports it as the container's MemTotal. When it is unset,
`container.start` uses the host's physical RAM, so containers without a
limit see the real host memory instead of 1 PiB. The Incus import
carries over `limits.memory`, skipping soft-enforced limits and values
that don't parse to at least 20 MiB.

Original PR: https://github.com/truenas/middleware/pull/20116

Co-authored-by: M. Rehan <mrehanlm93 at gmail.com>
DeltaFile
+26-0src/middlewared/middlewared/alembic/versions/27.0/2026-11-03_12-00_container_memory.py
+21-0src/middlewared/middlewared/alembic/versions/28.0/2026-11-03_12-30_merge.py
+6-9src/middlewared/middlewared/plugins/container/lifecycle.py
+14-0tests/api2/test_container.py
+9-0src/middlewared/middlewared/api/v28_0_0/container.py
+9-0src/middlewared/middlewared/api/v27_0_0/container.py
+85-92 files not shown
+95-108 files