summaryrefslogtreecommitdiff
path: root/www
diff options
context:
space:
mode:
Diffstat (limited to 'www')
-rw-r--r--www/adguardhome/Makefile1
-rw-r--r--www/amfora/Makefile2
-rw-r--r--www/aquatone/Makefile2
-rw-r--r--www/authelia/Makefile1
-rw-r--r--www/beehive/Makefile2
-rw-r--r--www/bombadillo/Makefile2
-rw-r--r--www/bugzilla2atom/Makefile2
-rw-r--r--www/caddy-custom/Makefile2
-rw-r--r--www/caddy/Makefile1
-rw-r--r--www/carbonapi/Makefile2
-rw-r--r--www/chisel/Makefile2
-rw-r--r--www/chromium/Makefile1
-rw-r--r--www/chromium/files/patch-build_rust_allocator_BUILD.gn109
-rw-r--r--www/chromium/files/patch-build_rust_allocator_DEPS12
-rw-r--r--www/chromium/files/patch-build_rust_allocator_alias.cc25
-rw-r--r--www/chromium/files/patch-build_rust_allocator_alias.h40
-rw-r--r--www/chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.cc20
-rw-r--r--www/chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.h24
-rw-r--r--www/chromium/files/patch-build_rust_allocator_allocator__impls.cc108
-rw-r--r--www/chromium/files/patch-build_rust_allocator_allocator__impls.h27
-rw-r--r--www/chromium/files/patch-build_rust_allocator_allocator__impls__ffi.rs22
-rw-r--r--www/chromium/files/patch-build_rust_allocator_compiler__specific.h41
-rw-r--r--www/chromium/files/patch-build_rust_allocator_immediate__crash.h174
-rw-r--r--www/chromium/files/patch-build_rust_allocator_lib.rs122
-rw-r--r--www/chromium/files/patch-build_rust_cargo__crate.gni25
-rw-r--r--www/chromium/files/patch-build_rust_rust__macro.gni12
-rw-r--r--www/chromium/files/patch-build_rust_rust__target.gni13
-rw-r--r--www/chromium/files/patch-build_rust_std_BUILD.gn80
-rw-r--r--www/cinny/Makefile2
-rw-r--r--www/cinny/distinfo6
-rw-r--r--www/cinny/pkg-plist16
-rw-r--r--www/codeberg-pages-server/Makefile1
-rw-r--r--www/colly/Makefile2
-rw-r--r--www/devd/Makefile2
-rw-r--r--www/eden/Makefile2
-rw-r--r--www/element-web/Makefile4
-rw-r--r--www/element-web/distinfo6
-rw-r--r--www/element-web/pkg-plist151
-rw-r--r--www/filtron/Makefile2
-rw-r--r--www/galene/Makefile1
-rw-r--r--www/glance/Makefile2
-rw-r--r--www/go-anubis/Makefile1
-rw-r--r--www/go-www/Makefile2
-rw-r--r--www/gobuffalo/Makefile2
-rw-r--r--www/gohugo/Makefile2
-rw-r--r--www/gohugo/distinfo10
-rw-r--r--www/gotty/Makefile2
-rw-r--r--www/grafana/Makefile1
-rw-r--r--www/gurl/Makefile2
-rw-r--r--www/icapeg/Makefile2
-rw-r--r--www/ilias/Makefile2
-rw-r--r--www/ilias/distinfo6
-rw-r--r--www/iridium/Makefile1
-rw-r--r--www/iridium/files/patch-build_rust_allocator_BUILD.gn109
-rw-r--r--www/iridium/files/patch-build_rust_allocator_DEPS12
-rw-r--r--www/iridium/files/patch-build_rust_allocator_alias.cc25
-rw-r--r--www/iridium/files/patch-build_rust_allocator_alias.h40
-rw-r--r--www/iridium/files/patch-build_rust_allocator_alloc__error__handler__impl.cc20
-rw-r--r--www/iridium/files/patch-build_rust_allocator_alloc__error__handler__impl.h24
-rw-r--r--www/iridium/files/patch-build_rust_allocator_allocator__impls.cc108
-rw-r--r--www/iridium/files/patch-build_rust_allocator_allocator__impls.h27
-rw-r--r--www/iridium/files/patch-build_rust_allocator_allocator__impls__ffi.rs22
-rw-r--r--www/iridium/files/patch-build_rust_allocator_compiler__specific.h41
-rw-r--r--www/iridium/files/patch-build_rust_allocator_immediate__crash.h174
-rw-r--r--www/iridium/files/patch-build_rust_allocator_lib.rs122
-rw-r--r--www/iridium/files/patch-build_rust_cargo__crate.gni25
-rw-r--r--www/iridium/files/patch-build_rust_rust__macro.gni12
-rw-r--r--www/iridium/files/patch-build_rust_rust__target.gni13
-rw-r--r--www/iridium/files/patch-build_rust_std_BUILD.gn80
-rw-r--r--www/jira-cli/Makefile1
-rw-r--r--www/katana/Makefile1
-rw-r--r--www/kineto/Makefile2
-rw-r--r--www/lzr/Makefile2
-rw-r--r--www/miniflux/Makefile1
-rw-r--r--www/mirrorselect/Makefile2
-rw-r--r--www/moin2/Makefile2
-rw-r--r--www/morty/Makefile2
-rw-r--r--www/nextcloud-appointments/Makefile2
-rw-r--r--www/nextcloud-appointments/distinfo6
-rw-r--r--www/nginx-devel/Makefile2
-rw-r--r--www/nginx-devel/Makefile.extmod2
-rw-r--r--www/nginx-devel/distinfo6
-rw-r--r--www/nginx-devel/files/extra-patch-ngx_http_redis_module.c34
-rw-r--r--www/nginx-prometheus-exporter/Makefile1
-rw-r--r--www/nginx-vts-exporter/Makefile2
-rw-r--r--www/node22/Makefile2
-rw-r--r--www/oneshot/Makefile2
-rw-r--r--www/p5-Mojo-DOM58/Makefile4
-rw-r--r--www/p5-Mojo-DOM58/distinfo6
-rw-r--r--www/phpfpmtop/Makefile2
-rw-r--r--www/pomerium/Makefile2
-rw-r--r--www/proxygen/Makefile2
-rw-r--r--www/proxygen/distinfo6
-rw-r--r--www/py-django-cms/Makefile2
-rw-r--r--www/py-django-cms/distinfo6
-rw-r--r--www/pydio-cells/Makefile2
-rw-r--r--www/remark42/Makefile2
-rw-r--r--www/s/Makefile2
-rw-r--r--www/selenium/Makefile8
-rw-r--r--www/selenium/distinfo6
-rw-r--r--www/threejs/Makefile2
-rw-r--r--www/threejs/distinfo6
-rw-r--r--www/threejs/pkg-plist135
-rw-r--r--www/tusc/Makefile2
-rw-r--r--www/tusd/Makefile2
-rw-r--r--www/typo3-12/Makefile2
-rw-r--r--www/typo3-12/distinfo6
-rw-r--r--www/typo3-13/Makefile4
-rw-r--r--www/typo3-13/distinfo6
-rw-r--r--www/uchiwa/Makefile2
-rw-r--r--www/ungoogled-chromium/Makefile1
-rw-r--r--www/ungoogled-chromium/files/patch-build_rust_allocator_BUILD.gn109
-rw-r--r--www/ungoogled-chromium/files/patch-build_rust_allocator_DEPS12
-rw-r--r--www/ungoogled-chromium/files/patch-build_rust_allocator_alias.cc25
-rw-r--r--www/ungoogled-chromium/files/patch-build_rust_allocator_alias.h40
-rw-r--r--www/ungoogled-chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.cc20
-rw-r--r--www/ungoogled-chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.h24
-rw-r--r--www/ungoogled-chromium/files/patch-build_rust_allocator_allocator__impls.cc108
-rw-r--r--www/ungoogled-chromium/files/patch-build_rust_allocator_allocator__impls.h27
-rw-r--r--www/ungoogled-chromium/files/patch-build_rust_allocator_allocator__impls__ffi.rs22
-rw-r--r--www/ungoogled-chromium/files/patch-build_rust_allocator_compiler__specific.h41
-rw-r--r--www/ungoogled-chromium/files/patch-build_rust_allocator_immediate__crash.h174
-rw-r--r--www/ungoogled-chromium/files/patch-build_rust_allocator_lib.rs122
-rw-r--r--www/ungoogled-chromium/files/patch-build_rust_cargo__crate.gni25
-rw-r--r--www/ungoogled-chromium/files/patch-build_rust_rust__macro.gni12
-rw-r--r--www/ungoogled-chromium/files/patch-build_rust_rust__target.gni13
-rw-r--r--www/ungoogled-chromium/files/patch-build_rust_std_BUILD.gn80
-rw-r--r--www/varnish_exporter/Makefile2
-rw-r--r--www/vultr-cli/Makefile2
-rw-r--r--www/webhook/Makefile2
-rw-r--r--www/websocketd/Makefile2
-rw-r--r--www/writeas-cli/Makefile2
-rw-r--r--www/writefreely/Makefile2
-rw-r--r--www/wuzz/Makefile2
-rw-r--r--www/xcaddy/Makefile2
-rw-r--r--www/zgrab2/Makefile2
136 files changed, 2828 insertions, 292 deletions
diff --git a/www/adguardhome/Makefile b/www/adguardhome/Makefile
index 0d5022c03702..50091d093f54 100644
--- a/www/adguardhome/Makefile
+++ b/www/adguardhome/Makefile
@@ -1,6 +1,7 @@
PORTNAME= adguardhome
DISTVERSIONPREFIX= v
DISTVERSION= 0.107.61
+PORTREVISION= 1
CATEGORIES= www
MASTER_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/releases/download/${DISTVERSIONFULL}/
DISTFILES= ${GH_PROJECT}_frontend${EXTRACT_SUFX}
diff --git a/www/amfora/Makefile b/www/amfora/Makefile
index edcf44cbe324..836b3553354e 100644
--- a/www/amfora/Makefile
+++ b/www/amfora/Makefile
@@ -1,7 +1,7 @@
PORTNAME= amfora
DISTVERSIONPREFIX= v
DISTVERSION= 1.10.0
-PORTREVISION= 7
+PORTREVISION= 8
CATEGORIES= www
MAINTAINER= lcook@FreeBSD.org
diff --git a/www/aquatone/Makefile b/www/aquatone/Makefile
index 1f572cfd4436..c1b95cd7adc7 100644
--- a/www/aquatone/Makefile
+++ b/www/aquatone/Makefile
@@ -1,7 +1,7 @@
PORTNAME= aquatone
DISTVERSIONPREFIX= v
DISTVERSION= 1.7.0
-PORTREVISION= 25
+PORTREVISION= 26
CATEGORIES= www security
MAINTAINER= yuri@FreeBSD.org
diff --git a/www/authelia/Makefile b/www/authelia/Makefile
index a21b9e4ba88d..60b56093ac0b 100644
--- a/www/authelia/Makefile
+++ b/www/authelia/Makefile
@@ -1,6 +1,7 @@
PORTNAME= authelia
DISTVERSIONPREFIX= v
DISTVERSION= 4.39.1
+PORTREVISION= 1
CATEGORIES= www
MASTER_SITES= https://github.com/authelia/authelia/releases/download/v${DISTVERSION}/:public_html
DISTFILES= authelia-${DISTVERSIONFULL}-public_html${EXTRACT_SUFX}:public_html # html root directory needs to be built in a special way
diff --git a/www/beehive/Makefile b/www/beehive/Makefile
index 90bee797b439..fe9bc0c8d330 100644
--- a/www/beehive/Makefile
+++ b/www/beehive/Makefile
@@ -1,7 +1,7 @@
PORTNAME= beehive
DISTVERSIONPREFIX= v
DISTVERSION= 0.4.0
-PORTREVISION= 26
+PORTREVISION= 27
CATEGORIES= www
MAINTAINER= lcook@FreeBSD.org
diff --git a/www/bombadillo/Makefile b/www/bombadillo/Makefile
index 41dfdb186bb7..c86644354e16 100644
--- a/www/bombadillo/Makefile
+++ b/www/bombadillo/Makefile
@@ -1,6 +1,6 @@
PORTNAME= bombadillo
DISTVERSION= 2.4.0
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= www
MASTER_SITES= https://tildegit.org/sloum/bombadillo/archive/
DISTNAME= ${DISTVERSION}
diff --git a/www/bugzilla2atom/Makefile b/www/bugzilla2atom/Makefile
index 1ddfdd4d0f18..0a4835495571 100644
--- a/www/bugzilla2atom/Makefile
+++ b/www/bugzilla2atom/Makefile
@@ -1,7 +1,7 @@
PORTNAME= bugzilla2atom
DISTVERSIONPREFIX= v
DISTVERSION= ${MODVERSION:S/-/./g:R}
-PORTREVISION= 13
+PORTREVISION= 14
CATEGORIES= www
MAINTAINER= fuz@FreeBSD.org
diff --git a/www/caddy-custom/Makefile b/www/caddy-custom/Makefile
index 9f24d269d649..b8d1054f9d42 100644
--- a/www/caddy-custom/Makefile
+++ b/www/caddy-custom/Makefile
@@ -4,7 +4,7 @@
PORTNAME= caddy-custom
PORTVERSION= ${CADDY_VERSION}.${XCADDY_VERSION}
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= www
DISTFILES= # none
diff --git a/www/caddy/Makefile b/www/caddy/Makefile
index f86593f0a647..c6a2015a646f 100644
--- a/www/caddy/Makefile
+++ b/www/caddy/Makefile
@@ -1,6 +1,7 @@
PORTNAME= caddy
DISTVERSIONPREFIX= v
DISTVERSION= 2.10.0
+PORTREVISION= 1
CATEGORIES= www
DIST_SUBDIR= caddy
diff --git a/www/carbonapi/Makefile b/www/carbonapi/Makefile
index 41f80252df3a..0232c11612d1 100644
--- a/www/carbonapi/Makefile
+++ b/www/carbonapi/Makefile
@@ -1,6 +1,6 @@
PORTNAME= carbonapi
DISTVERSION= 0.14.1
-PORTREVISION= 25
+PORTREVISION= 26
CATEGORIES= www
MAINTAINER= a.andersson.thn@gmail.com
diff --git a/www/chisel/Makefile b/www/chisel/Makefile
index 944d2ee559c7..c14051b7d991 100644
--- a/www/chisel/Makefile
+++ b/www/chisel/Makefile
@@ -1,7 +1,7 @@
PORTNAME= chisel
DISTVERSIONPREFIX= v
DISTVERSION= 1.9.1
-PORTREVISION= 11
+PORTREVISION= 12
CATEGORIES= www
MAINTAINER= lcook@FreeBSD.org
diff --git a/www/chromium/Makefile b/www/chromium/Makefile
index 1dd3e43c87a9..023f8f9f95f5 100644
--- a/www/chromium/Makefile
+++ b/www/chromium/Makefile
@@ -1,5 +1,6 @@
PORTNAME= chromium
PORTVERSION= 136.0.7103.113
+PORTREVISION= 1
PULSEMV= 16
PULSEV= ${PULSEMV}.1
CATEGORIES= www wayland
diff --git a/www/chromium/files/patch-build_rust_allocator_BUILD.gn b/www/chromium/files/patch-build_rust_allocator_BUILD.gn
new file mode 100644
index 000000000000..cb1633140dcc
--- /dev/null
+++ b/www/chromium/files/patch-build_rust_allocator_BUILD.gn
@@ -0,0 +1,109 @@
+--- build/rust/allocator/BUILD.gn.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/BUILD.gn
+@@ -0,0 +1,106 @@
++# Copyright 2025 The Chromium Authors
++# Use of this source code is governed by a BSD-style license that can be
++# found in the LICENSE file.
++
++import("//build/buildflag_header.gni")
++import("//build/config/rust.gni")
++import("//build/rust/rust_static_library.gni")
++
++rust_allocator_uses_partition_alloc = false
++if (build_with_chromium) {
++ import("//base/allocator/partition_allocator/partition_alloc.gni")
++ rust_allocator_uses_partition_alloc = use_partition_alloc_as_malloc
++}
++
++# In ASAN builds, PartitionAlloc-Everywhere is disabled, meaning malloc() and
++# friends in C++ do not go to PartitionAlloc. So we also don't point the Rust
++# allocation functions at PartitionAlloc. Generally, this means we just direct
++# them to the Standard Library's allocator.
++#
++# However, on Windows the Standard Library uses HeapAlloc() and Windows ASAN
++# does *not* hook that method, so ASAN does not get to hear about allocations
++# made in Rust. To resolve this, we redirect allocation to _aligned_malloc
++# which Windows ASAN *does* hook.
++#
++# Note that there is a runtime option to make ASAN hook HeapAlloc() but
++# enabling it breaks Win32 APIs like CreateProcess:
++# https://crbug.com/368070343#comment29
++rust_allocator_uses_aligned_malloc = false
++if (!rust_allocator_uses_partition_alloc && is_win && is_asan) {
++ rust_allocator_uses_aligned_malloc = true
++}
++
++rust_allocator_uses_allocator_impls_h =
++ rust_allocator_uses_partition_alloc || rust_allocator_uses_aligned_malloc
++
++buildflag_header("buildflags") {
++ header = "buildflags.h"
++ flags = [
++ "RUST_ALLOCATOR_USES_PARTITION_ALLOC=$rust_allocator_uses_partition_alloc",
++ "RUST_ALLOCATOR_USES_ALIGNED_MALLOC=$rust_allocator_uses_aligned_malloc",
++ ]
++ visibility = [ ":*" ]
++}
++
++if (toolchain_has_rust) {
++ # All targets which depend on Rust code but are not linked by rustc must
++ # depend on this. Usually, this dependency will come from the rust_target() GN
++ # template. However, cargo_crate() does *not* include this dependency so any
++ # C++ targets which directly depend on a cargo_crate() must depend on this.
++ rust_static_library("allocator") {
++ sources = [ "lib.rs" ]
++ crate_root = "lib.rs"
++ cxx_bindings = [ "lib.rs" ]
++
++ deps = [ ":alloc_error_handler_impl" ]
++ if (rust_allocator_uses_allocator_impls_h) {
++ deps += [ ":allocator_impls" ]
++ }
++
++ no_chromium_prelude = true
++ no_allocator_crate = true
++ allow_unsafe = true
++
++ rustflags = []
++ if (rust_allocator_uses_allocator_impls_h) {
++ rustflags += [ "--cfg=rust_allocator_uses_allocator_impls_h" ]
++ cxx_bindings += [ "allocator_impls_ffi.rs" ]
++ sources += [ "allocator_impls_ffi.rs" ]
++ }
++
++ # TODO(https://crbug.com/410596442): Stop using unstable features here.
++ configs -= [ "//build/config/compiler:disallow_unstable_features" ]
++ }
++
++ if (rust_allocator_uses_allocator_impls_h) {
++ static_library("allocator_impls") {
++ public_deps = []
++ if (rust_allocator_uses_partition_alloc) {
++ public_deps +=
++ [ "//base/allocator/partition_allocator:partition_alloc" ]
++ }
++
++ sources = [
++ "allocator_impls.cc",
++ "allocator_impls.h",
++ ]
++ deps = [ ":buildflags" ]
++ visibility = [ ":*" ]
++ }
++ }
++
++ static_library("alloc_error_handler_impl") {
++ sources = [
++ # `alias.*`, `compiler_specific.h`, and `immediate_crash.*` have been
++ # copied from `//base`.
++ # TODO(crbug.com/40279749): Avoid duplication / reuse code.
++ "alias.cc",
++ "alias.h",
++ "alloc_error_handler_impl.cc",
++ "alloc_error_handler_impl.h",
++ "compiler_specific.h",
++ "immediate_crash.h",
++ ]
++ visibility = [ ":*" ]
++ }
++}
diff --git a/www/chromium/files/patch-build_rust_allocator_DEPS b/www/chromium/files/patch-build_rust_allocator_DEPS
new file mode 100644
index 000000000000..74bb2d6c2421
--- /dev/null
+++ b/www/chromium/files/patch-build_rust_allocator_DEPS
@@ -0,0 +1,12 @@
+--- build/rust/allocator/DEPS.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/DEPS
+@@ -0,0 +1,9 @@
++include_rules = [
++ "-base",
++]
++
++specific_include_rules = {
++ "allocator_impls.cc" : [
++ "+partition_alloc"
++ ]
++}
diff --git a/www/chromium/files/patch-build_rust_allocator_alias.cc b/www/chromium/files/patch-build_rust_allocator_alias.cc
new file mode 100644
index 000000000000..5280641f27e1
--- /dev/null
+++ b/www/chromium/files/patch-build_rust_allocator_alias.cc
@@ -0,0 +1,25 @@
+--- build/rust/allocator/alias.cc.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/alias.cc
+@@ -0,0 +1,22 @@
++// Copyright 2023 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++// This file has been copied from //base/debug/alias.cc ( additionally the APIs
++// were moved into the `build_rust_std` namespace).
++//
++// TODO(crbug.com/40279749): Avoid code duplication / reuse code.
++
++#include "build/rust/allocator/alias.h"
++
++#include "build/rust/allocator/compiler_specific.h"
++
++namespace build_rust_std {
++namespace debug {
++
++// This file/function should be excluded from LTO/LTCG to ensure that the
++// compiler can't see this function's implementation when compiling calls to it.
++NOINLINE void Alias(const void* var) {}
++
++} // namespace debug
++} // namespace build_rust_std
diff --git a/www/chromium/files/patch-build_rust_allocator_alias.h b/www/chromium/files/patch-build_rust_allocator_alias.h
new file mode 100644
index 000000000000..6530c6ae8779
--- /dev/null
+++ b/www/chromium/files/patch-build_rust_allocator_alias.h
@@ -0,0 +1,40 @@
+--- build/rust/allocator/alias.h.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/alias.h
+@@ -0,0 +1,37 @@
++// Copyright 2023 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++// This file has been copied from //base/debug/alias.h (and then trimmed to just
++// the APIs / macros needed by //build/rust/std; additionally the APIs were
++// moved into the `build_rust_std` namespace).
++//
++// TODO(crbug.com/40279749): Avoid code duplication / reuse code.
++
++#ifndef BUILD_RUST_ALLOCATOR_ALIAS_H_
++#define BUILD_RUST_ALLOCATOR_ALIAS_H_
++
++#include <stddef.h>
++
++namespace build_rust_std {
++namespace debug {
++
++// Make the optimizer think that |var| is aliased. This can be used to prevent a
++// local variable from being optimized out (which is something that
++// `NO_CODE_FOLDING` macro definition below depends on). See
++// //base/debug/alias.h for more details.
++void Alias(const void* var);
++
++} // namespace debug
++
++} // namespace build_rust_std
++
++// Prevent code folding (where a linker identifies functions that are
++// bit-identical and overlays them, which saves space but it leads to confusing
++// call stacks because multiple symbols are at the same address). See
++// //base/debug/alias.h for more details.
++#define NO_CODE_FOLDING() \
++ const int line_number = __LINE__; \
++ build_rust_std::debug::Alias(&line_number)
++
++#endif // BUILD_RUST_ALLOCATOR_ALIAS_H_
diff --git a/www/chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.cc b/www/chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.cc
new file mode 100644
index 000000000000..048c267abefa
--- /dev/null
+++ b/www/chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.cc
@@ -0,0 +1,20 @@
+--- build/rust/allocator/alloc_error_handler_impl.cc.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/alloc_error_handler_impl.cc
+@@ -0,0 +1,17 @@
++// Copyright 2025 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "build/rust/allocator/alloc_error_handler_impl.h"
++
++#include "build/rust/allocator/alias.h"
++#include "build/rust/allocator/immediate_crash.h"
++
++namespace rust_allocator_internal {
++
++void alloc_error_handler_impl() {
++ NO_CODE_FOLDING();
++ IMMEDIATE_CRASH();
++}
++
++} // namespace rust_allocator_internal
diff --git a/www/chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.h b/www/chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.h
new file mode 100644
index 000000000000..887ea602b027
--- /dev/null
+++ b/www/chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.h
@@ -0,0 +1,24 @@
+--- build/rust/allocator/alloc_error_handler_impl.h.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/alloc_error_handler_impl.h
+@@ -0,0 +1,21 @@
++// Copyright 2025 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#ifndef BUILD_RUST_ALLOCATOR_ALLOC_ERROR_HANDLER_IMPL_H_
++#define BUILD_RUST_ALLOCATOR_ALLOC_ERROR_HANDLER_IMPL_H_
++
++// This header exposes to Rust a C++ implementation of quickly crashing after an
++// allocation error. (The API below is called from `__rust_alloc_error_handler`
++// in `lib.rs`.)
++//
++// TODO(lukasza): Investigate if we can delete this `.h` / `.cc` and just call
++// `std::process::abort()` (or something else?) directly from `.rs`. The main
++// open question is how much we care about `NO_CODE_FOLDING`.
++namespace rust_allocator_internal {
++
++void alloc_error_handler_impl();
++
++} // namespace rust_allocator_internal
++
++#endif // BUILD_RUST_ALLOCATOR_ALLOC_ERROR_HANDLER_IMPL_H_
diff --git a/www/chromium/files/patch-build_rust_allocator_allocator__impls.cc b/www/chromium/files/patch-build_rust_allocator_allocator__impls.cc
new file mode 100644
index 000000000000..94e04d7b966a
--- /dev/null
+++ b/www/chromium/files/patch-build_rust_allocator_allocator__impls.cc
@@ -0,0 +1,108 @@
+--- build/rust/allocator/allocator_impls.cc.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/allocator_impls.cc
+@@ -0,0 +1,105 @@
++// Copyright 2021 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "build/rust/allocator/allocator_impls.h"
++
++#ifdef UNSAFE_BUFFERS_BUILD
++// TODO(crbug.com/390223051): Remove C-library calls to fix the errors.
++#pragma allow_unsafe_libc_calls
++#endif
++
++#include <cstddef>
++#include <cstring>
++
++#include "build/build_config.h"
++#include "build/rust/allocator/buildflags.h"
++
++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC)
++#include "partition_alloc/partition_alloc_constants.h" // nogncheck
++#include "partition_alloc/shim/allocator_shim.h" // nogncheck
++#elif BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC)
++#include <cstdlib>
++#endif
++
++namespace rust_allocator_internal {
++
++unsigned char* alloc(size_t size, size_t align) {
++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC)
++ // PartitionAlloc will crash if given an alignment larger than this.
++ if (align > partition_alloc::internal::kMaxSupportedAlignment) {
++ return nullptr;
++ }
++
++ // We use unchecked allocation paths in PartitionAlloc rather than going
++ // through its shims in `malloc()` etc so that we can support fallible
++ // allocation paths such as Vec::try_reserve without crashing on allocation
++ // failure.
++ if (align <= alignof(std::max_align_t)) {
++ return static_cast<unsigned char*>(allocator_shim::UncheckedAlloc(size));
++ } else {
++ return static_cast<unsigned char*>(
++ allocator_shim::UncheckedAlignedAlloc(size, align));
++ }
++#elif BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC)
++ return static_cast<unsigned char*>(_aligned_malloc(size, align));
++#else
++#error This configuration is not supported.
++#endif
++}
++
++void dealloc(unsigned char* p, size_t size, size_t align) {
++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC)
++ if (align <= alignof(std::max_align_t)) {
++ allocator_shim::UncheckedFree(p);
++ } else {
++ allocator_shim::UncheckedAlignedFree(p);
++ }
++#elif BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC)
++ return _aligned_free(p);
++#else
++#error This configuration is not supported.
++#endif
++}
++
++unsigned char* realloc(unsigned char* p,
++ size_t old_size,
++ size_t align,
++ size_t new_size) {
++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC)
++ // We use unchecked allocation paths in PartitionAlloc rather than going
++ // through its shims in `malloc()` etc so that we can support fallible
++ // allocation paths such as Vec::try_reserve without crashing on allocation
++ // failure.
++ if (align <= alignof(std::max_align_t)) {
++ return static_cast<unsigned char*>(
++ allocator_shim::UncheckedRealloc(p, new_size));
++ } else {
++ return static_cast<unsigned char*>(
++ allocator_shim::UncheckedAlignedRealloc(p, new_size, align));
++ }
++#elif BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC)
++ return static_cast<unsigned char*>(_aligned_realloc(p, new_size, align));
++#else
++#error This configuration is not supported.
++#endif
++}
++
++unsigned char* alloc_zeroed(size_t size, size_t align) {
++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC) || \
++ BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC)
++ // TODO(danakj): When RUST_ALLOCATOR_USES_PARTITION_ALLOC is true, it's
++ // possible that a partition_alloc::UncheckedAllocZeroed() call would perform
++ // better than partition_alloc::UncheckedAlloc() + memset. But there is no
++ // such API today. See b/342251590.
++ unsigned char* p = alloc(size, align);
++ if (p) {
++ memset(p, 0, size);
++ }
++ return p;
++#else
++#error This configuration is not supported.
++#endif
++}
++
++} // namespace rust_allocator_internal
diff --git a/www/chromium/files/patch-build_rust_allocator_allocator__impls.h b/www/chromium/files/patch-build_rust_allocator_allocator__impls.h
new file mode 100644
index 000000000000..9249cdc938d2
--- /dev/null
+++ b/www/chromium/files/patch-build_rust_allocator_allocator__impls.h
@@ -0,0 +1,27 @@
+--- build/rust/allocator/allocator_impls.h.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/allocator_impls.h
+@@ -0,0 +1,24 @@
++// Copyright 2025 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#ifndef BUILD_RUST_ALLOCATOR_ALLOCATOR_IMPLS_H_
++#define BUILD_RUST_ALLOCATOR_ALLOCATOR_IMPLS_H_
++
++#include <cstddef>
++
++// This header exposes a C++ allocator (e.g. PartitionAlloc) to Rust.
++// The APIs below are called from `impl GlobalAlloc` in `lib.rs`.
++namespace rust_allocator_internal {
++
++unsigned char* alloc(size_t size, size_t align);
++void dealloc(unsigned char* p, size_t size, size_t align);
++unsigned char* realloc(unsigned char* p,
++ size_t old_size,
++ size_t align,
++ size_t new_size);
++unsigned char* alloc_zeroed(size_t size, size_t align);
++
++} // namespace rust_allocator_internal
++
++#endif // BUILD_RUST_ALLOCATOR_ALLOCATOR_IMPLS_H_
diff --git a/www/chromium/files/patch-build_rust_allocator_allocator__impls__ffi.rs b/www/chromium/files/patch-build_rust_allocator_allocator__impls__ffi.rs
new file mode 100644
index 000000000000..8f0baf1576ce
--- /dev/null
+++ b/www/chromium/files/patch-build_rust_allocator_allocator__impls__ffi.rs
@@ -0,0 +1,22 @@
+--- build/rust/allocator/allocator_impls_ffi.rs.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/allocator_impls_ffi.rs
+@@ -0,0 +1,19 @@
++// Copyright 2025 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++//! FFI for `allocator_impls.h` is in a separate `.rs` file/module to
++//! better support conditional compilation (these functions are only
++//! used under `#[cfg(rust_allocator_uses_allocator_impls_h)]`.
++
++#[cxx::bridge(namespace = "rust_allocator_internal")]
++pub mod ffi {
++ extern "C++" {
++ include!("build/rust/allocator/allocator_impls.h");
++
++ unsafe fn alloc(size: usize, align: usize) -> *mut u8;
++ unsafe fn dealloc(p: *mut u8, size: usize, align: usize);
++ unsafe fn realloc(p: *mut u8, old_size: usize, align: usize, new_size: usize) -> *mut u8;
++ unsafe fn alloc_zeroed(size: usize, align: usize) -> *mut u8;
++ }
++}
diff --git a/www/chromium/files/patch-build_rust_allocator_compiler__specific.h b/www/chromium/files/patch-build_rust_allocator_compiler__specific.h
new file mode 100644
index 000000000000..7feb0c739d79
--- /dev/null
+++ b/www/chromium/files/patch-build_rust_allocator_compiler__specific.h
@@ -0,0 +1,41 @@
+--- build/rust/allocator/compiler_specific.h.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/compiler_specific.h
+@@ -0,0 +1,38 @@
++// Copyright 2023 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++// This file has been copied from //base/compiler_specific.h (and then
++// significantly trimmed to just the APIs / macros needed by //build/rust/std).
++//
++// TODO(crbug.com/40279749): Avoid code duplication / reuse code.
++
++#ifndef BUILD_RUST_ALLOCATOR_COMPILER_SPECIFIC_H_
++#define BUILD_RUST_ALLOCATOR_COMPILER_SPECIFIC_H_
++
++#include "build/build_config.h"
++
++#if defined(COMPILER_MSVC) && !defined(__clang__)
++#error "Only clang-cl is supported on Windows, see https://crbug.com/988071"
++#endif
++
++#if defined(__has_attribute)
++#define HAS_ATTRIBUTE(x) __has_attribute(x)
++#else
++#define HAS_ATTRIBUTE(x) 0
++#endif
++
++// Annotate a function indicating it should not be inlined.
++// Use like:
++// NOINLINE void DoStuff() { ... }
++#if defined(__clang__) && HAS_ATTRIBUTE(noinline)
++#define NOINLINE [[clang::noinline]]
++#elif defined(COMPILER_GCC) && HAS_ATTRIBUTE(noinline)
++#define NOINLINE __attribute__((noinline))
++#elif defined(COMPILER_MSVC)
++#define NOINLINE __declspec(noinline)
++#else
++#define NOINLINE
++#endif
++
++#endif // BUILD_RUST_ALLOCATOR_COMPILER_SPECIFIC_H_
diff --git a/www/chromium/files/patch-build_rust_allocator_immediate__crash.h b/www/chromium/files/patch-build_rust_allocator_immediate__crash.h
new file mode 100644
index 000000000000..7ab0f9d9c34c
--- /dev/null
+++ b/www/chromium/files/patch-build_rust_allocator_immediate__crash.h
@@ -0,0 +1,174 @@
+--- build/rust/allocator/immediate_crash.h.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/immediate_crash.h
+@@ -0,0 +1,171 @@
++// Copyright 2021 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++// This file has been copied from //base/immediate_crash.h.
++// TODO(crbug.com/40279749): Avoid code duplication / reuse code.
++
++#ifndef BUILD_RUST_ALLOCATOR_IMMEDIATE_CRASH_H_
++#define BUILD_RUST_ALLOCATOR_IMMEDIATE_CRASH_H_
++
++#include "build/build_config.h"
++
++// Crashes in the fastest possible way with no attempt at logging.
++// There are several constraints; see http://crbug.com/664209 for more context.
++//
++// - TRAP_SEQUENCE_() must be fatal. It should not be possible to ignore the
++// resulting exception or simply hit 'continue' to skip over it in a debugger.
++// - Different instances of TRAP_SEQUENCE_() must not be folded together, to
++// ensure crash reports are debuggable. Unlike __builtin_trap(), asm volatile
++// blocks will not be folded together.
++// Note: TRAP_SEQUENCE_() previously required an instruction with a unique
++// nonce since unlike clang, GCC folds together identical asm volatile
++// blocks.
++// - TRAP_SEQUENCE_() must produce a signal that is distinct from an invalid
++// memory access.
++// - TRAP_SEQUENCE_() must be treated as a set of noreturn instructions.
++// __builtin_unreachable() is used to provide that hint here. clang also uses
++// this as a heuristic to pack the instructions in the function epilogue to
++// improve code density.
++//
++// Additional properties that are nice to have:
++// - TRAP_SEQUENCE_() should be as compact as possible.
++// - The first instruction of TRAP_SEQUENCE_() should not change, to avoid
++// shifting crash reporting clusters. As a consequence of this, explicit
++// assembly is preferred over intrinsics.
++// Note: this last bullet point may no longer be true, and may be removed in
++// the future.
++
++// Note: TRAP_SEQUENCE Is currently split into two macro helpers due to the fact
++// that clang emits an actual instruction for __builtin_unreachable() on certain
++// platforms (see https://crbug.com/958675). In addition, the int3/bkpt/brk will
++// be removed in followups, so splitting it up like this now makes it easy to
++// land the followups.
++
++#if defined(COMPILER_GCC)
++
++#if BUILDFLAG(IS_NACL)
++
++// Crash report accuracy is not guaranteed on NaCl.
++#define TRAP_SEQUENCE1_() __builtin_trap()
++#define TRAP_SEQUENCE2_() asm volatile("")
++
++#elif defined(ARCH_CPU_X86_FAMILY)
++
++// TODO(crbug.com/40625592): In theory, it should be possible to use just
++// int3. However, there are a number of crashes with SIGILL as the exception
++// code, so it seems likely that there's a signal handler that allows execution
++// to continue after SIGTRAP.
++#define TRAP_SEQUENCE1_() asm volatile("int3")
++
++#if BUILDFLAG(IS_APPLE)
++// Intentionally empty: __builtin_unreachable() is always part of the sequence
++// (see IMMEDIATE_CRASH below) and already emits a ud2 on Mac.
++#define TRAP_SEQUENCE2_() asm volatile("")
++#else
++#define TRAP_SEQUENCE2_() asm volatile("ud2")
++#endif // BUILDFLAG(IS_APPLE)
++
++#elif defined(ARCH_CPU_ARMEL)
++
++// bkpt will generate a SIGBUS when running on armv7 and a SIGTRAP when running
++// as a 32 bit userspace app on arm64. There doesn't seem to be any way to
++// cause a SIGTRAP from userspace without using a syscall (which would be a
++// problem for sandboxing).
++// TODO(crbug.com/40625592): Remove bkpt from this sequence.
++#define TRAP_SEQUENCE1_() asm volatile("bkpt #0")
++#define TRAP_SEQUENCE2_() asm volatile("udf #0")
++
++#elif defined(ARCH_CPU_ARM64)
++
++// This will always generate a SIGTRAP on arm64.
++// TODO(crbug.com/40625592): Remove brk from this sequence.
++#define TRAP_SEQUENCE1_() asm volatile("brk #0")
++#define TRAP_SEQUENCE2_() asm volatile("hlt #0")
++
++#else
++
++// Crash report accuracy will not be guaranteed on other architectures, but at
++// least this will crash as expected.
++#define TRAP_SEQUENCE1_() __builtin_trap()
++#define TRAP_SEQUENCE2_() asm volatile("")
++
++#endif // ARCH_CPU_*
++
++#elif defined(COMPILER_MSVC)
++
++#if !defined(__clang__)
++
++// MSVC x64 doesn't support inline asm, so use the MSVC intrinsic.
++#define TRAP_SEQUENCE1_() __debugbreak()
++#define TRAP_SEQUENCE2_()
++
++#elif defined(ARCH_CPU_ARM64)
++
++// Windows ARM64 uses "BRK #F000" as its breakpoint instruction, and
++// __debugbreak() generates that in both VC++ and clang.
++#define TRAP_SEQUENCE1_() __debugbreak()
++// Intentionally empty: __builtin_unreachable() is always part of the sequence
++// (see IMMEDIATE_CRASH below) and already emits a ud2 on Win64,
++// https://crbug.com/958373
++#define TRAP_SEQUENCE2_() __asm volatile("")
++
++#else
++
++#define TRAP_SEQUENCE1_() asm volatile("int3")
++#define TRAP_SEQUENCE2_() asm volatile("ud2")
++
++#endif // __clang__
++
++#else
++
++#error No supported trap sequence!
++
++#endif // COMPILER_GCC
++
++#define TRAP_SEQUENCE_() \
++ do { \
++ TRAP_SEQUENCE1_(); \
++ TRAP_SEQUENCE2_(); \
++ } while (false)
++
++// CHECK() and the trap sequence can be invoked from a constexpr function.
++// This could make compilation fail on GCC, as it forbids directly using inline
++// asm inside a constexpr function. However, it allows calling a lambda
++// expression including the same asm.
++// The side effect is that the top of the stacktrace will not point to the
++// calling function, but to this anonymous lambda. This is still useful as the
++// full name of the lambda will typically include the name of the function that
++// calls CHECK() and the debugger will still break at the right line of code.
++#if !defined(COMPILER_GCC) || defined(__clang__)
++
++#define WRAPPED_TRAP_SEQUENCE_() TRAP_SEQUENCE_()
++
++#else
++
++#define WRAPPED_TRAP_SEQUENCE_() \
++ do { \
++ [] { TRAP_SEQUENCE_(); }(); \
++ } while (false)
++
++#endif // !defined(COMPILER_GCC) || defined(__clang__)
++
++#if defined(__clang__) || defined(COMPILER_GCC)
++
++// __builtin_unreachable() hints to the compiler that this is noreturn and can
++// be packed in the function epilogue.
++#define IMMEDIATE_CRASH() \
++ ({ \
++ WRAPPED_TRAP_SEQUENCE_(); \
++ __builtin_unreachable(); \
++ })
++
++#else
++
++// This is supporting non-chromium user of logging.h to build with MSVC, like
++// pdfium. On MSVC there is no __builtin_unreachable().
++#define IMMEDIATE_CRASH() WRAPPED_TRAP_SEQUENCE_()
++
++#endif // defined(__clang__) || defined(COMPILER_GCC)
++
++#endif // BUILD_RUST_ALLOCATOR_IMMEDIATE_CRASH_H_
diff --git a/www/chromium/files/patch-build_rust_allocator_lib.rs b/www/chromium/files/patch-build_rust_allocator_lib.rs
new file mode 100644
index 000000000000..89fddf278294
--- /dev/null
+++ b/www/chromium/files/patch-build_rust_allocator_lib.rs
@@ -0,0 +1,122 @@
+--- build/rust/allocator/lib.rs.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/lib.rs
+@@ -0,0 +1,119 @@
++// Copyright 2025 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++//! Define the allocator that Rust code in Chrome should use.
++//!
++//! Any final artifact that depends on this crate, even transitively, will use
++//! the allocator defined here.
++//!
++//! List of known issues:
++//!
++//! 1. We'd like to use PartitionAlloc on Windows, but the stdlib uses Windows
++//! heap functions directly that PartitionAlloc can not intercept.
++//! 2. We'd like `Vec::try_reserve` to fail at runtime on Linux instead of
++//! crashing in malloc() where PartitionAlloc replaces that function.
++
++// Required to apply weak linkage to symbols.
++//
++// TODO(https://crbug.com/410596442): Stop using unstable features here.
++// https://github.com/rust-lang/rust/issues/29603 tracks stabilization of the `linkage` feature.
++#![feature(linkage)]
++// Required to apply `#[rustc_std_internal_symbol]` to our alloc error handler
++// so the name is correctly mangled as rustc expects.
++//
++// TODO(https://crbug.com/410596442): Stop using internal features here.
++#![allow(internal_features)]
++#![feature(rustc_attrs)]
++
++// This module is in a separate source file to avoid having to teach `cxxbridge`
++// about conditional compilation.
++#[cfg(rust_allocator_uses_allocator_impls_h)]
++mod allocator_impls_ffi;
++
++/// Module that provides `#[global_allocator]` / `GlobalAlloc` interface for
++/// using an allocator from C++.
++#[cfg(rust_allocator_uses_allocator_impls_h)]
++mod cpp_allocator {
++ use super::allocator_impls_ffi::ffi;
++ use std::alloc::{GlobalAlloc, Layout};
++
++ struct Allocator;
++
++ unsafe impl GlobalAlloc for Allocator {
++ unsafe fn alloc(&self, layout: Layout) -> *mut u8 {
++ unsafe { ffi::alloc(layout.size(), layout.align()) }
++ }
++
++ unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) {
++ unsafe {
++ ffi::dealloc(ptr, layout.size(), layout.align());
++ }
++ }
++
++ unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut u8 {
++ unsafe { ffi::alloc_zeroed(layout.size(), layout.align()) }
++ }
++
++ unsafe fn realloc(&self, ptr: *mut u8, layout: Layout, new_size: usize) -> *mut u8 {
++ unsafe { ffi::realloc(ptr, layout.size(), layout.align(), new_size) }
++ }
++ }
++
++ #[global_allocator]
++ static GLOBAL: Allocator = Allocator;
++}
++
++/// Module that provides `#[global_allocator]` / `GlobalAlloc` interface for
++/// using the default Rust allocator.
++#[cfg(not(rust_allocator_uses_allocator_impls_h))]
++mod rust_allocator {
++ #[global_allocator]
++ static GLOBAL: std::alloc::System = std::alloc::System;
++}
++
++/// Module that provides global symbols that are needed both by `cpp_allocator`
++/// and `rust_allocator`.
++///
++/// When `rustc` drives linking, then it will define the symbols below. But
++/// Chromium only uses `rustc` to link Rust-only executables (e.g. `build.rs`
++/// scripts) and otherwise uses a non-Rust linker. This is why we have to
++/// manually define a few symbols below. We define those symbols
++/// as "weak" symbols, so that Rust-provided symbols "win" in case where Rust
++/// actually does drive the linking. This hack works (not only for Chromium,
++/// but also for google3 and other projects), but isn't officially supported by
++/// `rustc`.
++///
++/// TODO(https://crbug.com/410596442): Stop using internal features here.
++mod both_allocators {
++ /// As part of rustc's contract for using `#[global_allocator]` without
++ /// rustc-generated shims we must define this symbol, since we are opting in
++ /// to unstable functionality. See https://github.com/rust-lang/rust/issues/123015
++ #[no_mangle]
++ #[linkage = "weak"]
++ static __rust_no_alloc_shim_is_unstable: u8 = 0;
++
++ // Mangle the symbol name as rustc expects.
++ #[rustc_std_internal_symbol]
++ #[allow(non_upper_case_globals)]
++ #[linkage = "weak"]
++ static __rust_alloc_error_handler_should_panic: u8 = 0;
++
++ // Mangle the symbol name as rustc expects.
++ #[rustc_std_internal_symbol]
++ #[allow(non_upper_case_globals)]
++ #[linkage = "weak"]
++ fn __rust_alloc_error_handler(_size: usize, _align: usize) {
++ // TODO(lukasza): Investigate if we can just call `std::process::abort()` here.
++ // (Not really _needed_, but it could simplify code a little bit.)
++ unsafe { ffi::alloc_error_handler_impl() }
++ }
++
++ #[cxx::bridge(namespace = "rust_allocator_internal")]
++ mod ffi {
++ extern "C++" {
++ include!("build/rust/allocator/alloc_error_handler_impl.h");
++ unsafe fn alloc_error_handler_impl();
++ }
++ }
++}
diff --git a/www/chromium/files/patch-build_rust_cargo__crate.gni b/www/chromium/files/patch-build_rust_cargo__crate.gni
new file mode 100644
index 000000000000..a1590f727aa3
--- /dev/null
+++ b/www/chromium/files/patch-build_rust_cargo__crate.gni
@@ -0,0 +1,25 @@
+--- build/rust/cargo_crate.gni.orig 2025-05-20 09:16:26 UTC
++++ build/rust/cargo_crate.gni
+@@ -259,6 +259,12 @@ template("cargo_crate") {
+ # Don't import the `chromium` crate into third-party code.
+ no_chromium_prelude = true
+
++ # Don't depend on the chrome-specific #[global_allocator] crate from
++ # third-party code. This avoids some dependency cycle issues. The allocator
++ # crate will still be used if it exists anywhere in the dependency graph for
++ # a given linked artifact.
++ no_allocator_crate = true
++
+ rustc_metadata = _rustc_metadata
+
+ # TODO(crbug.com/40259764): don't default to true. This requires changes to
+@@ -482,6 +488,9 @@ template("cargo_crate") {
+
+ # Don't import the `chromium` crate into third-party code.
+ no_chromium_prelude = true
++
++ # Build scripts do not need to link to chrome's allocator.
++ no_allocator_crate = true
+
+ # The ${_build_script_name}_output target looks for the exe in this
+ # location. Due to how the Windows component build works, this has to
diff --git a/www/chromium/files/patch-build_rust_rust__macro.gni b/www/chromium/files/patch-build_rust_rust__macro.gni
new file mode 100644
index 000000000000..0dafc3819aa1
--- /dev/null
+++ b/www/chromium/files/patch-build_rust_rust__macro.gni
@@ -0,0 +1,12 @@
+--- build/rust/rust_macro.gni.orig 2025-05-20 09:16:26 UTC
++++ build/rust/rust_macro.gni
+@@ -16,6 +16,9 @@ template("rust_macro") {
+ forward_variables_from(invoker, TESTONLY_AND_VISIBILITY)
+ proc_macro_configs = invoker.configs
+ target_type = "rust_proc_macro"
++
++ # Macros are loaded by rustc and shouldn't use chrome's allocation routines.
++ no_allocator_crate = true
+ }
+ }
+
diff --git a/www/chromium/files/patch-build_rust_rust__target.gni b/www/chromium/files/patch-build_rust_rust__target.gni
new file mode 100644
index 000000000000..f4ad6f04fc45
--- /dev/null
+++ b/www/chromium/files/patch-build_rust_rust__target.gni
@@ -0,0 +1,13 @@
+--- build/rust/rust_target.gni.orig 2025-05-20 09:16:26 UTC
++++ build/rust/rust_target.gni
+@@ -339,6 +339,10 @@ template("rust_target") {
+ _rust_deps += [ "//build/rust/std" ]
+ }
+
++ if (!defined(invoker.no_allocator_crate) || !invoker.no_allocator_crate) {
++ _rust_deps += [ "//build/rust/allocator" ]
++ }
++
+ if (_build_unit_tests) {
+ _unit_test_target = "${_target_name}_unittests"
+ if (defined(invoker.unit_test_target)) {
diff --git a/www/chromium/files/patch-build_rust_std_BUILD.gn b/www/chromium/files/patch-build_rust_std_BUILD.gn
index 0a5335d58d48..c6c2801bd47d 100644
--- a/www/chromium/files/patch-build_rust_std_BUILD.gn
+++ b/www/chromium/files/patch-build_rust_std_BUILD.gn
@@ -1,6 +1,58 @@
---- build/rust/std/BUILD.gn.orig 2025-04-05 13:54:50 UTC
+--- build/rust/std/BUILD.gn.orig 2025-05-20 09:16:26 UTC
+++ build/rust/std/BUILD.gn
-@@ -89,13 +89,20 @@ if (toolchain_has_rust) {
+@@ -15,51 +15,12 @@
+ # allocator functions to PartitionAlloc when `use_partition_alloc_as_malloc` is
+ # true, so that Rust and C++ use the same allocator backend.
+
+-import("//build/buildflag_header.gni")
+ import("//build/config/compiler/compiler.gni")
+ import("//build/config/coverage/coverage.gni")
+ import("//build/config/rust.gni")
+ import("//build/config/sanitizers/sanitizers.gni")
+
+-rust_allocator_uses_partition_alloc = false
+-if (build_with_chromium) {
+- import("//base/allocator/partition_allocator/partition_alloc.gni")
+- rust_allocator_uses_partition_alloc = use_partition_alloc_as_malloc
+-}
+-
+-buildflag_header("buildflags") {
+- header = "buildflags.h"
+- flags = [
+- "RUST_ALLOCATOR_USES_PARTITION_ALLOC=$rust_allocator_uses_partition_alloc",
+- ]
+- visibility = [ ":*" ]
+-}
+-
+ if (toolchain_has_rust) {
+- # If clang performs the link step, we need to provide the allocator symbols
+- # that are normally injected by rustc during linking.
+- #
+- # We also "happen to" use this to redirect allocations to PartitionAlloc,
+- # though that would be better done through a #[global_allocator] crate (see
+- # above).
+- source_set("remap_alloc") {
+- public_deps = []
+- if (rust_allocator_uses_partition_alloc) {
+- public_deps += [ "//base/allocator/partition_allocator:partition_alloc" ]
+- }
+- deps = [ ":buildflags" ]
+- sources = [
+- # `alias.*`, `compiler_specific.h`, and `immediate_crash.*` have been
+- # copied from `//base`.
+- # TODO(crbug.com/40279749): Avoid duplication / reuse code.
+- "alias.cc",
+- "alias.h",
+- "compiler_specific.h",
+- "immediate_crash.h",
+- "remap_alloc.cc",
+- ]
+- }
+-
+ # List of Rust stdlib rlibs which are present in the official Rust toolchain
+ # we are using from the Android team. This is usually a version or two behind
+ # nightly. Generally this matches the toolchain we build ourselves, but if
+@@ -89,13 +50,20 @@ if (toolchain_has_rust) {
# These are no longer present in the Windows toolchain.
stdlib_files += [
"addr2line",
@@ -22,7 +74,7 @@
}
if (toolchain_for_rust_host_build_tools) {
-@@ -115,7 +122,6 @@ if (toolchain_has_rust) {
+@@ -115,7 +83,6 @@ if (toolchain_has_rust) {
# don't need to pass to the C++ linker because they're used for specialized
# purposes.
skip_stdlib_files = [
@@ -30,3 +82,25 @@
"rustc_std_workspace_alloc",
"rustc_std_workspace_core",
"rustc_std_workspace_std",
+@@ -269,8 +236,6 @@ if (toolchain_has_rust) {
+ foreach(libname, stdlib_files + skip_stdlib_files) {
+ deps += [ "rules:$libname" ]
+ }
+-
+- public_deps = [ ":remap_alloc" ]
+ }
+ } else {
+ action("find_stdlib") {
+@@ -396,12 +361,6 @@ if (toolchain_has_rust) {
+ ":stdlib_public_dependent_libs",
+ ]
+ deps = [ ":prebuilt_rustc_copy_to_sysroot" ]
+-
+- # The host builds tools toolchain supports Rust only and does not use
+- # the allocator remapping to point it to PartitionAlloc.
+- if (!toolchain_for_rust_host_build_tools) {
+- deps += [ ":remap_alloc" ]
+- }
+ }
+ }
+ }
diff --git a/www/cinny/Makefile b/www/cinny/Makefile
index 4805f2e2c7b0..e3282ad16f02 100644
--- a/www/cinny/Makefile
+++ b/www/cinny/Makefile
@@ -1,6 +1,6 @@
PORTNAME= cinny
DISTVERSIONPREFIX= v
-DISTVERSION= 4.7.0
+DISTVERSION= 4.7.1
CATEGORIES= www
MASTER_SITES= https://github.com/ajbura/${PORTNAME}/releases/download/v${PORTVERSION}/
diff --git a/www/cinny/distinfo b/www/cinny/distinfo
index 34f8cbc0d4f5..39d874536d88 100644
--- a/www/cinny/distinfo
+++ b/www/cinny/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1747576427
-SHA256 (cinny-v4.7.0.tar.gz) = 99bf0f035bc47d2838ec284075e1a32a746ac43511f7120a983d147efbf7b9b9
-SIZE (cinny-v4.7.0.tar.gz) = 5582987
+TIMESTAMP = 1747849346
+SHA256 (cinny-v4.7.1.tar.gz) = e6f094c108f73abe7c3236323c9533d4538aba5a23087819d6fa363e134e21b1
+SIZE (cinny-v4.7.1.tar.gz) = 5585782
diff --git a/www/cinny/pkg-plist b/www/cinny/pkg-plist
index 9e01b8b43142..0af2fbc87459 100644
--- a/www/cinny/pkg-plist
+++ b/www/cinny/pkg-plist
@@ -1,5 +1,5 @@
-%%WWWDIR%%/assets/ReactPrism-BerGavVz.js
-%%WWWDIR%%/assets/ReactPrism-BerGavVz.js.map
+%%WWWDIR%%/assets/ReactPrism-CLx47MBq.js
+%%WWWDIR%%/assets/ReactPrism-CLx47MBq.js.map
%%WWWDIR%%/assets/ReactPrism-GaPGjdOJ.css
%%WWWDIR%%/assets/Twemoji.Mozilla.v15.1.0-CM1RS90w.woff2
%%WWWDIR%%/assets/Twemoji.Mozilla.v15.1.0-DHQZm25T.ttf
@@ -14,13 +14,13 @@
%%WWWDIR%%/assets/apple-touch-icon-72x72-BiCSJ3dR.png
%%WWWDIR%%/assets/apple-touch-icon-76x76-GfaoCnSQ.png
%%WWWDIR%%/assets/favicon-5KspoOBy.ico
-%%WWWDIR%%/assets/index-4OWSgzB9.js
-%%WWWDIR%%/assets/index-4OWSgzB9.js.map
%%WWWDIR%%/assets/index-B9fWrEk-.js
%%WWWDIR%%/assets/index-B9fWrEk-.js.map
%%WWWDIR%%/assets/index-BIQoOb9a.css
-%%WWWDIR%%/assets/index-CT60ZVgd.js
-%%WWWDIR%%/assets/index-CT60ZVgd.js.map
+%%WWWDIR%%/assets/index-BcblH8FP.js
+%%WWWDIR%%/assets/index-BcblH8FP.js.map
+%%WWWDIR%%/assets/index-iMWQwtV4.js
+%%WWWDIR%%/assets/index-iMWQwtV4.js.map
%%WWWDIR%%/assets/inter-cyrillic-ext-variable-wghtOnly-normal-CBYe6022.woff2
%%WWWDIR%%/assets/inter-cyrillic-variable-wghtOnly-normal-DHeaknKs.woff2
%%WWWDIR%%/assets/inter-greek-ext-variable-wghtOnly-normal-vpOIeGzY.woff2
@@ -31,8 +31,8 @@
%%WWWDIR%%/assets/invite-DROg5x7-.ogg
%%WWWDIR%%/assets/matrix_sdk_crypto_wasm_bg-BKhMui86.wasm
%%WWWDIR%%/assets/notification-EtLMRd0T.ogg
-%%WWWDIR%%/assets/pdf-Gqh3aXa8.js
-%%WWWDIR%%/assets/pdf-Gqh3aXa8.js.map
+%%WWWDIR%%/assets/pdf-CadpnnX8.js
+%%WWWDIR%%/assets/pdf-CadpnnX8.js.map
%%WWWDIR%%/config.json.example
%%WWWDIR%%/index.html
%%WWWDIR%%/manifest.json
diff --git a/www/codeberg-pages-server/Makefile b/www/codeberg-pages-server/Makefile
index 7dc38257e12b..07adbd97af72 100644
--- a/www/codeberg-pages-server/Makefile
+++ b/www/codeberg-pages-server/Makefile
@@ -1,6 +1,7 @@
PORTNAME= codeberg-pages-server
DISTVERSIONPREFIX= v
DISTVERSION= 6.2.1
+PORTREVISION= 1
CATEGORIES= www
MASTER_SITES= https://codeberg.org/Codeberg/pages-server/archive/
DISTFILES= ${DISTVERSIONFULL}.zip
diff --git a/www/colly/Makefile b/www/colly/Makefile
index 710af33e14c0..21df363f5520 100644
--- a/www/colly/Makefile
+++ b/www/colly/Makefile
@@ -1,7 +1,7 @@
PORTNAME= colly
DISTVERSIONPREFIX= v
DISTVERSION= 2.1.0
-PORTREVISION= 24
+PORTREVISION= 25
CATEGORIES= www
MAINTAINER= yuri@FreeBSD.org
diff --git a/www/devd/Makefile b/www/devd/Makefile
index cd725ff03ccc..18961873b3c0 100644
--- a/www/devd/Makefile
+++ b/www/devd/Makefile
@@ -1,7 +1,7 @@
PORTNAME= devd
DISTVERSIONPREFIX= v
DISTVERSION= 0.9
-PORTREVISION= 28
+PORTREVISION= 29
CATEGORIES= www devel
MAINTAINER= yuri@FreeBSD.org
diff --git a/www/eden/Makefile b/www/eden/Makefile
index 8a753549c431..7e0436e63647 100644
--- a/www/eden/Makefile
+++ b/www/eden/Makefile
@@ -1,7 +1,7 @@
PORTNAME= eden
PORTVERSION= 0.7.4
DISTVERSIONPREFIX= v
-PORTREVISION= 27
+PORTREVISION= 28
CATEGORIES= www
PATCH_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/
diff --git a/www/element-web/Makefile b/www/element-web/Makefile
index 92dc5e60fcf7..99df9854099d 100644
--- a/www/element-web/Makefile
+++ b/www/element-web/Makefile
@@ -1,6 +1,6 @@
PORTNAME= element
DISTVERSIONPREFIX= v
-DISTVERSION= 1.11.100
+DISTVERSION= 1.11.101
CATEGORIES= www
MASTER_SITES= https://github.com/element-hq/element-web/releases/download/${DISTVERSIONFULL}/
PKGNAMESUFFIX= -web
@@ -18,7 +18,7 @@ CPE_VENDOR= matrix
NO_ARCH= yes
NO_BUILD= yes
SUB_FILES= pkg-message
-PLIST_SUB= COMMITID=667479c8bcd11a3fb5b2
+PLIST_SUB= COMMITID=f6ab405e59da2ba00d66
do-install:
@${MKDIR} ${STAGEDIR}${WWWDIR}
diff --git a/www/element-web/distinfo b/www/element-web/distinfo
index a8d87874acf9..25bb7b40bfa7 100644
--- a/www/element-web/distinfo
+++ b/www/element-web/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1746612506
-SHA256 (element-v1.11.100.tar.gz) = bc4d77152d544fa40fccd7c7e5b6ace4e8ae266f4a2cc1b334b25733c6d1f8cd
-SIZE (element-v1.11.100.tar.gz) = 34364532
+TIMESTAMP = 1747807547
+SHA256 (element-v1.11.101.tar.gz) = 539bc978d08bcdade4eb4f62d0c9635211e867d8605425c778b82334d2d5b1c2
+SIZE (element-v1.11.101.tar.gz) = 34385333
diff --git a/www/element-web/pkg-plist b/www/element-web/pkg-plist
index 06d1f89bc538..264324cd8d88 100644
--- a/www/element-web/pkg-plist
+++ b/www/element-web/pkg-plist
@@ -6,9 +6,9 @@
%%WWWDIR%%/bundles/%%COMMITID%%/1127.js.map
%%WWWDIR%%/bundles/%%COMMITID%%/1188.js
%%WWWDIR%%/bundles/%%COMMITID%%/1188.js.map
-%%WWWDIR%%/bundles/%%COMMITID%%/1217.js
-%%WWWDIR%%/bundles/%%COMMITID%%/1217.js.LICENSE.txt
-%%WWWDIR%%/bundles/%%COMMITID%%/1217.js.map
+%%WWWDIR%%/bundles/%%COMMITID%%/1366.js
+%%WWWDIR%%/bundles/%%COMMITID%%/1366.js.LICENSE.txt
+%%WWWDIR%%/bundles/%%COMMITID%%/1366.js.map
%%WWWDIR%%/bundles/%%COMMITID%%/1526.js
%%WWWDIR%%/bundles/%%COMMITID%%/1526.js.map
%%WWWDIR%%/bundles/%%COMMITID%%/1787.js
@@ -32,9 +32,6 @@
%%WWWDIR%%/bundles/%%COMMITID%%/3508.js
%%WWWDIR%%/bundles/%%COMMITID%%/3636.js
%%WWWDIR%%/bundles/%%COMMITID%%/3636.js.map
-%%WWWDIR%%/bundles/%%COMMITID%%/3714.js
-%%WWWDIR%%/bundles/%%COMMITID%%/3714.js.LICENSE.txt
-%%WWWDIR%%/bundles/%%COMMITID%%/3714.js.map
%%WWWDIR%%/bundles/%%COMMITID%%/395.js
%%WWWDIR%%/bundles/%%COMMITID%%/395.js.map
%%WWWDIR%%/bundles/%%COMMITID%%/4006.js
@@ -75,6 +72,9 @@
%%WWWDIR%%/bundles/%%COMMITID%%/7766.js.map
%%WWWDIR%%/bundles/%%COMMITID%%/797.js
%%WWWDIR%%/bundles/%%COMMITID%%/797.js.map
+%%WWWDIR%%/bundles/%%COMMITID%%/8038.js
+%%WWWDIR%%/bundles/%%COMMITID%%/8038.js.LICENSE.txt
+%%WWWDIR%%/bundles/%%COMMITID%%/8038.js.map
%%WWWDIR%%/bundles/%%COMMITID%%/8227.js
%%WWWDIR%%/bundles/%%COMMITID%%/8227.js.map
%%WWWDIR%%/bundles/%%COMMITID%%/8901.js
@@ -345,45 +345,45 @@
%%WWWDIR%%/fonts/inter-vietnamese-700-italic.feddee8.woff2
%%WWWDIR%%/fonts/inter-vietnamese-700-normal.5b5cd0c.woff
%%WWWDIR%%/fonts/inter-vietnamese-700-normal.5d9bfca.woff2
-%%WWWDIR%%/i18n/cs.7b7ba53.json
-%%WWWDIR%%/i18n/cy.820f145.json
-%%WWWDIR%%/i18n/de_DE.c1d8804.json
-%%WWWDIR%%/i18n/el.188effa.json
-%%WWWDIR%%/i18n/en_EN.dcf12d0.json
+%%WWWDIR%%/i18n/cs.72f0269.json
+%%WWWDIR%%/i18n/cy.58ddc91.json
+%%WWWDIR%%/i18n/de_DE.30ed328.json
+%%WWWDIR%%/i18n/el.2c48ea0.json
+%%WWWDIR%%/i18n/en_EN.4ea020b.json
%%WWWDIR%%/i18n/eo.b5e64b9.json
-%%WWWDIR%%/i18n/es.814c4d1.json
-%%WWWDIR%%/i18n/et.4616345.json
+%%WWWDIR%%/i18n/es.ca5fbee.json
+%%WWWDIR%%/i18n/et.56f3774.json
%%WWWDIR%%/i18n/fa.ba2268f.json
-%%WWWDIR%%/i18n/fi.b074d4e.json
-%%WWWDIR%%/i18n/fr.71966ba.json
-%%WWWDIR%%/i18n/gl.8eae666.json
+%%WWWDIR%%/i18n/fi.496d222.json
+%%WWWDIR%%/i18n/fr.560e65f.json
+%%WWWDIR%%/i18n/gl.0e925cf.json
%%WWWDIR%%/i18n/he.931b2ca.json
-%%WWWDIR%%/i18n/hu.b13bd56.json
-%%WWWDIR%%/i18n/id.ef7a0fc.json
-%%WWWDIR%%/i18n/is.720c04f.json
-%%WWWDIR%%/i18n/it.c4dae6a.json
-%%WWWDIR%%/i18n/ja.3050af5.json
-%%WWWDIR%%/i18n/ka.cf27f1d.json
-%%WWWDIR%%/i18n/languages.51496dc.json
+%%WWWDIR%%/i18n/hu.9efd396.json
+%%WWWDIR%%/i18n/id.2b0ff70.json
+%%WWWDIR%%/i18n/is.485eb94.json
+%%WWWDIR%%/i18n/it.22cd41c.json
+%%WWWDIR%%/i18n/ja.163ae22.json
+%%WWWDIR%%/i18n/ka.d27657f.json
+%%WWWDIR%%/i18n/languages.6999855.json
%%WWWDIR%%/i18n/languages.json
-%%WWWDIR%%/i18n/lo.fabd37f.json
+%%WWWDIR%%/i18n/lo.e1fc5b3.json
%%WWWDIR%%/i18n/lt.52c0924.json
-%%WWWDIR%%/i18n/lv.9f659b2.json
-%%WWWDIR%%/i18n/mg_MG.2904523.json
-%%WWWDIR%%/i18n/nb_NO.840e3ca.json
-%%WWWDIR%%/i18n/nl.3d3ea88.json
-%%WWWDIR%%/i18n/pl.e335cf9.json
-%%WWWDIR%%/i18n/pt.ba56256.json
-%%WWWDIR%%/i18n/pt_BR.c0da448.json
-%%WWWDIR%%/i18n/ru.9782881.json
-%%WWWDIR%%/i18n/sk.4fc4270.json
-%%WWWDIR%%/i18n/sq.7223e38.json
-%%WWWDIR%%/i18n/sv.1dc0401.json
-%%WWWDIR%%/i18n/tr.c136827.json
-%%WWWDIR%%/i18n/uk.c600f05.json
-%%WWWDIR%%/i18n/vi.40be522.json
-%%WWWDIR%%/i18n/zh_Hans.fe14cf5.json
-%%WWWDIR%%/i18n/zh_Hant.6de66fb.json
+%%WWWDIR%%/i18n/lv.9aeee92.json
+%%WWWDIR%%/i18n/mg_MG.f531ee7.json
+%%WWWDIR%%/i18n/nb_NO.61be31c.json
+%%WWWDIR%%/i18n/nl.80f308f.json
+%%WWWDIR%%/i18n/pl.15fd78f.json
+%%WWWDIR%%/i18n/pt.66097fc.json
+%%WWWDIR%%/i18n/pt_BR.d2243dd.json
+%%WWWDIR%%/i18n/ru.3940db2.json
+%%WWWDIR%%/i18n/sk.2c62599.json
+%%WWWDIR%%/i18n/sq.fa459a7.json
+%%WWWDIR%%/i18n/sv.b947254.json
+%%WWWDIR%%/i18n/tr.ac852fc.json
+%%WWWDIR%%/i18n/uk.1d400e8.json
+%%WWWDIR%%/i18n/vi.e039736.json
+%%WWWDIR%%/i18n/zh_Hans.74a5bea.json
+%%WWWDIR%%/i18n/zh_Hant.1681834.json
%%WWWDIR%%/icons/bold.b7f0698.svg
%%WWWDIR%%/icons/check-circle.99c21d7.svg
%%WWWDIR%%/icons/check.aaad650.svg
@@ -520,6 +520,7 @@
%%WWWDIR%%/img/element-icons/roomlist/plus-circle.4fbd7e8.svg
%%WWWDIR%%/img/element-icons/roomlist/room-avatar-view-icon-mask.dfdc337.svg
%%WWWDIR%%/img/element-icons/roomlist/room-avatar-view-presence-mask.e2f8b62.svg
+%%WWWDIR%%/img/element-icons/roomlist/room-list-item-skeleton.b543c8a.svg
%%WWWDIR%%/img/element-icons/roomlist/skeleton-ui.fde3810.svg
%%WWWDIR%%/img/element-icons/settings/appearance.90cad21.svg
%%WWWDIR%%/img/element-icons/settings/desktop.05314b6.svg
@@ -692,27 +693,28 @@
%%WWWDIR%%/welcome/images/icon-help.svg
%%WWWDIR%%/welcome/images/icon-room-directory.svg
%%WWWDIR%%/welcome/images/icon-sign-in.svg
-%%WWWDIR%%/widgets/element-call/assets/IndexedDBWorker-DunQAoUH.js
-%%WWWDIR%%/widgets/element-call/assets/IndexedDBWorker-DunQAoUH.js.map
+%%WWWDIR%%/widgets/element-call/assets/IndexedDBWorker-whz4J8_U.js
+%%WWWDIR%%/widgets/element-call/assets/IndexedDBWorker-whz4J8_U.js.map
%%WWWDIR%%/widgets/element-call/assets/cat-4r_NkDcK.ogg
%%WWWDIR%%/widgets/element-call/assets/cat-Dd8bv_2W.mp3
%%WWWDIR%%/widgets/element-call/assets/clap-AxCMZLTd.ogg
%%WWWDIR%%/widgets/element-call/assets/clap-Dxm5qGyl.mp3
%%WWWDIR%%/widgets/element-call/assets/crickets-CcwrRdbq.mp3
%%WWWDIR%%/widgets/element-call/assets/crickets-DUJdcuUa.ogg
-%%WWWDIR%%/widgets/element-call/assets/de-app-BVrY_LcE.json
+%%WWWDIR%%/widgets/element-call/assets/cs-app-BIDxiN50.json
+%%WWWDIR%%/widgets/element-call/assets/de-app-Dn3BQmuZ.json
%%WWWDIR%%/widgets/element-call/assets/deer-91r1Gyrx.mp3
%%WWWDIR%%/widgets/element-call/assets/deer-DPSlVch4.ogg
%%WWWDIR%%/widgets/element-call/assets/dog-BoQdnF-w.mp3
%%WWWDIR%%/widgets/element-call/assets/dog-CxIWtkNX.ogg
%%WWWDIR%%/widgets/element-call/assets/el-app-Bgiig2Nz.json
-%%WWWDIR%%/widgets/element-call/assets/en-app-CaNSxxxY.json
-%%WWWDIR%%/widgets/element-call/assets/es-app-k4RDObng.json
-%%WWWDIR%%/widgets/element-call/assets/et-app-lXLRqT0e.json
-%%WWWDIR%%/widgets/element-call/assets/fr-app-DbyWYFAw.json
+%%WWWDIR%%/widgets/element-call/assets/en-app-LL1Igtxp.json
+%%WWWDIR%%/widgets/element-call/assets/es-app-Q3c7lmEj.json
+%%WWWDIR%%/widgets/element-call/assets/et-app-DPt7J6kw.json
+%%WWWDIR%%/widgets/element-call/assets/fr-app-BxTYbDfK.json
%%WWWDIR%%/widgets/element-call/assets/generic-BBbS3Wph.ogg
%%WWWDIR%%/widgets/element-call/assets/generic-BFeSb6fL.mp3
-%%WWWDIR%%/widgets/element-call/assets/id-app-C7u2K42_.json
+%%WWWDIR%%/widgets/element-call/assets/id-app-B-8jUQf1.json
%%WWWDIR%%/widgets/element-call/assets/inconsolata-latin-400-normal-Befkm-iY.woff
%%WWWDIR%%/widgets/element-call/assets/inconsolata-latin-400-normal-CjvQBeBR.woff2
%%WWWDIR%%/widgets/element-call/assets/inconsolata-latin-700-normal-BUbZx5Dd.woff2
@@ -726,14 +728,14 @@
%%WWWDIR%%/widgets/element-call/assets/inconsolata-vietnamese-700-normal-D1IfJGt6.woff
%%WWWDIR%%/widgets/element-call/assets/inconsolata-vietnamese-700-normal-DlaT3sch.woff2
%%WWWDIR%%/widgets/element-call/assets/index-BtY3MdEn.css
-%%WWWDIR%%/widgets/element-call/assets/index-CO76Uop_.js
-%%WWWDIR%%/widgets/element-call/assets/index-CO76Uop_.js.map
-%%WWWDIR%%/widgets/element-call/assets/index-ID8kuokP.js
-%%WWWDIR%%/widgets/element-call/assets/index-ID8kuokP.js.LICENSE.txt
-%%WWWDIR%%/widgets/element-call/assets/index-ID8kuokP.js.map
-%%WWWDIR%%/widgets/element-call/assets/index-K2xIZ1TO.js
-%%WWWDIR%%/widgets/element-call/assets/index-K2xIZ1TO.js.LICENSE.txt
-%%WWWDIR%%/widgets/element-call/assets/index-K2xIZ1TO.js.map
+%%WWWDIR%%/widgets/element-call/assets/index-CnwgenbU.js
+%%WWWDIR%%/widgets/element-call/assets/index-CnwgenbU.js.map
+%%WWWDIR%%/widgets/element-call/assets/index-DOJHP7J4.js
+%%WWWDIR%%/widgets/element-call/assets/index-DOJHP7J4.js.LICENSE.txt
+%%WWWDIR%%/widgets/element-call/assets/index-DOJHP7J4.js.map
+%%WWWDIR%%/widgets/element-call/assets/index-DgskObdj.js
+%%WWWDIR%%/widgets/element-call/assets/index-DgskObdj.js.LICENSE.txt
+%%WWWDIR%%/widgets/element-call/assets/index-DgskObdj.js.map
%%WWWDIR%%/widgets/element-call/assets/inter-cyrillic-400-normal-BLGc9T1a.woff2
%%WWWDIR%%/widgets/element-call/assets/inter-cyrillic-400-normal-ZzOtrSSW.woff
%%WWWDIR%%/widgets/element-call/assets/inter-cyrillic-500-normal-D4Vwzodn.woff2
@@ -790,16 +792,17 @@
%%WWWDIR%%/widgets/element-call/assets/inter-vietnamese-600-normal-Cm6aH8_k.woff
%%WWWDIR%%/widgets/element-call/assets/inter-vietnamese-700-normal-CGpBpxLq.woff2
%%WWWDIR%%/widgets/element-call/assets/inter-vietnamese-700-normal-dAnkLlTo.woff
-%%WWWDIR%%/widgets/element-call/assets/it-app-Brq71wxA.json
+%%WWWDIR%%/widgets/element-call/assets/it-app-Cik25Qgd.json
+%%WWWDIR%%/widgets/element-call/assets/ja-app-Cp_00ujI.json
%%WWWDIR%%/widgets/element-call/assets/join_call-DlMV9nHk.ogg
%%WWWDIR%%/widgets/element-call/assets/join_call-dEJCP2wD.mp3
%%WWWDIR%%/widgets/element-call/assets/left_call-BbqmRgnC.mp3
%%WWWDIR%%/widgets/element-call/assets/left_call-C7NMl6WI.ogg
%%WWWDIR%%/widgets/element-call/assets/lightbulb-BIeJtAR_.ogg
%%WWWDIR%%/widgets/element-call/assets/lightbulb-BrnY00qi.mp3
-%%WWWDIR%%/widgets/element-call/assets/livekit-client.e2ee.worker-uNa5aSsA.js
-%%WWWDIR%%/widgets/element-call/assets/livekit-client.e2ee.worker-uNa5aSsA.js.map
-%%WWWDIR%%/widgets/element-call/assets/lv-app--dkl5K2p.json
+%%WWWDIR%%/widgets/element-call/assets/livekit-client.e2ee.worker-P7E4-zMp.js
+%%WWWDIR%%/widgets/element-call/assets/livekit-client.e2ee.worker-P7E4-zMp.js.map
+%%WWWDIR%%/widgets/element-call/assets/lv-app-J9DGb4uv.json
%%WWWDIR%%/widgets/element-call/assets/matrix-sdk-crypto-wasm-D9e1T4vy.js
%%WWWDIR%%/widgets/element-call/assets/matrix-sdk-crypto-wasm-D9e1T4vy.js.map
%%WWWDIR%%/widgets/element-call/assets/matrix_sdk_crypto_wasm_bg-B6p0UpxL.wasm
@@ -808,26 +811,28 @@
%%WWWDIR%%/widgets/element-call/assets/pako.esm-Bt8vjcgE.js.map
%%WWWDIR%%/widgets/element-call/assets/party-BZPeTgC3.mp3
%%WWWDIR%%/widgets/element-call/assets/party-D7rIOhAQ.ogg
-%%WWWDIR%%/widgets/element-call/assets/pl-app-DGeQk6oM.json
-%%WWWDIR%%/widgets/element-call/assets/polyfill-force-CVX0K6-A.js
-%%WWWDIR%%/widgets/element-call/assets/polyfill-force-CVX0K6-A.js.map
-%%WWWDIR%%/widgets/element-call/assets/polyfill-force-nR8-tTWm.js
-%%WWWDIR%%/widgets/element-call/assets/polyfill-force-nR8-tTWm.js.map
+%%WWWDIR%%/widgets/element-call/assets/pl-app-CUkXVSZk.json
+%%WWWDIR%%/widgets/element-call/assets/polyfill-force-DmQV3-w7.js
+%%WWWDIR%%/widgets/element-call/assets/polyfill-force-DmQV3-w7.js.map
+%%WWWDIR%%/widgets/element-call/assets/polyfill-force-DxJcBG4e.js
+%%WWWDIR%%/widgets/element-call/assets/polyfill-force-DxJcBG4e.js.map
%%WWWDIR%%/widgets/element-call/assets/raise_hand-Bzqn65WB.mp3
%%WWWDIR%%/widgets/element-call/assets/raise_hand-CUbxEnt9.ogg
-%%WWWDIR%%/widgets/element-call/assets/ro-app-C7W3EjXp.json
+%%WWWDIR%%/widgets/element-call/assets/ro-app-KHxgbZz-.json
%%WWWDIR%%/widgets/element-call/assets/rock-BVCJXNC-.ogg
%%WWWDIR%%/widgets/element-call/assets/rock-CHdnB31m.mp3
-%%WWWDIR%%/widgets/element-call/assets/ru-app-B-FtZqJU.json
+%%WWWDIR%%/widgets/element-call/assets/ru-app-eoBdfBL5.json
%%WWWDIR%%/widgets/element-call/assets/screen_share_started-DH3qxml5.mp3
%%WWWDIR%%/widgets/element-call/assets/screen_share_started-IZDL-kAw.ogg
-%%WWWDIR%%/widgets/element-call/assets/sk-app-C-Uhf1j4.json
-%%WWWDIR%%/widgets/element-call/assets/spa-guyHZvo_.js
-%%WWWDIR%%/widgets/element-call/assets/spa-guyHZvo_.js.map
-%%WWWDIR%%/widgets/element-call/assets/uk-app-BxyP4dDT.json
+%%WWWDIR%%/widgets/element-call/assets/sk-app-oyZEXyo9.json
+%%WWWDIR%%/widgets/element-call/assets/spa-DVTankup.js
+%%WWWDIR%%/widgets/element-call/assets/spa-DVTankup.js.map
+%%WWWDIR%%/widgets/element-call/assets/sv-app-D3UhBwmo.json
+%%WWWDIR%%/widgets/element-call/assets/tr-app-Dk--6BpP.json
+%%WWWDIR%%/widgets/element-call/assets/uk-app-8w2P6iQj.json
%%WWWDIR%%/widgets/element-call/assets/wave-Bzf1LSMH.mp3
%%WWWDIR%%/widgets/element-call/assets/wave-FiiOzicp.ogg
-%%WWWDIR%%/widgets/element-call/assets/zh-Hans-app-CCvn5Yaa.json
-%%WWWDIR%%/widgets/element-call/assets/zh-Hant-app-bsZKL_R6.json
+%%WWWDIR%%/widgets/element-call/assets/zh-Hans-app-8pDbXAOO.json
+%%WWWDIR%%/widgets/element-call/assets/zh-Hant-app-BV1LKS_j.json
%%WWWDIR%%/widgets/element-call/config.json
%%WWWDIR%%/widgets/element-call/index.html
diff --git a/www/filtron/Makefile b/www/filtron/Makefile
index 4aab5b3251d7..0800b268c687 100644
--- a/www/filtron/Makefile
+++ b/www/filtron/Makefile
@@ -1,6 +1,6 @@
PORTNAME= filtron
PORTVERSION= g20180218
-PORTREVISION= 25
+PORTREVISION= 26
CATEGORIES= www
MAINTAINER= yuri@FreeBSD.org
diff --git a/www/galene/Makefile b/www/galene/Makefile
index 8bea5d198bab..3bb093e111c8 100644
--- a/www/galene/Makefile
+++ b/www/galene/Makefile
@@ -1,5 +1,6 @@
PORTNAME= galene
DISTVERSION= 0.96.3
+PORTREVISION= 1
CATEGORIES= www net-im
MAINTAINER= bapt@FreeBSD.org
diff --git a/www/glance/Makefile b/www/glance/Makefile
index 2c324187d9f8..a5d19357b8e1 100644
--- a/www/glance/Makefile
+++ b/www/glance/Makefile
@@ -1,7 +1,7 @@
PORTNAME= glance
DISTVERSIONPREFIX= v
DISTVERSION= 0.7.8
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= www
MAINTAINER= adamw@FreeBSD.org
diff --git a/www/go-anubis/Makefile b/www/go-anubis/Makefile
index ee3227e436a3..f60ea9332dba 100644
--- a/www/go-anubis/Makefile
+++ b/www/go-anubis/Makefile
@@ -1,6 +1,7 @@
PORTNAME= anubis
DISTVERSIONPREFIX= v
DISTVERSION= 1.15.1
+PORTREVISION= 1
CATEGORIES= www
PKGNAMEPREFIX= go-
diff --git a/www/go-www/Makefile b/www/go-www/Makefile
index 62dc745e14e9..269f51449070 100644
--- a/www/go-www/Makefile
+++ b/www/go-www/Makefile
@@ -1,6 +1,6 @@
PORTNAME= www
PORTVERSION= 2.0.0
-PORTREVISION= 24
+PORTREVISION= 25
CATEGORIES= www
PKGNAMEPREFIX= go-
diff --git a/www/gobuffalo/Makefile b/www/gobuffalo/Makefile
index 322eacdf55ce..2ccb761b5f56 100644
--- a/www/gobuffalo/Makefile
+++ b/www/gobuffalo/Makefile
@@ -1,7 +1,7 @@
PORTNAME= gobuffalo
PORTVERSION= 0.16.27
DISTVERSIONPREFIX= v
-PORTREVISION= 24
+PORTREVISION= 25
CATEGORIES= www
MAINTAINER= ports@FreeBSD.org
diff --git a/www/gohugo/Makefile b/www/gohugo/Makefile
index a998c60d116c..8646ff30b9c2 100644
--- a/www/gohugo/Makefile
+++ b/www/gohugo/Makefile
@@ -1,6 +1,6 @@
PORTNAME= hugo
DISTVERSIONPREFIX= v
-DISTVERSION= 0.147.3
+DISTVERSION= 0.147.5
PORTEPOCH= 1
CATEGORIES= www
PKGNAMEPREFIX= go
diff --git a/www/gohugo/distinfo b/www/gohugo/distinfo
index 550828130a87..f9d15307bb8a 100644
--- a/www/gohugo/distinfo
+++ b/www/gohugo/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1747057537
-SHA256 (go/www_gohugo/hugo-v0.147.3/v0.147.3.mod) = cb41ea476364590e46adc72d923c617f69d99544d2a78c743ae4608f4c43ea25
-SIZE (go/www_gohugo/hugo-v0.147.3/v0.147.3.mod) = 8036
-SHA256 (go/www_gohugo/hugo-v0.147.3/v0.147.3.zip) = 36a1eb90054d1cef4aa8f74a9951e44c211d0d68d0d3fe90a8af4764fa6a0117
-SIZE (go/www_gohugo/hugo-v0.147.3/v0.147.3.zip) = 5734808
+TIMESTAMP = 1747917726
+SHA256 (go/www_gohugo/hugo-v0.147.5/v0.147.5.mod) = f14f3c1102d6f0661b7d9d64860adf0b816f776e0e7626570148db488e2c4ce6
+SIZE (go/www_gohugo/hugo-v0.147.5/v0.147.5.mod) = 8034
+SHA256 (go/www_gohugo/hugo-v0.147.5/v0.147.5.zip) = 8f4401676af384c71ceb4d0cc23647bffec7022ffe07c1ed63988150f436c317
+SIZE (go/www_gohugo/hugo-v0.147.5/v0.147.5.zip) = 5737329
diff --git a/www/gotty/Makefile b/www/gotty/Makefile
index 9c5bf0ccfab0..682fa25de8ac 100644
--- a/www/gotty/Makefile
+++ b/www/gotty/Makefile
@@ -1,7 +1,7 @@
PORTNAME= gotty
PORTVERSION= 1.5.0
DISTVERSIONPREFIX= v
-PORTREVISION= 18
+PORTREVISION= 19
CATEGORIES= www net
MAINTAINER= ehaupt@FreeBSD.org
diff --git a/www/grafana/Makefile b/www/grafana/Makefile
index 6f770e49d424..1102f250e042 100644
--- a/www/grafana/Makefile
+++ b/www/grafana/Makefile
@@ -1,6 +1,7 @@
PORTNAME= grafana
DISTVERSIONPREFIX= v
DISTVERSION= 12.0.0
+PORTREVISION= 1
CATEGORIES= www
MASTER_SITES= https://dl.grafana.com/oss/release/ \
https://raw.githubusercontent.com/${GH_ACCOUNT}/${GH_PROJECT}/${DISTVERSIONFULL}/:gomod
diff --git a/www/gurl/Makefile b/www/gurl/Makefile
index 48a4df842236..a344aee2535f 100644
--- a/www/gurl/Makefile
+++ b/www/gurl/Makefile
@@ -1,7 +1,7 @@
PORTNAME= gurl
DISTVERSIONPREFIX= v
DISTVERSION= 0.3.0
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= www
MAINTAINER= dch@FreeBSD.org
diff --git a/www/icapeg/Makefile b/www/icapeg/Makefile
index d8309240108c..75dfe51d78d6 100644
--- a/www/icapeg/Makefile
+++ b/www/icapeg/Makefile
@@ -1,7 +1,7 @@
PORTNAME= icapeg
DISTVERSIONPREFIX= v
DISTVERSION= 1.0.0
-PORTREVISION= 12
+PORTREVISION= 13
CATEGORIES= www
MAINTAINER= support@egirna.com
diff --git a/www/ilias/Makefile b/www/ilias/Makefile
index 9e04575c9bb4..c78043deb278 100644
--- a/www/ilias/Makefile
+++ b/www/ilias/Makefile
@@ -1,6 +1,6 @@
PORTNAME= ilias
DISTVERSIONPREFIX= v
-DISTVERSION= 9.8
+DISTVERSION= 9.9
CATEGORIES= www education
PKGNAMEPREFIX= ${PHP_PKGNAMEPREFIX}
diff --git a/www/ilias/distinfo b/www/ilias/distinfo
index 3dc99d430632..2c13f3e68015 100644
--- a/www/ilias/distinfo
+++ b/www/ilias/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1743576853
-SHA256 (ILIAS-eLearning-ILIAS-v9.8_GH0.tar.gz) = 6514fd6e2512da539bc690db355e351c4dfc0ef0bb3d693e055a7205bc8b602d
-SIZE (ILIAS-eLearning-ILIAS-v9.8_GH0.tar.gz) = 31883618
+TIMESTAMP = 1747811218
+SHA256 (ILIAS-eLearning-ILIAS-v9.9_GH0.tar.gz) = cc97b2b1d96f9514466e253175736af95e3bc75842b8e9063c48d2b36c58029f
+SIZE (ILIAS-eLearning-ILIAS-v9.9_GH0.tar.gz) = 31900295
diff --git a/www/iridium/Makefile b/www/iridium/Makefile
index 40178f0ec7ba..5c87dc11671a 100644
--- a/www/iridium/Makefile
+++ b/www/iridium/Makefile
@@ -1,5 +1,6 @@
PORTNAME= iridium
PORTVERSION= 2025.05.136.2
+PORTREVISION= 1
PULSEMV= 16
PULSEV= ${PULSEMV}.1
CATEGORIES= www wayland
diff --git a/www/iridium/files/patch-build_rust_allocator_BUILD.gn b/www/iridium/files/patch-build_rust_allocator_BUILD.gn
new file mode 100644
index 000000000000..cb1633140dcc
--- /dev/null
+++ b/www/iridium/files/patch-build_rust_allocator_BUILD.gn
@@ -0,0 +1,109 @@
+--- build/rust/allocator/BUILD.gn.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/BUILD.gn
+@@ -0,0 +1,106 @@
++# Copyright 2025 The Chromium Authors
++# Use of this source code is governed by a BSD-style license that can be
++# found in the LICENSE file.
++
++import("//build/buildflag_header.gni")
++import("//build/config/rust.gni")
++import("//build/rust/rust_static_library.gni")
++
++rust_allocator_uses_partition_alloc = false
++if (build_with_chromium) {
++ import("//base/allocator/partition_allocator/partition_alloc.gni")
++ rust_allocator_uses_partition_alloc = use_partition_alloc_as_malloc
++}
++
++# In ASAN builds, PartitionAlloc-Everywhere is disabled, meaning malloc() and
++# friends in C++ do not go to PartitionAlloc. So we also don't point the Rust
++# allocation functions at PartitionAlloc. Generally, this means we just direct
++# them to the Standard Library's allocator.
++#
++# However, on Windows the Standard Library uses HeapAlloc() and Windows ASAN
++# does *not* hook that method, so ASAN does not get to hear about allocations
++# made in Rust. To resolve this, we redirect allocation to _aligned_malloc
++# which Windows ASAN *does* hook.
++#
++# Note that there is a runtime option to make ASAN hook HeapAlloc() but
++# enabling it breaks Win32 APIs like CreateProcess:
++# https://crbug.com/368070343#comment29
++rust_allocator_uses_aligned_malloc = false
++if (!rust_allocator_uses_partition_alloc && is_win && is_asan) {
++ rust_allocator_uses_aligned_malloc = true
++}
++
++rust_allocator_uses_allocator_impls_h =
++ rust_allocator_uses_partition_alloc || rust_allocator_uses_aligned_malloc
++
++buildflag_header("buildflags") {
++ header = "buildflags.h"
++ flags = [
++ "RUST_ALLOCATOR_USES_PARTITION_ALLOC=$rust_allocator_uses_partition_alloc",
++ "RUST_ALLOCATOR_USES_ALIGNED_MALLOC=$rust_allocator_uses_aligned_malloc",
++ ]
++ visibility = [ ":*" ]
++}
++
++if (toolchain_has_rust) {
++ # All targets which depend on Rust code but are not linked by rustc must
++ # depend on this. Usually, this dependency will come from the rust_target() GN
++ # template. However, cargo_crate() does *not* include this dependency so any
++ # C++ targets which directly depend on a cargo_crate() must depend on this.
++ rust_static_library("allocator") {
++ sources = [ "lib.rs" ]
++ crate_root = "lib.rs"
++ cxx_bindings = [ "lib.rs" ]
++
++ deps = [ ":alloc_error_handler_impl" ]
++ if (rust_allocator_uses_allocator_impls_h) {
++ deps += [ ":allocator_impls" ]
++ }
++
++ no_chromium_prelude = true
++ no_allocator_crate = true
++ allow_unsafe = true
++
++ rustflags = []
++ if (rust_allocator_uses_allocator_impls_h) {
++ rustflags += [ "--cfg=rust_allocator_uses_allocator_impls_h" ]
++ cxx_bindings += [ "allocator_impls_ffi.rs" ]
++ sources += [ "allocator_impls_ffi.rs" ]
++ }
++
++ # TODO(https://crbug.com/410596442): Stop using unstable features here.
++ configs -= [ "//build/config/compiler:disallow_unstable_features" ]
++ }
++
++ if (rust_allocator_uses_allocator_impls_h) {
++ static_library("allocator_impls") {
++ public_deps = []
++ if (rust_allocator_uses_partition_alloc) {
++ public_deps +=
++ [ "//base/allocator/partition_allocator:partition_alloc" ]
++ }
++
++ sources = [
++ "allocator_impls.cc",
++ "allocator_impls.h",
++ ]
++ deps = [ ":buildflags" ]
++ visibility = [ ":*" ]
++ }
++ }
++
++ static_library("alloc_error_handler_impl") {
++ sources = [
++ # `alias.*`, `compiler_specific.h`, and `immediate_crash.*` have been
++ # copied from `//base`.
++ # TODO(crbug.com/40279749): Avoid duplication / reuse code.
++ "alias.cc",
++ "alias.h",
++ "alloc_error_handler_impl.cc",
++ "alloc_error_handler_impl.h",
++ "compiler_specific.h",
++ "immediate_crash.h",
++ ]
++ visibility = [ ":*" ]
++ }
++}
diff --git a/www/iridium/files/patch-build_rust_allocator_DEPS b/www/iridium/files/patch-build_rust_allocator_DEPS
new file mode 100644
index 000000000000..74bb2d6c2421
--- /dev/null
+++ b/www/iridium/files/patch-build_rust_allocator_DEPS
@@ -0,0 +1,12 @@
+--- build/rust/allocator/DEPS.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/DEPS
+@@ -0,0 +1,9 @@
++include_rules = [
++ "-base",
++]
++
++specific_include_rules = {
++ "allocator_impls.cc" : [
++ "+partition_alloc"
++ ]
++}
diff --git a/www/iridium/files/patch-build_rust_allocator_alias.cc b/www/iridium/files/patch-build_rust_allocator_alias.cc
new file mode 100644
index 000000000000..5280641f27e1
--- /dev/null
+++ b/www/iridium/files/patch-build_rust_allocator_alias.cc
@@ -0,0 +1,25 @@
+--- build/rust/allocator/alias.cc.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/alias.cc
+@@ -0,0 +1,22 @@
++// Copyright 2023 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++// This file has been copied from //base/debug/alias.cc ( additionally the APIs
++// were moved into the `build_rust_std` namespace).
++//
++// TODO(crbug.com/40279749): Avoid code duplication / reuse code.
++
++#include "build/rust/allocator/alias.h"
++
++#include "build/rust/allocator/compiler_specific.h"
++
++namespace build_rust_std {
++namespace debug {
++
++// This file/function should be excluded from LTO/LTCG to ensure that the
++// compiler can't see this function's implementation when compiling calls to it.
++NOINLINE void Alias(const void* var) {}
++
++} // namespace debug
++} // namespace build_rust_std
diff --git a/www/iridium/files/patch-build_rust_allocator_alias.h b/www/iridium/files/patch-build_rust_allocator_alias.h
new file mode 100644
index 000000000000..6530c6ae8779
--- /dev/null
+++ b/www/iridium/files/patch-build_rust_allocator_alias.h
@@ -0,0 +1,40 @@
+--- build/rust/allocator/alias.h.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/alias.h
+@@ -0,0 +1,37 @@
++// Copyright 2023 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++// This file has been copied from //base/debug/alias.h (and then trimmed to just
++// the APIs / macros needed by //build/rust/std; additionally the APIs were
++// moved into the `build_rust_std` namespace).
++//
++// TODO(crbug.com/40279749): Avoid code duplication / reuse code.
++
++#ifndef BUILD_RUST_ALLOCATOR_ALIAS_H_
++#define BUILD_RUST_ALLOCATOR_ALIAS_H_
++
++#include <stddef.h>
++
++namespace build_rust_std {
++namespace debug {
++
++// Make the optimizer think that |var| is aliased. This can be used to prevent a
++// local variable from being optimized out (which is something that
++// `NO_CODE_FOLDING` macro definition below depends on). See
++// //base/debug/alias.h for more details.
++void Alias(const void* var);
++
++} // namespace debug
++
++} // namespace build_rust_std
++
++// Prevent code folding (where a linker identifies functions that are
++// bit-identical and overlays them, which saves space but it leads to confusing
++// call stacks because multiple symbols are at the same address). See
++// //base/debug/alias.h for more details.
++#define NO_CODE_FOLDING() \
++ const int line_number = __LINE__; \
++ build_rust_std::debug::Alias(&line_number)
++
++#endif // BUILD_RUST_ALLOCATOR_ALIAS_H_
diff --git a/www/iridium/files/patch-build_rust_allocator_alloc__error__handler__impl.cc b/www/iridium/files/patch-build_rust_allocator_alloc__error__handler__impl.cc
new file mode 100644
index 000000000000..048c267abefa
--- /dev/null
+++ b/www/iridium/files/patch-build_rust_allocator_alloc__error__handler__impl.cc
@@ -0,0 +1,20 @@
+--- build/rust/allocator/alloc_error_handler_impl.cc.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/alloc_error_handler_impl.cc
+@@ -0,0 +1,17 @@
++// Copyright 2025 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "build/rust/allocator/alloc_error_handler_impl.h"
++
++#include "build/rust/allocator/alias.h"
++#include "build/rust/allocator/immediate_crash.h"
++
++namespace rust_allocator_internal {
++
++void alloc_error_handler_impl() {
++ NO_CODE_FOLDING();
++ IMMEDIATE_CRASH();
++}
++
++} // namespace rust_allocator_internal
diff --git a/www/iridium/files/patch-build_rust_allocator_alloc__error__handler__impl.h b/www/iridium/files/patch-build_rust_allocator_alloc__error__handler__impl.h
new file mode 100644
index 000000000000..887ea602b027
--- /dev/null
+++ b/www/iridium/files/patch-build_rust_allocator_alloc__error__handler__impl.h
@@ -0,0 +1,24 @@
+--- build/rust/allocator/alloc_error_handler_impl.h.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/alloc_error_handler_impl.h
+@@ -0,0 +1,21 @@
++// Copyright 2025 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#ifndef BUILD_RUST_ALLOCATOR_ALLOC_ERROR_HANDLER_IMPL_H_
++#define BUILD_RUST_ALLOCATOR_ALLOC_ERROR_HANDLER_IMPL_H_
++
++// This header exposes to Rust a C++ implementation of quickly crashing after an
++// allocation error. (The API below is called from `__rust_alloc_error_handler`
++// in `lib.rs`.)
++//
++// TODO(lukasza): Investigate if we can delete this `.h` / `.cc` and just call
++// `std::process::abort()` (or something else?) directly from `.rs`. The main
++// open question is how much we care about `NO_CODE_FOLDING`.
++namespace rust_allocator_internal {
++
++void alloc_error_handler_impl();
++
++} // namespace rust_allocator_internal
++
++#endif // BUILD_RUST_ALLOCATOR_ALLOC_ERROR_HANDLER_IMPL_H_
diff --git a/www/iridium/files/patch-build_rust_allocator_allocator__impls.cc b/www/iridium/files/patch-build_rust_allocator_allocator__impls.cc
new file mode 100644
index 000000000000..94e04d7b966a
--- /dev/null
+++ b/www/iridium/files/patch-build_rust_allocator_allocator__impls.cc
@@ -0,0 +1,108 @@
+--- build/rust/allocator/allocator_impls.cc.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/allocator_impls.cc
+@@ -0,0 +1,105 @@
++// Copyright 2021 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "build/rust/allocator/allocator_impls.h"
++
++#ifdef UNSAFE_BUFFERS_BUILD
++// TODO(crbug.com/390223051): Remove C-library calls to fix the errors.
++#pragma allow_unsafe_libc_calls
++#endif
++
++#include <cstddef>
++#include <cstring>
++
++#include "build/build_config.h"
++#include "build/rust/allocator/buildflags.h"
++
++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC)
++#include "partition_alloc/partition_alloc_constants.h" // nogncheck
++#include "partition_alloc/shim/allocator_shim.h" // nogncheck
++#elif BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC)
++#include <cstdlib>
++#endif
++
++namespace rust_allocator_internal {
++
++unsigned char* alloc(size_t size, size_t align) {
++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC)
++ // PartitionAlloc will crash if given an alignment larger than this.
++ if (align > partition_alloc::internal::kMaxSupportedAlignment) {
++ return nullptr;
++ }
++
++ // We use unchecked allocation paths in PartitionAlloc rather than going
++ // through its shims in `malloc()` etc so that we can support fallible
++ // allocation paths such as Vec::try_reserve without crashing on allocation
++ // failure.
++ if (align <= alignof(std::max_align_t)) {
++ return static_cast<unsigned char*>(allocator_shim::UncheckedAlloc(size));
++ } else {
++ return static_cast<unsigned char*>(
++ allocator_shim::UncheckedAlignedAlloc(size, align));
++ }
++#elif BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC)
++ return static_cast<unsigned char*>(_aligned_malloc(size, align));
++#else
++#error This configuration is not supported.
++#endif
++}
++
++void dealloc(unsigned char* p, size_t size, size_t align) {
++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC)
++ if (align <= alignof(std::max_align_t)) {
++ allocator_shim::UncheckedFree(p);
++ } else {
++ allocator_shim::UncheckedAlignedFree(p);
++ }
++#elif BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC)
++ return _aligned_free(p);
++#else
++#error This configuration is not supported.
++#endif
++}
++
++unsigned char* realloc(unsigned char* p,
++ size_t old_size,
++ size_t align,
++ size_t new_size) {
++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC)
++ // We use unchecked allocation paths in PartitionAlloc rather than going
++ // through its shims in `malloc()` etc so that we can support fallible
++ // allocation paths such as Vec::try_reserve without crashing on allocation
++ // failure.
++ if (align <= alignof(std::max_align_t)) {
++ return static_cast<unsigned char*>(
++ allocator_shim::UncheckedRealloc(p, new_size));
++ } else {
++ return static_cast<unsigned char*>(
++ allocator_shim::UncheckedAlignedRealloc(p, new_size, align));
++ }
++#elif BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC)
++ return static_cast<unsigned char*>(_aligned_realloc(p, new_size, align));
++#else
++#error This configuration is not supported.
++#endif
++}
++
++unsigned char* alloc_zeroed(size_t size, size_t align) {
++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC) || \
++ BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC)
++ // TODO(danakj): When RUST_ALLOCATOR_USES_PARTITION_ALLOC is true, it's
++ // possible that a partition_alloc::UncheckedAllocZeroed() call would perform
++ // better than partition_alloc::UncheckedAlloc() + memset. But there is no
++ // such API today. See b/342251590.
++ unsigned char* p = alloc(size, align);
++ if (p) {
++ memset(p, 0, size);
++ }
++ return p;
++#else
++#error This configuration is not supported.
++#endif
++}
++
++} // namespace rust_allocator_internal
diff --git a/www/iridium/files/patch-build_rust_allocator_allocator__impls.h b/www/iridium/files/patch-build_rust_allocator_allocator__impls.h
new file mode 100644
index 000000000000..9249cdc938d2
--- /dev/null
+++ b/www/iridium/files/patch-build_rust_allocator_allocator__impls.h
@@ -0,0 +1,27 @@
+--- build/rust/allocator/allocator_impls.h.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/allocator_impls.h
+@@ -0,0 +1,24 @@
++// Copyright 2025 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#ifndef BUILD_RUST_ALLOCATOR_ALLOCATOR_IMPLS_H_
++#define BUILD_RUST_ALLOCATOR_ALLOCATOR_IMPLS_H_
++
++#include <cstddef>
++
++// This header exposes a C++ allocator (e.g. PartitionAlloc) to Rust.
++// The APIs below are called from `impl GlobalAlloc` in `lib.rs`.
++namespace rust_allocator_internal {
++
++unsigned char* alloc(size_t size, size_t align);
++void dealloc(unsigned char* p, size_t size, size_t align);
++unsigned char* realloc(unsigned char* p,
++ size_t old_size,
++ size_t align,
++ size_t new_size);
++unsigned char* alloc_zeroed(size_t size, size_t align);
++
++} // namespace rust_allocator_internal
++
++#endif // BUILD_RUST_ALLOCATOR_ALLOCATOR_IMPLS_H_
diff --git a/www/iridium/files/patch-build_rust_allocator_allocator__impls__ffi.rs b/www/iridium/files/patch-build_rust_allocator_allocator__impls__ffi.rs
new file mode 100644
index 000000000000..8f0baf1576ce
--- /dev/null
+++ b/www/iridium/files/patch-build_rust_allocator_allocator__impls__ffi.rs
@@ -0,0 +1,22 @@
+--- build/rust/allocator/allocator_impls_ffi.rs.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/allocator_impls_ffi.rs
+@@ -0,0 +1,19 @@
++// Copyright 2025 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++//! FFI for `allocator_impls.h` is in a separate `.rs` file/module to
++//! better support conditional compilation (these functions are only
++//! used under `#[cfg(rust_allocator_uses_allocator_impls_h)]`.
++
++#[cxx::bridge(namespace = "rust_allocator_internal")]
++pub mod ffi {
++ extern "C++" {
++ include!("build/rust/allocator/allocator_impls.h");
++
++ unsafe fn alloc(size: usize, align: usize) -> *mut u8;
++ unsafe fn dealloc(p: *mut u8, size: usize, align: usize);
++ unsafe fn realloc(p: *mut u8, old_size: usize, align: usize, new_size: usize) -> *mut u8;
++ unsafe fn alloc_zeroed(size: usize, align: usize) -> *mut u8;
++ }
++}
diff --git a/www/iridium/files/patch-build_rust_allocator_compiler__specific.h b/www/iridium/files/patch-build_rust_allocator_compiler__specific.h
new file mode 100644
index 000000000000..7feb0c739d79
--- /dev/null
+++ b/www/iridium/files/patch-build_rust_allocator_compiler__specific.h
@@ -0,0 +1,41 @@
+--- build/rust/allocator/compiler_specific.h.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/compiler_specific.h
+@@ -0,0 +1,38 @@
++// Copyright 2023 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++// This file has been copied from //base/compiler_specific.h (and then
++// significantly trimmed to just the APIs / macros needed by //build/rust/std).
++//
++// TODO(crbug.com/40279749): Avoid code duplication / reuse code.
++
++#ifndef BUILD_RUST_ALLOCATOR_COMPILER_SPECIFIC_H_
++#define BUILD_RUST_ALLOCATOR_COMPILER_SPECIFIC_H_
++
++#include "build/build_config.h"
++
++#if defined(COMPILER_MSVC) && !defined(__clang__)
++#error "Only clang-cl is supported on Windows, see https://crbug.com/988071"
++#endif
++
++#if defined(__has_attribute)
++#define HAS_ATTRIBUTE(x) __has_attribute(x)
++#else
++#define HAS_ATTRIBUTE(x) 0
++#endif
++
++// Annotate a function indicating it should not be inlined.
++// Use like:
++// NOINLINE void DoStuff() { ... }
++#if defined(__clang__) && HAS_ATTRIBUTE(noinline)
++#define NOINLINE [[clang::noinline]]
++#elif defined(COMPILER_GCC) && HAS_ATTRIBUTE(noinline)
++#define NOINLINE __attribute__((noinline))
++#elif defined(COMPILER_MSVC)
++#define NOINLINE __declspec(noinline)
++#else
++#define NOINLINE
++#endif
++
++#endif // BUILD_RUST_ALLOCATOR_COMPILER_SPECIFIC_H_
diff --git a/www/iridium/files/patch-build_rust_allocator_immediate__crash.h b/www/iridium/files/patch-build_rust_allocator_immediate__crash.h
new file mode 100644
index 000000000000..7ab0f9d9c34c
--- /dev/null
+++ b/www/iridium/files/patch-build_rust_allocator_immediate__crash.h
@@ -0,0 +1,174 @@
+--- build/rust/allocator/immediate_crash.h.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/immediate_crash.h
+@@ -0,0 +1,171 @@
++// Copyright 2021 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++// This file has been copied from //base/immediate_crash.h.
++// TODO(crbug.com/40279749): Avoid code duplication / reuse code.
++
++#ifndef BUILD_RUST_ALLOCATOR_IMMEDIATE_CRASH_H_
++#define BUILD_RUST_ALLOCATOR_IMMEDIATE_CRASH_H_
++
++#include "build/build_config.h"
++
++// Crashes in the fastest possible way with no attempt at logging.
++// There are several constraints; see http://crbug.com/664209 for more context.
++//
++// - TRAP_SEQUENCE_() must be fatal. It should not be possible to ignore the
++// resulting exception or simply hit 'continue' to skip over it in a debugger.
++// - Different instances of TRAP_SEQUENCE_() must not be folded together, to
++// ensure crash reports are debuggable. Unlike __builtin_trap(), asm volatile
++// blocks will not be folded together.
++// Note: TRAP_SEQUENCE_() previously required an instruction with a unique
++// nonce since unlike clang, GCC folds together identical asm volatile
++// blocks.
++// - TRAP_SEQUENCE_() must produce a signal that is distinct from an invalid
++// memory access.
++// - TRAP_SEQUENCE_() must be treated as a set of noreturn instructions.
++// __builtin_unreachable() is used to provide that hint here. clang also uses
++// this as a heuristic to pack the instructions in the function epilogue to
++// improve code density.
++//
++// Additional properties that are nice to have:
++// - TRAP_SEQUENCE_() should be as compact as possible.
++// - The first instruction of TRAP_SEQUENCE_() should not change, to avoid
++// shifting crash reporting clusters. As a consequence of this, explicit
++// assembly is preferred over intrinsics.
++// Note: this last bullet point may no longer be true, and may be removed in
++// the future.
++
++// Note: TRAP_SEQUENCE Is currently split into two macro helpers due to the fact
++// that clang emits an actual instruction for __builtin_unreachable() on certain
++// platforms (see https://crbug.com/958675). In addition, the int3/bkpt/brk will
++// be removed in followups, so splitting it up like this now makes it easy to
++// land the followups.
++
++#if defined(COMPILER_GCC)
++
++#if BUILDFLAG(IS_NACL)
++
++// Crash report accuracy is not guaranteed on NaCl.
++#define TRAP_SEQUENCE1_() __builtin_trap()
++#define TRAP_SEQUENCE2_() asm volatile("")
++
++#elif defined(ARCH_CPU_X86_FAMILY)
++
++// TODO(crbug.com/40625592): In theory, it should be possible to use just
++// int3. However, there are a number of crashes with SIGILL as the exception
++// code, so it seems likely that there's a signal handler that allows execution
++// to continue after SIGTRAP.
++#define TRAP_SEQUENCE1_() asm volatile("int3")
++
++#if BUILDFLAG(IS_APPLE)
++// Intentionally empty: __builtin_unreachable() is always part of the sequence
++// (see IMMEDIATE_CRASH below) and already emits a ud2 on Mac.
++#define TRAP_SEQUENCE2_() asm volatile("")
++#else
++#define TRAP_SEQUENCE2_() asm volatile("ud2")
++#endif // BUILDFLAG(IS_APPLE)
++
++#elif defined(ARCH_CPU_ARMEL)
++
++// bkpt will generate a SIGBUS when running on armv7 and a SIGTRAP when running
++// as a 32 bit userspace app on arm64. There doesn't seem to be any way to
++// cause a SIGTRAP from userspace without using a syscall (which would be a
++// problem for sandboxing).
++// TODO(crbug.com/40625592): Remove bkpt from this sequence.
++#define TRAP_SEQUENCE1_() asm volatile("bkpt #0")
++#define TRAP_SEQUENCE2_() asm volatile("udf #0")
++
++#elif defined(ARCH_CPU_ARM64)
++
++// This will always generate a SIGTRAP on arm64.
++// TODO(crbug.com/40625592): Remove brk from this sequence.
++#define TRAP_SEQUENCE1_() asm volatile("brk #0")
++#define TRAP_SEQUENCE2_() asm volatile("hlt #0")
++
++#else
++
++// Crash report accuracy will not be guaranteed on other architectures, but at
++// least this will crash as expected.
++#define TRAP_SEQUENCE1_() __builtin_trap()
++#define TRAP_SEQUENCE2_() asm volatile("")
++
++#endif // ARCH_CPU_*
++
++#elif defined(COMPILER_MSVC)
++
++#if !defined(__clang__)
++
++// MSVC x64 doesn't support inline asm, so use the MSVC intrinsic.
++#define TRAP_SEQUENCE1_() __debugbreak()
++#define TRAP_SEQUENCE2_()
++
++#elif defined(ARCH_CPU_ARM64)
++
++// Windows ARM64 uses "BRK #F000" as its breakpoint instruction, and
++// __debugbreak() generates that in both VC++ and clang.
++#define TRAP_SEQUENCE1_() __debugbreak()
++// Intentionally empty: __builtin_unreachable() is always part of the sequence
++// (see IMMEDIATE_CRASH below) and already emits a ud2 on Win64,
++// https://crbug.com/958373
++#define TRAP_SEQUENCE2_() __asm volatile("")
++
++#else
++
++#define TRAP_SEQUENCE1_() asm volatile("int3")
++#define TRAP_SEQUENCE2_() asm volatile("ud2")
++
++#endif // __clang__
++
++#else
++
++#error No supported trap sequence!
++
++#endif // COMPILER_GCC
++
++#define TRAP_SEQUENCE_() \
++ do { \
++ TRAP_SEQUENCE1_(); \
++ TRAP_SEQUENCE2_(); \
++ } while (false)
++
++// CHECK() and the trap sequence can be invoked from a constexpr function.
++// This could make compilation fail on GCC, as it forbids directly using inline
++// asm inside a constexpr function. However, it allows calling a lambda
++// expression including the same asm.
++// The side effect is that the top of the stacktrace will not point to the
++// calling function, but to this anonymous lambda. This is still useful as the
++// full name of the lambda will typically include the name of the function that
++// calls CHECK() and the debugger will still break at the right line of code.
++#if !defined(COMPILER_GCC) || defined(__clang__)
++
++#define WRAPPED_TRAP_SEQUENCE_() TRAP_SEQUENCE_()
++
++#else
++
++#define WRAPPED_TRAP_SEQUENCE_() \
++ do { \
++ [] { TRAP_SEQUENCE_(); }(); \
++ } while (false)
++
++#endif // !defined(COMPILER_GCC) || defined(__clang__)
++
++#if defined(__clang__) || defined(COMPILER_GCC)
++
++// __builtin_unreachable() hints to the compiler that this is noreturn and can
++// be packed in the function epilogue.
++#define IMMEDIATE_CRASH() \
++ ({ \
++ WRAPPED_TRAP_SEQUENCE_(); \
++ __builtin_unreachable(); \
++ })
++
++#else
++
++// This is supporting non-chromium user of logging.h to build with MSVC, like
++// pdfium. On MSVC there is no __builtin_unreachable().
++#define IMMEDIATE_CRASH() WRAPPED_TRAP_SEQUENCE_()
++
++#endif // defined(__clang__) || defined(COMPILER_GCC)
++
++#endif // BUILD_RUST_ALLOCATOR_IMMEDIATE_CRASH_H_
diff --git a/www/iridium/files/patch-build_rust_allocator_lib.rs b/www/iridium/files/patch-build_rust_allocator_lib.rs
new file mode 100644
index 000000000000..89fddf278294
--- /dev/null
+++ b/www/iridium/files/patch-build_rust_allocator_lib.rs
@@ -0,0 +1,122 @@
+--- build/rust/allocator/lib.rs.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/lib.rs
+@@ -0,0 +1,119 @@
++// Copyright 2025 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++//! Define the allocator that Rust code in Chrome should use.
++//!
++//! Any final artifact that depends on this crate, even transitively, will use
++//! the allocator defined here.
++//!
++//! List of known issues:
++//!
++//! 1. We'd like to use PartitionAlloc on Windows, but the stdlib uses Windows
++//! heap functions directly that PartitionAlloc can not intercept.
++//! 2. We'd like `Vec::try_reserve` to fail at runtime on Linux instead of
++//! crashing in malloc() where PartitionAlloc replaces that function.
++
++// Required to apply weak linkage to symbols.
++//
++// TODO(https://crbug.com/410596442): Stop using unstable features here.
++// https://github.com/rust-lang/rust/issues/29603 tracks stabilization of the `linkage` feature.
++#![feature(linkage)]
++// Required to apply `#[rustc_std_internal_symbol]` to our alloc error handler
++// so the name is correctly mangled as rustc expects.
++//
++// TODO(https://crbug.com/410596442): Stop using internal features here.
++#![allow(internal_features)]
++#![feature(rustc_attrs)]
++
++// This module is in a separate source file to avoid having to teach `cxxbridge`
++// about conditional compilation.
++#[cfg(rust_allocator_uses_allocator_impls_h)]
++mod allocator_impls_ffi;
++
++/// Module that provides `#[global_allocator]` / `GlobalAlloc` interface for
++/// using an allocator from C++.
++#[cfg(rust_allocator_uses_allocator_impls_h)]
++mod cpp_allocator {
++ use super::allocator_impls_ffi::ffi;
++ use std::alloc::{GlobalAlloc, Layout};
++
++ struct Allocator;
++
++ unsafe impl GlobalAlloc for Allocator {
++ unsafe fn alloc(&self, layout: Layout) -> *mut u8 {
++ unsafe { ffi::alloc(layout.size(), layout.align()) }
++ }
++
++ unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) {
++ unsafe {
++ ffi::dealloc(ptr, layout.size(), layout.align());
++ }
++ }
++
++ unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut u8 {
++ unsafe { ffi::alloc_zeroed(layout.size(), layout.align()) }
++ }
++
++ unsafe fn realloc(&self, ptr: *mut u8, layout: Layout, new_size: usize) -> *mut u8 {
++ unsafe { ffi::realloc(ptr, layout.size(), layout.align(), new_size) }
++ }
++ }
++
++ #[global_allocator]
++ static GLOBAL: Allocator = Allocator;
++}
++
++/// Module that provides `#[global_allocator]` / `GlobalAlloc` interface for
++/// using the default Rust allocator.
++#[cfg(not(rust_allocator_uses_allocator_impls_h))]
++mod rust_allocator {
++ #[global_allocator]
++ static GLOBAL: std::alloc::System = std::alloc::System;
++}
++
++/// Module that provides global symbols that are needed both by `cpp_allocator`
++/// and `rust_allocator`.
++///
++/// When `rustc` drives linking, then it will define the symbols below. But
++/// Chromium only uses `rustc` to link Rust-only executables (e.g. `build.rs`
++/// scripts) and otherwise uses a non-Rust linker. This is why we have to
++/// manually define a few symbols below. We define those symbols
++/// as "weak" symbols, so that Rust-provided symbols "win" in case where Rust
++/// actually does drive the linking. This hack works (not only for Chromium,
++/// but also for google3 and other projects), but isn't officially supported by
++/// `rustc`.
++///
++/// TODO(https://crbug.com/410596442): Stop using internal features here.
++mod both_allocators {
++ /// As part of rustc's contract for using `#[global_allocator]` without
++ /// rustc-generated shims we must define this symbol, since we are opting in
++ /// to unstable functionality. See https://github.com/rust-lang/rust/issues/123015
++ #[no_mangle]
++ #[linkage = "weak"]
++ static __rust_no_alloc_shim_is_unstable: u8 = 0;
++
++ // Mangle the symbol name as rustc expects.
++ #[rustc_std_internal_symbol]
++ #[allow(non_upper_case_globals)]
++ #[linkage = "weak"]
++ static __rust_alloc_error_handler_should_panic: u8 = 0;
++
++ // Mangle the symbol name as rustc expects.
++ #[rustc_std_internal_symbol]
++ #[allow(non_upper_case_globals)]
++ #[linkage = "weak"]
++ fn __rust_alloc_error_handler(_size: usize, _align: usize) {
++ // TODO(lukasza): Investigate if we can just call `std::process::abort()` here.
++ // (Not really _needed_, but it could simplify code a little bit.)
++ unsafe { ffi::alloc_error_handler_impl() }
++ }
++
++ #[cxx::bridge(namespace = "rust_allocator_internal")]
++ mod ffi {
++ extern "C++" {
++ include!("build/rust/allocator/alloc_error_handler_impl.h");
++ unsafe fn alloc_error_handler_impl();
++ }
++ }
++}
diff --git a/www/iridium/files/patch-build_rust_cargo__crate.gni b/www/iridium/files/patch-build_rust_cargo__crate.gni
new file mode 100644
index 000000000000..a1590f727aa3
--- /dev/null
+++ b/www/iridium/files/patch-build_rust_cargo__crate.gni
@@ -0,0 +1,25 @@
+--- build/rust/cargo_crate.gni.orig 2025-05-20 09:16:26 UTC
++++ build/rust/cargo_crate.gni
+@@ -259,6 +259,12 @@ template("cargo_crate") {
+ # Don't import the `chromium` crate into third-party code.
+ no_chromium_prelude = true
+
++ # Don't depend on the chrome-specific #[global_allocator] crate from
++ # third-party code. This avoids some dependency cycle issues. The allocator
++ # crate will still be used if it exists anywhere in the dependency graph for
++ # a given linked artifact.
++ no_allocator_crate = true
++
+ rustc_metadata = _rustc_metadata
+
+ # TODO(crbug.com/40259764): don't default to true. This requires changes to
+@@ -482,6 +488,9 @@ template("cargo_crate") {
+
+ # Don't import the `chromium` crate into third-party code.
+ no_chromium_prelude = true
++
++ # Build scripts do not need to link to chrome's allocator.
++ no_allocator_crate = true
+
+ # The ${_build_script_name}_output target looks for the exe in this
+ # location. Due to how the Windows component build works, this has to
diff --git a/www/iridium/files/patch-build_rust_rust__macro.gni b/www/iridium/files/patch-build_rust_rust__macro.gni
new file mode 100644
index 000000000000..0dafc3819aa1
--- /dev/null
+++ b/www/iridium/files/patch-build_rust_rust__macro.gni
@@ -0,0 +1,12 @@
+--- build/rust/rust_macro.gni.orig 2025-05-20 09:16:26 UTC
++++ build/rust/rust_macro.gni
+@@ -16,6 +16,9 @@ template("rust_macro") {
+ forward_variables_from(invoker, TESTONLY_AND_VISIBILITY)
+ proc_macro_configs = invoker.configs
+ target_type = "rust_proc_macro"
++
++ # Macros are loaded by rustc and shouldn't use chrome's allocation routines.
++ no_allocator_crate = true
+ }
+ }
+
diff --git a/www/iridium/files/patch-build_rust_rust__target.gni b/www/iridium/files/patch-build_rust_rust__target.gni
new file mode 100644
index 000000000000..f4ad6f04fc45
--- /dev/null
+++ b/www/iridium/files/patch-build_rust_rust__target.gni
@@ -0,0 +1,13 @@
+--- build/rust/rust_target.gni.orig 2025-05-20 09:16:26 UTC
++++ build/rust/rust_target.gni
+@@ -339,6 +339,10 @@ template("rust_target") {
+ _rust_deps += [ "//build/rust/std" ]
+ }
+
++ if (!defined(invoker.no_allocator_crate) || !invoker.no_allocator_crate) {
++ _rust_deps += [ "//build/rust/allocator" ]
++ }
++
+ if (_build_unit_tests) {
+ _unit_test_target = "${_target_name}_unittests"
+ if (defined(invoker.unit_test_target)) {
diff --git a/www/iridium/files/patch-build_rust_std_BUILD.gn b/www/iridium/files/patch-build_rust_std_BUILD.gn
index d0b722a2cab3..c6c2801bd47d 100644
--- a/www/iridium/files/patch-build_rust_std_BUILD.gn
+++ b/www/iridium/files/patch-build_rust_std_BUILD.gn
@@ -1,6 +1,58 @@
---- build/rust/std/BUILD.gn.orig 2025-05-07 06:48:23 UTC
+--- build/rust/std/BUILD.gn.orig 2025-05-20 09:16:26 UTC
+++ build/rust/std/BUILD.gn
-@@ -89,13 +89,20 @@ if (toolchain_has_rust) {
+@@ -15,51 +15,12 @@
+ # allocator functions to PartitionAlloc when `use_partition_alloc_as_malloc` is
+ # true, so that Rust and C++ use the same allocator backend.
+
+-import("//build/buildflag_header.gni")
+ import("//build/config/compiler/compiler.gni")
+ import("//build/config/coverage/coverage.gni")
+ import("//build/config/rust.gni")
+ import("//build/config/sanitizers/sanitizers.gni")
+
+-rust_allocator_uses_partition_alloc = false
+-if (build_with_chromium) {
+- import("//base/allocator/partition_allocator/partition_alloc.gni")
+- rust_allocator_uses_partition_alloc = use_partition_alloc_as_malloc
+-}
+-
+-buildflag_header("buildflags") {
+- header = "buildflags.h"
+- flags = [
+- "RUST_ALLOCATOR_USES_PARTITION_ALLOC=$rust_allocator_uses_partition_alloc",
+- ]
+- visibility = [ ":*" ]
+-}
+-
+ if (toolchain_has_rust) {
+- # If clang performs the link step, we need to provide the allocator symbols
+- # that are normally injected by rustc during linking.
+- #
+- # We also "happen to" use this to redirect allocations to PartitionAlloc,
+- # though that would be better done through a #[global_allocator] crate (see
+- # above).
+- source_set("remap_alloc") {
+- public_deps = []
+- if (rust_allocator_uses_partition_alloc) {
+- public_deps += [ "//base/allocator/partition_allocator:partition_alloc" ]
+- }
+- deps = [ ":buildflags" ]
+- sources = [
+- # `alias.*`, `compiler_specific.h`, and `immediate_crash.*` have been
+- # copied from `//base`.
+- # TODO(crbug.com/40279749): Avoid duplication / reuse code.
+- "alias.cc",
+- "alias.h",
+- "compiler_specific.h",
+- "immediate_crash.h",
+- "remap_alloc.cc",
+- ]
+- }
+-
+ # List of Rust stdlib rlibs which are present in the official Rust toolchain
+ # we are using from the Android team. This is usually a version or two behind
+ # nightly. Generally this matches the toolchain we build ourselves, but if
+@@ -89,13 +50,20 @@ if (toolchain_has_rust) {
# These are no longer present in the Windows toolchain.
stdlib_files += [
"addr2line",
@@ -22,7 +74,7 @@
}
if (toolchain_for_rust_host_build_tools) {
-@@ -115,7 +122,6 @@ if (toolchain_has_rust) {
+@@ -115,7 +83,6 @@ if (toolchain_has_rust) {
# don't need to pass to the C++ linker because they're used for specialized
# purposes.
skip_stdlib_files = [
@@ -30,3 +82,25 @@
"rustc_std_workspace_alloc",
"rustc_std_workspace_core",
"rustc_std_workspace_std",
+@@ -269,8 +236,6 @@ if (toolchain_has_rust) {
+ foreach(libname, stdlib_files + skip_stdlib_files) {
+ deps += [ "rules:$libname" ]
+ }
+-
+- public_deps = [ ":remap_alloc" ]
+ }
+ } else {
+ action("find_stdlib") {
+@@ -396,12 +361,6 @@ if (toolchain_has_rust) {
+ ":stdlib_public_dependent_libs",
+ ]
+ deps = [ ":prebuilt_rustc_copy_to_sysroot" ]
+-
+- # The host builds tools toolchain supports Rust only and does not use
+- # the allocator remapping to point it to PartitionAlloc.
+- if (!toolchain_for_rust_host_build_tools) {
+- deps += [ ":remap_alloc" ]
+- }
+ }
+ }
+ }
diff --git a/www/jira-cli/Makefile b/www/jira-cli/Makefile
index 9ab55e1bf213..f687cfb6df20 100644
--- a/www/jira-cli/Makefile
+++ b/www/jira-cli/Makefile
@@ -1,6 +1,7 @@
PORTNAME= jira-cli
DISTVERSIONPREFIX= v
DISTVERSION= 1.6.0
+PORTREVISION= 1
CATEGORIES= www
DIST_SUBDIR= jira-cli
diff --git a/www/katana/Makefile b/www/katana/Makefile
index 7c45b067059e..fed705370255 100644
--- a/www/katana/Makefile
+++ b/www/katana/Makefile
@@ -1,6 +1,7 @@
PORTNAME= katana
DISTVERSIONPREFIX= v
DISTVERSION= 1.1.3
+PORTREVISION= 1
CATEGORIES= www
MAINTAINER= dutra@FreeBSD.org
diff --git a/www/kineto/Makefile b/www/kineto/Makefile
index b6ea14cbdfa4..71141ae5727a 100644
--- a/www/kineto/Makefile
+++ b/www/kineto/Makefile
@@ -1,6 +1,6 @@
PORTNAME= kineto
DISTVERSION= g20211104
-PORTREVISION= 24
+PORTREVISION= 25
CATEGORIES= www
MAINTAINER= corey@electrickite.org
diff --git a/www/lzr/Makefile b/www/lzr/Makefile
index 77272c708880..d80032db23bf 100644
--- a/www/lzr/Makefile
+++ b/www/lzr/Makefile
@@ -1,7 +1,7 @@
PORTNAME= lzr
DISTVERSIONPREFIX= v
DISTVERSION= 1
-PORTREVISION= 12
+PORTREVISION= 13
CATEGORIES= www
MAINTAINER= yuri@FreeBSD.org
diff --git a/www/miniflux/Makefile b/www/miniflux/Makefile
index 8473559b1cc8..6f56f2b0576d 100644
--- a/www/miniflux/Makefile
+++ b/www/miniflux/Makefile
@@ -1,5 +1,6 @@
PORTNAME= miniflux
DISTVERSION= 2.2.8
+PORTREVISION= 1
CATEGORIES= www
MAINTAINER= krion@FreeBSD.org
diff --git a/www/mirrorselect/Makefile b/www/mirrorselect/Makefile
index 29b5ea3a9858..fc05bad1c168 100644
--- a/www/mirrorselect/Makefile
+++ b/www/mirrorselect/Makefile
@@ -1,7 +1,7 @@
PORTNAME= mirrorselect
DISTVERSIONPREFIX= v
DISTVERSION= 0.9.0
-PORTREVISION= 25
+PORTREVISION= 26
CATEGORIES= www ports-mgmt
MAINTAINER= aly@aaronly.me
diff --git a/www/moin2/Makefile b/www/moin2/Makefile
index f9cfdc0b4cf6..73c81803afa8 100644
--- a/www/moin2/Makefile
+++ b/www/moin2/Makefile
@@ -4,7 +4,7 @@ CATEGORIES= www python
MASTER_SITES= https://github.com/moinwiki/moin/releases/download/${DISTVERSION}/
PKGNAMESUFFIX= 2
-MAINTAINER= bofh@FreeBSD.org
+MAINTAINER= ports@FreeBSD.org
COMMENT= Easy to use, full-featured and extensible wiki software package
WWW= https://moinmo.in/
diff --git a/www/morty/Makefile b/www/morty/Makefile
index 79686de89180..ef0e8647b324 100644
--- a/www/morty/Makefile
+++ b/www/morty/Makefile
@@ -2,7 +2,7 @@ PORTNAME= morty
DISTVERSIONPREFIX= v
DISTVERSION= 0.2.0-12
DISTVERSIONSUFFIX= -gfe94d9a
-PORTREVISION= 25
+PORTREVISION= 26
CATEGORIES= www net
MAINTAINER= yuri@FreeBSD.org
diff --git a/www/nextcloud-appointments/Makefile b/www/nextcloud-appointments/Makefile
index 251b0f2a29de..0a65342e1a21 100644
--- a/www/nextcloud-appointments/Makefile
+++ b/www/nextcloud-appointments/Makefile
@@ -1,5 +1,5 @@
PORTNAME= appointments
-PORTVERSION= 2.4.3
+PORTVERSION= 2.4.4
CATEGORIES= www
MASTER_SITES= https://github.com/${GH_ACCOUNT}/${PORTNAME}/raw/${DISTVERSIONPREFIX}${DISTVERSION}/build/artifacts/appstore/
DISTVERSIONPREFIX= v
diff --git a/www/nextcloud-appointments/distinfo b/www/nextcloud-appointments/distinfo
index 9305ffefff03..b078a88d6d6f 100644
--- a/www/nextcloud-appointments/distinfo
+++ b/www/nextcloud-appointments/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1743615391
-SHA256 (nextcloud/appointments-2.4.3/appointments.tar.gz) = 96cd6b2e7b17ed4f70a365a412dce1aef9624dc59497a2d65e8944ffd7ad27bf
-SIZE (nextcloud/appointments-2.4.3/appointments.tar.gz) = 2206164
+TIMESTAMP = 1747764016
+SHA256 (nextcloud/appointments-2.4.4/appointments.tar.gz) = 6b18195db34424edf4dbeab02f83710d19813251c5674f793168935c448b45d5
+SIZE (nextcloud/appointments-2.4.4/appointments.tar.gz) = 2215489
diff --git a/www/nginx-devel/Makefile b/www/nginx-devel/Makefile
index 0bc9b585b4ab..04ccd9273c1b 100644
--- a/www/nginx-devel/Makefile
+++ b/www/nginx-devel/Makefile
@@ -1,6 +1,6 @@
PORTNAME?= nginx
PORTVERSION= 1.28.0
-PORTREVISION= 4
+PORTREVISION= 5
CATEGORIES= www
MASTER_SITES= https://nginx.org/download/ \
LOCAL/osa
diff --git a/www/nginx-devel/Makefile.extmod b/www/nginx-devel/Makefile.extmod
index 7011ee65f3f5..2bbd374b1d88 100644
--- a/www/nginx-devel/Makefile.extmod
+++ b/www/nginx-devel/Makefile.extmod
@@ -143,7 +143,7 @@ HTTP_PUSH_VARS= DSO_EXTMODS+=push
HTTP_PUSH_STREAM_GH_TUPLE= wandenberg:nginx-push-stream-module:0.6.0:pushstream
HTTP_PUSH_STREAM_VARS= DSO_EXTMODS+=pushstream
-HTTP_REDIS_GH_TUPLE= osokin:ngx_http_redis:ad7d90c:redis
+HTTP_REDIS_GH_TUPLE= osokin:ngx_http_redis:0.4.0:redis
HTTP_REDIS_VARS= DSO_EXTMODS+=redis
HTTP_SLICE_AHEAD_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-src_http_modules_ngx_http_slice_read_ahead.c
diff --git a/www/nginx-devel/distinfo b/www/nginx-devel/distinfo
index 558ce00747a7..3f3b1da00e21 100644
--- a/www/nginx-devel/distinfo
+++ b/www/nginx-devel/distinfo
@@ -1,10 +1,10 @@
-TIMESTAMP = 1747580329
+TIMESTAMP = 1747855224
SHA256 (nginx-1.28.0.tar.gz) = c6b5c6b086c0df9d3ca3ff5e084c1d0ef909e6038279c71c1c3e985f576ff76a
SIZE (nginx-1.28.0.tar.gz) = 1280111
SHA256 (nginx_mogilefs_module-1.0.4.tar.gz) = 7ac230d30907f013dff8d435a118619ea6168aa3714dba62c6962d350c6295ae
SIZE (nginx_mogilefs_module-1.0.4.tar.gz) = 11208
-SHA256 (osokin-ngx_http_redis-ad7d90c_GH0.tar.gz) = 3ac409accbfdc2da2288a37eba8e918b63cad460dab6b29e9f3e7b9823dca744
-SIZE (osokin-ngx_http_redis-ad7d90c_GH0.tar.gz) = 12724
+SHA256 (osokin-ngx_http_redis-0.4.0_GH0.tar.gz) = e5b699243035575cb8ffcd26fc3a8287bcd11ff414e30fd0a52c96729fd22d0d
+SIZE (osokin-ngx_http_redis-0.4.0_GH0.tar.gz) = 11858
SHA256 (passenger-6.0.27.tar.gz) = 82c830aee98feece09e84309c2d0c6bb3f7b22a3c8e33cfe93b5e0d498615d0f
SIZE (passenger-6.0.27.tar.gz) = 7548637
SHA256 (msva-nginx_ajp_module-fcbb2cc_GH0.tar.gz) = 522e94c59f5783f281d868ede2adf325bf2f8ffb9e62cf8451d4b9ac0516916c
diff --git a/www/nginx-devel/files/extra-patch-ngx_http_redis_module.c b/www/nginx-devel/files/extra-patch-ngx_http_redis_module.c
deleted file mode 100644
index 3dacd39ee6c4..000000000000
--- a/www/nginx-devel/files/extra-patch-ngx_http_redis_module.c
+++ /dev/null
@@ -1,34 +0,0 @@
---- ../ngx_http_redis-0.3.9/ngx_http_redis_module.c.orig 2022-07-10 22:10:19.031893000 -0400
-+++ ../ngx_http_redis-0.3.9/ngx_http_redis_module.c 2022-07-10 22:09:41.271731000 -0400
-@@ -562,7 +562,7 @@
- /* if defined gzip_flag... */
- if (rlcf->gzip_flag) {
- /* hash init */
-- h = ngx_list_push(&r->upstream->headers_in.headers);
-+ h = ngx_list_push(&r->headers_out.headers);
- if (h == NULL) {
- return NGX_ERROR;
- }
-@@ -571,19 +571,11 @@
- * add Content-Encoding header for future gunzipping
- * with ngx_http_gunzip_filter module
- */
-- h->hash = ngx_hash(ngx_hash(ngx_hash(ngx_hash(
-- ngx_hash(ngx_hash(ngx_hash(
-- ngx_hash(ngx_hash(ngx_hash(
-- ngx_hash(ngx_hash(ngx_hash(
-- ngx_hash(ngx_hash('c', 'o'), 'n'), 't'), 'e'),
-- 'n'), 't'), '-'), 'e'), 'n'), 'c'), 'o'),
-- 'd'), 'i'), 'n'), 'g');
-+ h->hash = 1;
-+ h->next = NULL;
- ngx_str_set(&h->key, "Content-Encoding");
- ngx_str_set(&h->value, "gzip");
-- h->lowcase_key = (u_char*) "content-encoding";
--#if (NGX_HTTP_GZIP)
-- u->headers_in.content_encoding = h;
--#endif
-+ r->headers_out.content_encoding = h;
- }
-
- /* try to find end of string */
diff --git a/www/nginx-prometheus-exporter/Makefile b/www/nginx-prometheus-exporter/Makefile
index 2258223e05b0..1933131612be 100644
--- a/www/nginx-prometheus-exporter/Makefile
+++ b/www/nginx-prometheus-exporter/Makefile
@@ -1,6 +1,7 @@
PORTNAME= nginx-prometheus-exporter
DISTVERSIONPREFIX= v
DISTVERSION= 1.4.2
+PORTREVISION= 1
CATEGORIES= www
MAINTAINER= arcade@b1t.name
diff --git a/www/nginx-vts-exporter/Makefile b/www/nginx-vts-exporter/Makefile
index dc46d234bef3..3b6cd1a12668 100644
--- a/www/nginx-vts-exporter/Makefile
+++ b/www/nginx-vts-exporter/Makefile
@@ -1,7 +1,7 @@
PORTNAME= nginx-vts-exporter
DISTVERSIONPREFIX= v
DISTVERSION= 0.10.7
-PORTREVISION= 24
+PORTREVISION= 25
CATEGORIES= www
MAINTAINER= joneum@FreeBSD.org
diff --git a/www/node22/Makefile b/www/node22/Makefile
index bd3f8a2dcaf2..d8a6b7ca7181 100644
--- a/www/node22/Makefile
+++ b/www/node22/Makefile
@@ -66,6 +66,8 @@ ICU_CONFIGURE_ON= --with-intl=system-icu
ICU_LIB_DEPENDS= libicui18n.so:devel/icu
JIT_CONFIGURE_OFF= --v8-lite-mode
+CXXFLAGS_powerpc64= -mpower8-vector
+
.include "Makefile.version"
.include <bsd.port.options.mk>
diff --git a/www/oneshot/Makefile b/www/oneshot/Makefile
index 16a0f338f272..7abdcdb9b836 100644
--- a/www/oneshot/Makefile
+++ b/www/oneshot/Makefile
@@ -1,7 +1,7 @@
PORTNAME= oneshot
DISTVERSIONPREFIX= v
DISTVERSION= 1.5.1
-PORTREVISION= 26
+PORTREVISION= 27
CATEGORIES= www
MAINTAINER= lcook@FreeBSD.org
diff --git a/www/p5-Mojo-DOM58/Makefile b/www/p5-Mojo-DOM58/Makefile
index 5bd47118b317..90c8ecb821d2 100644
--- a/www/p5-Mojo-DOM58/Makefile
+++ b/www/p5-Mojo-DOM58/Makefile
@@ -1,5 +1,5 @@
PORTNAME= Mojo-DOM58
-PORTVERSION= 3.001
+PORTVERSION= 3.002
CATEGORIES= www perl5
MASTER_SITES= CPAN
MASTER_SITE_SUBDIR= CPAN:DBOOK
@@ -12,6 +12,8 @@ WWW= https://metacpan.org/dist/Mojo-DOM58
LICENSE= ART20
LICENSE_FILE= ${WRKSRC}/LICENSE
+RUN_DEPENDS= p5-Role-Tiny>=0:devel/p5-Role-Tiny
+
USES= perl5
USE_PERL5= configure
diff --git a/www/p5-Mojo-DOM58/distinfo b/www/p5-Mojo-DOM58/distinfo
index 4f9ae17fce35..8e34b489f186 100644
--- a/www/p5-Mojo-DOM58/distinfo
+++ b/www/p5-Mojo-DOM58/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1623821408
-SHA256 (Mojo-DOM58-3.001.tar.gz) = 18b26d541e5314415adddf314369d940c8ba06b11234ca506fdbe6cf224f5796
-SIZE (Mojo-DOM58-3.001.tar.gz) = 76705
+TIMESTAMP = 1747835614
+SHA256 (Mojo-DOM58-3.002.tar.gz) = 1b066035a33553296c9e970d4196b759842a4af1d727b195a60b5db0ac14e338
+SIZE (Mojo-DOM58-3.002.tar.gz) = 78748
diff --git a/www/phpfpmtop/Makefile b/www/phpfpmtop/Makefile
index 28cdea650354..ca95f7014c77 100644
--- a/www/phpfpmtop/Makefile
+++ b/www/phpfpmtop/Makefile
@@ -1,7 +1,7 @@
PORTNAME= phpfpmtop
DISTVERSIONPREFIX= v
DISTVERSION= 0.2
-PORTREVISION= 12
+PORTREVISION= 13
CATEGORIES= www devel
MAINTAINER= mops@punkt.de
diff --git a/www/pomerium/Makefile b/www/pomerium/Makefile
index 4f0fe1e3ddd3..993bc059e8ad 100644
--- a/www/pomerium/Makefile
+++ b/www/pomerium/Makefile
@@ -1,7 +1,7 @@
PORTNAME= pomerium
DISTVERSIONPREFIX= v
DISTVERSION= 0.8.4
-PORTREVISION= 9
+PORTREVISION= 10
PORTEPOCH= 1
CATEGORIES= www
diff --git a/www/proxygen/Makefile b/www/proxygen/Makefile
index a97fe5968f2a..e29bf0e39b54 100644
--- a/www/proxygen/Makefile
+++ b/www/proxygen/Makefile
@@ -1,6 +1,6 @@
PORTNAME= proxygen
DISTVERSIONPREFIX= v
-DISTVERSION= 2025.05.12.00
+DISTVERSION= 2025.05.19.00
CATEGORIES= www
MAINTAINER= yuri@FreeBSD.org
diff --git a/www/proxygen/distinfo b/www/proxygen/distinfo
index ea2c88d06979..8ff6ca192308 100644
--- a/www/proxygen/distinfo
+++ b/www/proxygen/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1747102739
-SHA256 (facebook-proxygen-v2025.05.12.00_GH0.tar.gz) = 1503c296970790e79a543c524185886296e51a01ca27e649c639cb2de9283650
-SIZE (facebook-proxygen-v2025.05.12.00_GH0.tar.gz) = 1217212
+TIMESTAMP = 1747730524
+SHA256 (facebook-proxygen-v2025.05.19.00_GH0.tar.gz) = 9f228584d42be9381bdc044a8289f2a6db34fae2e8f23239e9748fb37938edc6
+SIZE (facebook-proxygen-v2025.05.19.00_GH0.tar.gz) = 1217144
diff --git a/www/py-django-cms/Makefile b/www/py-django-cms/Makefile
index ceb746724eb2..a259ecd7f3d6 100644
--- a/www/py-django-cms/Makefile
+++ b/www/py-django-cms/Makefile
@@ -1,5 +1,5 @@
PORTNAME= django-cms
-PORTVERSION= 4.1.6
+PORTVERSION= 5.0.0
CATEGORIES= www python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
diff --git a/www/py-django-cms/distinfo b/www/py-django-cms/distinfo
index c6203f9de516..23a5dd29c01c 100644
--- a/www/py-django-cms/distinfo
+++ b/www/py-django-cms/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1746605285
-SHA256 (django_cms-4.1.6.tar.gz) = fdba4b4468c32937151ff91eea71d8067e352ddddcecbdac2724cd5d9c31920f
-SIZE (django_cms-4.1.6.tar.gz) = 5107485
+TIMESTAMP = 1747790352
+SHA256 (django_cms-5.0.0.tar.gz) = 2249129a767f77358e62a5089b704cd507e237688802791b51254fe7a882fc19
+SIZE (django_cms-5.0.0.tar.gz) = 4932664
diff --git a/www/pydio-cells/Makefile b/www/pydio-cells/Makefile
index 38c0a5e7c61f..ddd1e66532d9 100644
--- a/www/pydio-cells/Makefile
+++ b/www/pydio-cells/Makefile
@@ -1,7 +1,7 @@
PORTNAME= cells
DISTVERSIONPREFIX= v
DISTVERSION= 4.4.12
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= www
PKGNAMEPREFIX= pydio-
diff --git a/www/remark42/Makefile b/www/remark42/Makefile
index efb6674ea62f..81a1bcf22f12 100644
--- a/www/remark42/Makefile
+++ b/www/remark42/Makefile
@@ -1,7 +1,7 @@
PORTNAME= remark42
DISTVERSIONPREFIX= v
DISTVERSION= 1.14.0
-PORTREVISION= 3
+PORTREVISION= 4
CATEGORIES= www
MASTER_SITES= LOCAL/delphij:npmcache
DISTFILES= ${PORTNAME}-npm-cache-${DISTVERSION}${EXTRACT_SUFX}:npmcache
diff --git a/www/s/Makefile b/www/s/Makefile
index a841bd2a859c..c1453b2eba31 100644
--- a/www/s/Makefile
+++ b/www/s/Makefile
@@ -1,7 +1,7 @@
PORTNAME= s
DISTVERSIONPREFIX= v
DISTVERSION= 0.7.1
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= www
MAINTAINER= yuri@FreeBSD.org
diff --git a/www/selenium/Makefile b/www/selenium/Makefile
index e2551097a07f..48dc76afe821 100644
--- a/www/selenium/Makefile
+++ b/www/selenium/Makefile
@@ -1,8 +1,8 @@
PORTNAME= selenium
-PORTVERSION= 4.26.0
+DISTVERSION= 4.32.0
CATEGORIES= www devel java
-MASTER_SITES= https://github.com/SeleniumHQ/${PORTNAME}/releases/download/${PORTNAME}-${PORTVERSION}/
-DISTNAME= selenium-server-${PORTVERSION}
+MASTER_SITES= https://github.com/SeleniumHQ/${PORTNAME}/releases/download/${PORTNAME}-${DISTVERSION}/
+DISTNAME= selenium-server-${DISTVERSION}
EXTRACT_SUFX= .jar
EXTRACT_ONLY=
@@ -21,7 +21,7 @@ USE_RC_SUBR= selenium
NO_ARCH= yes
NO_BUILD= yes
SUB_LIST+= JAVA_HOME=${JAVA_HOME} \
- SELENIUM_VERSION=${PORTVERSION}
+ SELENIUM_VERSION=${DISTVERSION}
SELENIUM_HOME= ${PREFIX}/selenium
diff --git a/www/selenium/distinfo b/www/selenium/distinfo
index a9ad3f875f3a..a6af3d02879f 100644
--- a/www/selenium/distinfo
+++ b/www/selenium/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1731376689
-SHA256 (selenium-server-4.26.0.jar) = 19138985733452abe00339350fd74571a43d11ef8aad55a29c18d33f326ccf0a
-SIZE (selenium-server-4.26.0.jar) = 42632726
+TIMESTAMP = 1747707505
+SHA256 (selenium-server-4.32.0.jar) = a2a40741368a4251b9ba60469a048e4fae9417491171d9faf7ce55cc40320335
+SIZE (selenium-server-4.32.0.jar) = 42675799
diff --git a/www/threejs/Makefile b/www/threejs/Makefile
index f73e22a44cca..7efa03b1d3e3 100644
--- a/www/threejs/Makefile
+++ b/www/threejs/Makefile
@@ -1,5 +1,5 @@
PORTNAME= three.js
-PORTVERSION= 175
+PORTVERSION= 176
DISTVERSIONPREFIX= r
CATEGORIES= www
diff --git a/www/threejs/distinfo b/www/threejs/distinfo
index 1bc6f4bdb295..f0d4578b3820 100644
--- a/www/threejs/distinfo
+++ b/www/threejs/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1744361437
-SHA256 (mrdoob-three.js-r175_GH0.tar.gz) = ecd110a3f27c6124d5eb27479a038dcc8298317475a9c5c262f532d43e9e90aa
-SIZE (mrdoob-three.js-r175_GH0.tar.gz) = 366937083
+TIMESTAMP = 1747769141
+SHA256 (mrdoob-three.js-r176_GH0.tar.gz) = 6f42a90cafe21532a55f68db48ee9243aa1bdaca9b045946fa8478d08b0c068a
+SIZE (mrdoob-three.js-r176_GH0.tar.gz) = 367426579
diff --git a/www/threejs/pkg-plist b/www/threejs/pkg-plist
index df9e3ad869c3..8032b18e4ad1 100644
--- a/www/threejs/pkg-plist
+++ b/www/threejs/pkg-plist
@@ -1,9 +1,3 @@
-%%WWWDIR%%/Three.Core.js
-%%WWWDIR%%/Three.Legacy.js
-%%WWWDIR%%/Three.TSL.js
-%%WWWDIR%%/Three.WebGPU.Nodes.js
-%%WWWDIR%%/Three.WebGPU.js
-%%WWWDIR%%/Three.js
%%WWWDIR%%/animation/AnimationAction.js
%%WWWDIR%%/animation/AnimationClip.js
%%WWWDIR%%/animation/AnimationMixer.js
@@ -49,12 +43,6 @@
%%WWWDIR%%/core/Uniform.js
%%WWWDIR%%/core/UniformsGroup.js
%%WWWDIR%%/extras/Controls.js
-%%WWWDIR%%/extras/DataUtils.js
-%%WWWDIR%%/extras/Earcut.js
-%%WWWDIR%%/extras/ImageUtils.js
-%%WWWDIR%%/extras/PMREMGenerator.js
-%%WWWDIR%%/extras/ShapeUtils.js
-%%WWWDIR%%/extras/TextureUtils.js
%%WWWDIR%%/extras/core/Curve.js
%%WWWDIR%%/extras/core/CurvePath.js
%%WWWDIR%%/extras/core/Interpolations.js
@@ -72,7 +60,13 @@
%%WWWDIR%%/extras/curves/QuadraticBezierCurve.js
%%WWWDIR%%/extras/curves/QuadraticBezierCurve3.js
%%WWWDIR%%/extras/curves/SplineCurve.js
+%%WWWDIR%%/extras/DataUtils.js
+%%WWWDIR%%/extras/Earcut.js
+%%WWWDIR%%/extras/ImageUtils.js
%%WWWDIR%%/extras/lib/earcut.js
+%%WWWDIR%%/extras/PMREMGenerator.js
+%%WWWDIR%%/extras/ShapeUtils.js
+%%WWWDIR%%/extras/TextureUtils.js
%%WWWDIR%%/geometries/BoxGeometry.js
%%WWWDIR%%/geometries/CapsuleGeometry.js
%%WWWDIR%%/geometries/CircleGeometry.js
@@ -135,11 +129,11 @@
%%WWWDIR%%/loaders/LoaderUtils.js
%%WWWDIR%%/loaders/LoadingManager.js
%%WWWDIR%%/loaders/MaterialLoader.js
-%%WWWDIR%%/loaders/ObjectLoader.js
-%%WWWDIR%%/loaders/TextureLoader.js
%%WWWDIR%%/loaders/nodes/NodeLoader.js
%%WWWDIR%%/loaders/nodes/NodeMaterialLoader.js
%%WWWDIR%%/loaders/nodes/NodeObjectLoader.js
+%%WWWDIR%%/loaders/ObjectLoader.js
+%%WWWDIR%%/loaders/TextureLoader.js
%%WWWDIR%%/materials/LineBasicMaterial.js
%%WWWDIR%%/materials/LineDashedMaterial.js
%%WWWDIR%%/materials/Material.js
@@ -154,14 +148,10 @@
%%WWWDIR%%/materials/MeshPhysicalMaterial.js
%%WWWDIR%%/materials/MeshStandardMaterial.js
%%WWWDIR%%/materials/MeshToonMaterial.js
-%%WWWDIR%%/materials/PointsMaterial.js
-%%WWWDIR%%/materials/RawShaderMaterial.js
-%%WWWDIR%%/materials/ShaderMaterial.js
-%%WWWDIR%%/materials/ShadowMaterial.js
-%%WWWDIR%%/materials/SpriteMaterial.js
%%WWWDIR%%/materials/nodes/Line2NodeMaterial.js
%%WWWDIR%%/materials/nodes/LineBasicNodeMaterial.js
%%WWWDIR%%/materials/nodes/LineDashedNodeMaterial.js
+%%WWWDIR%%/materials/nodes/manager/NodeMaterialObserver.js
%%WWWDIR%%/materials/nodes/MeshBasicNodeMaterial.js
%%WWWDIR%%/materials/nodes/MeshLambertNodeMaterial.js
%%WWWDIR%%/materials/nodes/MeshMatcapNodeMaterial.js
@@ -177,7 +167,11 @@
%%WWWDIR%%/materials/nodes/ShadowNodeMaterial.js
%%WWWDIR%%/materials/nodes/SpriteNodeMaterial.js
%%WWWDIR%%/materials/nodes/VolumeNodeMaterial.js
-%%WWWDIR%%/materials/nodes/manager/NodeMaterialObserver.js
+%%WWWDIR%%/materials/PointsMaterial.js
+%%WWWDIR%%/materials/RawShaderMaterial.js
+%%WWWDIR%%/materials/ShaderMaterial.js
+%%WWWDIR%%/materials/ShadowMaterial.js
+%%WWWDIR%%/materials/SpriteMaterial.js
%%WWWDIR%%/math/Box2.js
%%WWWDIR%%/math/Box3.js
%%WWWDIR%%/math/Color.js
@@ -185,7 +179,12 @@
%%WWWDIR%%/math/Cylindrical.js
%%WWWDIR%%/math/Euler.js
%%WWWDIR%%/math/Frustum.js
+%%WWWDIR%%/math/FrustumArray.js
%%WWWDIR%%/math/Interpolant.js
+%%WWWDIR%%/math/interpolants/CubicInterpolant.js
+%%WWWDIR%%/math/interpolants/DiscreteInterpolant.js
+%%WWWDIR%%/math/interpolants/LinearInterpolant.js
+%%WWWDIR%%/math/interpolants/QuaternionLinearInterpolant.js
%%WWWDIR%%/math/Line3.js
%%WWWDIR%%/math/MathUtils.js
%%WWWDIR%%/math/Matrix2.js
@@ -201,12 +200,6 @@
%%WWWDIR%%/math/Vector2.js
%%WWWDIR%%/math/Vector3.js
%%WWWDIR%%/math/Vector4.js
-%%WWWDIR%%/math/interpolants/CubicInterpolant.js
-%%WWWDIR%%/math/interpolants/DiscreteInterpolant.js
-%%WWWDIR%%/math/interpolants/LinearInterpolant.js
-%%WWWDIR%%/math/interpolants/QuaternionLinearInterpolant.js
-%%WWWDIR%%/nodes/Nodes.js
-%%WWWDIR%%/nodes/TSL.js
%%WWWDIR%%/nodes/accessors/AccessorsUtils.js
%%WWWDIR%%/nodes/accessors/Arrays.js
%%WWWDIR%%/nodes/accessors/BatchNode.js
@@ -217,8 +210,8 @@
%%WWWDIR%%/nodes/accessors/Camera.js
%%WWWDIR%%/nodes/accessors/ClippingNode.js
%%WWWDIR%%/nodes/accessors/CubeTextureNode.js
-%%WWWDIR%%/nodes/accessors/InstanceNode.js
%%WWWDIR%%/nodes/accessors/InstancedMeshNode.js
+%%WWWDIR%%/nodes/accessors/InstanceNode.js
%%WWWDIR%%/nodes/accessors/Lights.js
%%WWWDIR%%/nodes/accessors/MaterialNode.js
%%WWWDIR%%/nodes/accessors/MaterialProperties.js
@@ -243,9 +236,9 @@
%%WWWDIR%%/nodes/accessors/TextureBicubic.js
%%WWWDIR%%/nodes/accessors/TextureNode.js
%%WWWDIR%%/nodes/accessors/TextureSizeNode.js
-%%WWWDIR%%/nodes/accessors/UV.js
%%WWWDIR%%/nodes/accessors/UniformArrayNode.js
%%WWWDIR%%/nodes/accessors/UserDataNode.js
+%%WWWDIR%%/nodes/accessors/UV.js
%%WWWDIR%%/nodes/accessors/VelocityNode.js
%%WWWDIR%%/nodes/accessors/VertexColorNode.js
%%WWWDIR%%/nodes/code/CodeNode.js
@@ -259,6 +252,7 @@
%%WWWDIR%%/nodes/core/AttributeNode.js
%%WWWDIR%%/nodes/core/BypassNode.js
%%WWWDIR%%/nodes/core/CacheNode.js
+%%WWWDIR%%/nodes/core/constants.js
%%WWWDIR%%/nodes/core/ConstNode.js
%%WWWDIR%%/nodes/core/ContextNode.js
%%WWWDIR%%/nodes/core/IndexNode.js
@@ -290,7 +284,6 @@
%%WWWDIR%%/nodes/core/UniformNode.js
%%WWWDIR%%/nodes/core/VarNode.js
%%WWWDIR%%/nodes/core/VaryingNode.js
-%%WWWDIR%%/nodes/core/constants.js
%%WWWDIR%%/nodes/display/BlendModes.js
%%WWWDIR%%/nodes/display/BumpMapNode.js
%%WWWDIR%%/nodes/display/ColorAdjustment.js
@@ -310,38 +303,38 @@
%%WWWDIR%%/nodes/display/ViewportSharedTextureNode.js
%%WWWDIR%%/nodes/display/ViewportTextureNode.js
%%WWWDIR%%/nodes/fog/Fog.js
+%%WWWDIR%%/nodes/functions/BasicLightingModel.js
%%WWWDIR%%/nodes/functions/BSDF/BRDF_GGX.js
%%WWWDIR%%/nodes/functions/BSDF/BRDF_Lambert.js
%%WWWDIR%%/nodes/functions/BSDF/BRDF_Sheen.js
-%%WWWDIR%%/nodes/functions/BSDF/DFGApprox.js
-%%WWWDIR%%/nodes/functions/BSDF/D_GGX.js
%%WWWDIR%%/nodes/functions/BSDF/D_GGX_Anisotropic.js
+%%WWWDIR%%/nodes/functions/BSDF/D_GGX.js
+%%WWWDIR%%/nodes/functions/BSDF/DFGApprox.js
%%WWWDIR%%/nodes/functions/BSDF/EnvironmentBRDF.js
%%WWWDIR%%/nodes/functions/BSDF/F_Schlick.js
%%WWWDIR%%/nodes/functions/BSDF/LTC.js
%%WWWDIR%%/nodes/functions/BSDF/Schlick_to_F0.js
-%%WWWDIR%%/nodes/functions/BSDF/V_GGX_SmithCorrelated.js
%%WWWDIR%%/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js
-%%WWWDIR%%/nodes/functions/BasicLightingModel.js
-%%WWWDIR%%/nodes/functions/PhongLightingModel.js
-%%WWWDIR%%/nodes/functions/PhysicalLightingModel.js
-%%WWWDIR%%/nodes/functions/ShadowMaskModel.js
-%%WWWDIR%%/nodes/functions/ToonLightingModel.js
-%%WWWDIR%%/nodes/functions/VolumetricLightingModel.js
+%%WWWDIR%%/nodes/functions/BSDF/V_GGX_SmithCorrelated.js
%%WWWDIR%%/nodes/functions/material/getAlphaHashThreshold.js
%%WWWDIR%%/nodes/functions/material/getGeometryRoughness.js
%%WWWDIR%%/nodes/functions/material/getParallaxCorrectNormal.js
%%WWWDIR%%/nodes/functions/material/getRoughness.js
%%WWWDIR%%/nodes/functions/material/getShIrradianceAt.js
+%%WWWDIR%%/nodes/functions/PhongLightingModel.js
+%%WWWDIR%%/nodes/functions/PhysicalLightingModel.js
+%%WWWDIR%%/nodes/functions/ShadowMaskModel.js
+%%WWWDIR%%/nodes/functions/ToonLightingModel.js
+%%WWWDIR%%/nodes/functions/VolumetricLightingModel.js
%%WWWDIR%%/nodes/geometry/RangeNode.js
%%WWWDIR%%/nodes/gpgpu/AtomicFunctionNode.js
%%WWWDIR%%/nodes/gpgpu/BarrierNode.js
%%WWWDIR%%/nodes/gpgpu/ComputeBuiltinNode.js
%%WWWDIR%%/nodes/gpgpu/ComputeNode.js
%%WWWDIR%%/nodes/gpgpu/WorkgroupInfoNode.js
-%%WWWDIR%%/nodes/lighting/AONode.js
%%WWWDIR%%/nodes/lighting/AmbientLightNode.js
%%WWWDIR%%/nodes/lighting/AnalyticLightNode.js
+%%WWWDIR%%/nodes/lighting/AONode.js
%%WWWDIR%%/nodes/lighting/BasicEnvironmentNode.js
%%WWWDIR%%/nodes/lighting/BasicLightMapNode.js
%%WWWDIR%%/nodes/lighting/DirectionalLightNode.js
@@ -349,34 +342,37 @@
%%WWWDIR%%/nodes/lighting/HemisphereLightNode.js
%%WWWDIR%%/nodes/lighting/IESSpotLightNode.js
%%WWWDIR%%/nodes/lighting/IrradianceNode.js
-%%WWWDIR%%/nodes/lighting/LightProbeNode.js
-%%WWWDIR%%/nodes/lighting/LightUtils.js
%%WWWDIR%%/nodes/lighting/LightingContextNode.js
%%WWWDIR%%/nodes/lighting/LightingNode.js
+%%WWWDIR%%/nodes/lighting/LightProbeNode.js
%%WWWDIR%%/nodes/lighting/LightsNode.js
+%%WWWDIR%%/nodes/lighting/LightUtils.js
%%WWWDIR%%/nodes/lighting/PointLightNode.js
%%WWWDIR%%/nodes/lighting/PointShadowNode.js
%%WWWDIR%%/nodes/lighting/RectAreaLightNode.js
%%WWWDIR%%/nodes/lighting/ShadowBaseNode.js
+%%WWWDIR%%/nodes/lighting/ShadowFilterNode.js
%%WWWDIR%%/nodes/lighting/ShadowNode.js
%%WWWDIR%%/nodes/lighting/SpotLightNode.js
%%WWWDIR%%/nodes/materialx/DISCLAIMER.md
-%%WWWDIR%%/nodes/materialx/MaterialXNodes.js
%%WWWDIR%%/nodes/materialx/lib/mx_hsv.js
%%WWWDIR%%/nodes/materialx/lib/mx_noise.js
%%WWWDIR%%/nodes/materialx/lib/mx_transform_color.js
+%%WWWDIR%%/nodes/materialx/MaterialXNodes.js
%%WWWDIR%%/nodes/math/ConditionalNode.js
%%WWWDIR%%/nodes/math/Hash.js
%%WWWDIR%%/nodes/math/MathNode.js
%%WWWDIR%%/nodes/math/MathUtils.js
%%WWWDIR%%/nodes/math/OperatorNode.js
%%WWWDIR%%/nodes/math/TriNoise3D.js
+%%WWWDIR%%/nodes/Nodes.js
%%WWWDIR%%/nodes/parsers/GLSLNodeFunction.js
%%WWWDIR%%/nodes/parsers/GLSLNodeParser.js
%%WWWDIR%%/nodes/pmrem/PMREMNode.js
%%WWWDIR%%/nodes/pmrem/PMREMUtils.js
%%WWWDIR%%/nodes/procedural/Checker.js
%%WWWDIR%%/nodes/shapes/Shapes.js
+%%WWWDIR%%/nodes/TSL.js
%%WWWDIR%%/nodes/tsl/TSLBase.js
%%WWWDIR%%/nodes/tsl/TSLCore.js
%%WWWDIR%%/nodes/utils/ArrayElementNode.js
@@ -395,10 +391,10 @@
%%WWWDIR%%/nodes/utils/Oscillators.js
%%WWWDIR%%/nodes/utils/Packing.js
%%WWWDIR%%/nodes/utils/PostProcessingUtils.js
-%%WWWDIR%%/nodes/utils/RTTNode.js
%%WWWDIR%%/nodes/utils/ReflectorNode.js
%%WWWDIR%%/nodes/utils/RemapNode.js
%%WWWDIR%%/nodes/utils/RotateNode.js
+%%WWWDIR%%/nodes/utils/RTTNode.js
%%WWWDIR%%/nodes/utils/SetNode.js
%%WWWDIR%%/nodes/utils/SplitNode.js
%%WWWDIR%%/nodes/utils/SpriteSheetUVNode.js
@@ -413,20 +409,15 @@
%%WWWDIR%%/objects/ClippingGroup.js
%%WWWDIR%%/objects/Group.js
%%WWWDIR%%/objects/InstancedMesh.js
-%%WWWDIR%%/objects/LOD.js
%%WWWDIR%%/objects/Line.js
%%WWWDIR%%/objects/LineLoop.js
%%WWWDIR%%/objects/LineSegments.js
+%%WWWDIR%%/objects/LOD.js
%%WWWDIR%%/objects/Mesh.js
%%WWWDIR%%/objects/Points.js
%%WWWDIR%%/objects/Skeleton.js
%%WWWDIR%%/objects/SkinnedMesh.js
%%WWWDIR%%/objects/Sprite.js
-%%WWWDIR%%/renderers/WebGL3DRenderTarget.js
-%%WWWDIR%%/renderers/WebGLArrayRenderTarget.js
-%%WWWDIR%%/renderers/WebGLCubeRenderTarget.js
-%%WWWDIR%%/renderers/WebGLRenderTarget.js
-%%WWWDIR%%/renderers/WebGLRenderer.js
%%WWWDIR%%/renderers/common/Animation.js
%%WWWDIR%%/renderers/common/Attributes.js
%%WWWDIR%%/renderers/common/Backend.js
@@ -444,10 +435,20 @@
%%WWWDIR%%/renderers/common/Constants.js
%%WWWDIR%%/renderers/common/CubeRenderTarget.js
%%WWWDIR%%/renderers/common/DataMap.js
+%%WWWDIR%%/renderers/common/extras/PMREMGenerator.js
%%WWWDIR%%/renderers/common/Geometries.js
%%WWWDIR%%/renderers/common/IndirectStorageBufferAttribute.js
%%WWWDIR%%/renderers/common/Info.js
%%WWWDIR%%/renderers/common/Lighting.js
+%%WWWDIR%%/renderers/common/nodes/NodeBuilderState.js
+%%WWWDIR%%/renderers/common/nodes/NodeLibrary.js
+%%WWWDIR%%/renderers/common/nodes/Nodes.js
+%%WWWDIR%%/renderers/common/nodes/NodeSampledTexture.js
+%%WWWDIR%%/renderers/common/nodes/NodeSampler.js
+%%WWWDIR%%/renderers/common/nodes/NodeStorageBuffer.js
+%%WWWDIR%%/renderers/common/nodes/NodeUniform.js
+%%WWWDIR%%/renderers/common/nodes/NodeUniformBuffer.js
+%%WWWDIR%%/renderers/common/nodes/NodeUniformsGroup.js
%%WWWDIR%%/renderers/common/Pipeline.js
%%WWWDIR%%/renderers/common/Pipelines.js
%%WWWDIR%%/renderers/common/PostProcessing.js
@@ -457,13 +458,13 @@
%%WWWDIR%%/renderers/common/RenderBundles.js
%%WWWDIR%%/renderers/common/RenderContext.js
%%WWWDIR%%/renderers/common/RenderContexts.js
+%%WWWDIR%%/renderers/common/Renderer.js
+%%WWWDIR%%/renderers/common/RendererUtils.js
%%WWWDIR%%/renderers/common/RenderList.js
%%WWWDIR%%/renderers/common/RenderLists.js
%%WWWDIR%%/renderers/common/RenderObject.js
%%WWWDIR%%/renderers/common/RenderObjects.js
%%WWWDIR%%/renderers/common/RenderPipeline.js
-%%WWWDIR%%/renderers/common/Renderer.js
-%%WWWDIR%%/renderers/common/RendererUtils.js
%%WWWDIR%%/renderers/common/SampledTexture.js
%%WWWDIR%%/renderers/common/Sampler.js
%%WWWDIR%%/renderers/common/StorageBuffer.js
@@ -477,16 +478,6 @@
%%WWWDIR%%/renderers/common/UniformsGroup.js
%%WWWDIR%%/renderers/common/XRManager.js
%%WWWDIR%%/renderers/common/XRRenderTarget.js
-%%WWWDIR%%/renderers/common/extras/PMREMGenerator.js
-%%WWWDIR%%/renderers/common/nodes/NodeBuilderState.js
-%%WWWDIR%%/renderers/common/nodes/NodeLibrary.js
-%%WWWDIR%%/renderers/common/nodes/NodeSampledTexture.js
-%%WWWDIR%%/renderers/common/nodes/NodeSampler.js
-%%WWWDIR%%/renderers/common/nodes/NodeStorageBuffer.js
-%%WWWDIR%%/renderers/common/nodes/NodeUniform.js
-%%WWWDIR%%/renderers/common/nodes/NodeUniformBuffer.js
-%%WWWDIR%%/renderers/common/nodes/NodeUniformsGroup.js
-%%WWWDIR%%/renderers/common/nodes/Nodes.js
%%WWWDIR%%/renderers/shaders/ShaderChunk.js
%%WWWDIR%%/renderers/shaders/ShaderChunk/alphahash_fragment.glsl.js
%%WWWDIR%%/renderers/shaders/ShaderChunk/alphahash_pars_fragment.glsl.js
@@ -618,8 +609,6 @@
%%WWWDIR%%/renderers/shaders/ShaderLib/vsm.glsl.js
%%WWWDIR%%/renderers/shaders/UniformsLib.js
%%WWWDIR%%/renderers/shaders/UniformsUtils.js
-%%WWWDIR%%/renderers/webgl-fallback/WebGLBackend.js
-%%WWWDIR%%/renderers/webgl-fallback/WebGLBufferRenderer.js
%%WWWDIR%%/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js
%%WWWDIR%%/renderers/webgl-fallback/utils/WebGLAttributeUtils.js
%%WWWDIR%%/renderers/webgl-fallback/utils/WebGLCapabilities.js
@@ -629,6 +618,8 @@
%%WWWDIR%%/renderers/webgl-fallback/utils/WebGLTextureUtils.js
%%WWWDIR%%/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js
%%WWWDIR%%/renderers/webgl-fallback/utils/WebGLUtils.js
+%%WWWDIR%%/renderers/webgl-fallback/WebGLBackend.js
+%%WWWDIR%%/renderers/webgl-fallback/WebGLBufferRenderer.js
%%WWWDIR%%/renderers/webgl/WebGLAnimation.js
%%WWWDIR%%/renderers/webgl/WebGLAttributes.js
%%WWWDIR%%/renderers/webgl/WebGLBackground.js
@@ -659,9 +650,11 @@
%%WWWDIR%%/renderers/webgl/WebGLUniforms.js
%%WWWDIR%%/renderers/webgl/WebGLUniformsGroups.js
%%WWWDIR%%/renderers/webgl/WebGLUtils.js
-%%WWWDIR%%/renderers/webgpu/WebGPUBackend.js
-%%WWWDIR%%/renderers/webgpu/WebGPURenderer.Nodes.js
-%%WWWDIR%%/renderers/webgpu/WebGPURenderer.js
+%%WWWDIR%%/renderers/WebGL3DRenderTarget.js
+%%WWWDIR%%/renderers/WebGLArrayRenderTarget.js
+%%WWWDIR%%/renderers/WebGLCubeRenderTarget.js
+%%WWWDIR%%/renderers/WebGLRenderer.js
+%%WWWDIR%%/renderers/WebGLRenderTarget.js
%%WWWDIR%%/renderers/webgpu/nodes/BasicNodeLibrary.js
%%WWWDIR%%/renderers/webgpu/nodes/StandardNodeLibrary.js
%%WWWDIR%%/renderers/webgpu/nodes/WGSLNodeBuilder.js
@@ -675,6 +668,9 @@
%%WWWDIR%%/renderers/webgpu/utils/WebGPUTextureUtils.js
%%WWWDIR%%/renderers/webgpu/utils/WebGPUTimestampQueryPool.js
%%WWWDIR%%/renderers/webgpu/utils/WebGPUUtils.js
+%%WWWDIR%%/renderers/webgpu/WebGPUBackend.js
+%%WWWDIR%%/renderers/webgpu/WebGPURenderer.js
+%%WWWDIR%%/renderers/webgpu/WebGPURenderer.Nodes.js
%%WWWDIR%%/renderers/webxr/WebXRController.js
%%WWWDIR%%/renderers/webxr/WebXRDepthSensing.js
%%WWWDIR%%/renderers/webxr/WebXRManager.js
@@ -689,10 +685,17 @@
%%WWWDIR%%/textures/Data3DTexture.js
%%WWWDIR%%/textures/DataArrayTexture.js
%%WWWDIR%%/textures/DataTexture.js
+%%WWWDIR%%/textures/DepthArrayTexture.js
%%WWWDIR%%/textures/DepthTexture.js
%%WWWDIR%%/textures/FramebufferTexture.js
%%WWWDIR%%/textures/Source.js
%%WWWDIR%%/textures/Texture.js
%%WWWDIR%%/textures/VideoFrameTexture.js
%%WWWDIR%%/textures/VideoTexture.js
+%%WWWDIR%%/Three.Core.js
+%%WWWDIR%%/Three.js
+%%WWWDIR%%/Three.Legacy.js
+%%WWWDIR%%/Three.TSL.js
+%%WWWDIR%%/Three.WebGPU.js
+%%WWWDIR%%/Three.WebGPU.Nodes.js
%%WWWDIR%%/utils.js
diff --git a/www/tusc/Makefile b/www/tusc/Makefile
index 5ee3c0d2cec5..2440c2aa0368 100644
--- a/www/tusc/Makefile
+++ b/www/tusc/Makefile
@@ -1,6 +1,6 @@
PORTNAME= tusc
DISTVERSION= 0.4.7
-PORTREVISION= 24
+PORTREVISION= 25
CATEGORIES= www
MAINTAINER= osa@FreeBSD.org
diff --git a/www/tusd/Makefile b/www/tusd/Makefile
index 4ca11309ce26..6272bb694d4d 100644
--- a/www/tusd/Makefile
+++ b/www/tusd/Makefile
@@ -1,7 +1,7 @@
PORTNAME= tusd
DISTVERSIONPREFIX= v
DISTVERSION= 2.0.0
-PORTREVISION= 10
+PORTREVISION= 11
CATEGORIES= www
MAINTAINER= mm@FreeBSD.org
diff --git a/www/typo3-12/Makefile b/www/typo3-12/Makefile
index a1edb26741b0..debae5bfffd5 100644
--- a/www/typo3-12/Makefile
+++ b/www/typo3-12/Makefile
@@ -30,7 +30,7 @@ WRKSRC= ${WRKDIR}/${PORTNAME}_src-${DISTVERSION}
PORT_V_MAJOR= 12
PORT_V_MINOR= 4
-PORT_V_PATCH= 28
+PORT_V_PATCH= 31
TYPO3DIR= www/${PORTNAME}-${PORT_V_MAJOR}
diff --git a/www/typo3-12/distinfo b/www/typo3-12/distinfo
index 7ecfc3395f59..8ba5a3b50a56 100644
--- a/www/typo3-12/distinfo
+++ b/www/typo3-12/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1742309083
-SHA256 (typo3_src-12.4.28.tar.gz) = 000c7dd6cb940592ce83c683837862086d29d8809aca7bd5cc92180c8e94b2cc
-SIZE (typo3_src-12.4.28.tar.gz) = 26593637
+TIMESTAMP = 1747746945
+SHA256 (typo3_src-12.4.31.tar.gz) = 69e71c0be15291eb56db09ab305c942b499da434a9d9042b9e0662b1a9783681
+SIZE (typo3_src-12.4.31.tar.gz) = 26607292
diff --git a/www/typo3-13/Makefile b/www/typo3-13/Makefile
index 651851cca9e2..7ed4243700ca 100644
--- a/www/typo3-13/Makefile
+++ b/www/typo3-13/Makefile
@@ -1,6 +1,6 @@
PORTNAME= typo3
DISTVERSION= ${PORT_V_MAJOR}.${PORT_V_MINOR}.${PORT_V_PATCH}
-PORTREVISION= 1
+#PORTREVISION= 1
CATEGORIES= www
MASTER_SITES= https://cdn.typo3.com/typo3/${DISTVERSION}/
PKGNAMESUFFIX= -${PORT_V_MAJOR}${PHP_PKGNAMESUFFIX}
@@ -32,7 +32,7 @@ SUB_LIST+= PREFIX=${PREFIX} \
PORT_V_MAJOR= 13
PORT_V_MINOR= 4
-PORT_V_PATCH= 8
+PORT_V_PATCH= 12
TYPO3DIR= www/${PORTNAME}-${PORT_V_MAJOR}
diff --git a/www/typo3-13/distinfo b/www/typo3-13/distinfo
index e0f4de0680f6..2b6bd6c63362 100644
--- a/www/typo3-13/distinfo
+++ b/www/typo3-13/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1742309756
-SHA256 (typo3_src-13.4.8.tar.gz) = f851dc46e54d3997c5de16133a41d32283ccc49049882a4d8b97a60e87aa02cf
-SIZE (typo3_src-13.4.8.tar.gz) = 25531952
+TIMESTAMP = 1747749336
+SHA256 (typo3_src-13.4.12.tar.gz) = 6d6cbf20c0941592a0c4d85aa540e25564e06de05b33b77f322fee7d42396481
+SIZE (typo3_src-13.4.12.tar.gz) = 25573553
diff --git a/www/uchiwa/Makefile b/www/uchiwa/Makefile
index 67b78eadfab4..6993e70a0a6b 100644
--- a/www/uchiwa/Makefile
+++ b/www/uchiwa/Makefile
@@ -1,6 +1,6 @@
PORTNAME= uchiwa
PORTVERSION= 0.18.2
-PORTREVISION= 25
+PORTREVISION= 26
CATEGORIES= www
MASTER_SITES= http://uchiwa.io/
diff --git a/www/ungoogled-chromium/Makefile b/www/ungoogled-chromium/Makefile
index 11d2fde1f6f1..1c0da59d7a65 100644
--- a/www/ungoogled-chromium/Makefile
+++ b/www/ungoogled-chromium/Makefile
@@ -1,5 +1,6 @@
PORTNAME= ungoogled-chromium
PORTVERSION= 136.0.7103.113
+PORTREVISION= 1
PULSEMV= 16
PULSEV= ${PULSEMV}.1
UGVERSION= ${DISTVERSION}-1
diff --git a/www/ungoogled-chromium/files/patch-build_rust_allocator_BUILD.gn b/www/ungoogled-chromium/files/patch-build_rust_allocator_BUILD.gn
new file mode 100644
index 000000000000..cb1633140dcc
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_rust_allocator_BUILD.gn
@@ -0,0 +1,109 @@
+--- build/rust/allocator/BUILD.gn.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/BUILD.gn
+@@ -0,0 +1,106 @@
++# Copyright 2025 The Chromium Authors
++# Use of this source code is governed by a BSD-style license that can be
++# found in the LICENSE file.
++
++import("//build/buildflag_header.gni")
++import("//build/config/rust.gni")
++import("//build/rust/rust_static_library.gni")
++
++rust_allocator_uses_partition_alloc = false
++if (build_with_chromium) {
++ import("//base/allocator/partition_allocator/partition_alloc.gni")
++ rust_allocator_uses_partition_alloc = use_partition_alloc_as_malloc
++}
++
++# In ASAN builds, PartitionAlloc-Everywhere is disabled, meaning malloc() and
++# friends in C++ do not go to PartitionAlloc. So we also don't point the Rust
++# allocation functions at PartitionAlloc. Generally, this means we just direct
++# them to the Standard Library's allocator.
++#
++# However, on Windows the Standard Library uses HeapAlloc() and Windows ASAN
++# does *not* hook that method, so ASAN does not get to hear about allocations
++# made in Rust. To resolve this, we redirect allocation to _aligned_malloc
++# which Windows ASAN *does* hook.
++#
++# Note that there is a runtime option to make ASAN hook HeapAlloc() but
++# enabling it breaks Win32 APIs like CreateProcess:
++# https://crbug.com/368070343#comment29
++rust_allocator_uses_aligned_malloc = false
++if (!rust_allocator_uses_partition_alloc && is_win && is_asan) {
++ rust_allocator_uses_aligned_malloc = true
++}
++
++rust_allocator_uses_allocator_impls_h =
++ rust_allocator_uses_partition_alloc || rust_allocator_uses_aligned_malloc
++
++buildflag_header("buildflags") {
++ header = "buildflags.h"
++ flags = [
++ "RUST_ALLOCATOR_USES_PARTITION_ALLOC=$rust_allocator_uses_partition_alloc",
++ "RUST_ALLOCATOR_USES_ALIGNED_MALLOC=$rust_allocator_uses_aligned_malloc",
++ ]
++ visibility = [ ":*" ]
++}
++
++if (toolchain_has_rust) {
++ # All targets which depend on Rust code but are not linked by rustc must
++ # depend on this. Usually, this dependency will come from the rust_target() GN
++ # template. However, cargo_crate() does *not* include this dependency so any
++ # C++ targets which directly depend on a cargo_crate() must depend on this.
++ rust_static_library("allocator") {
++ sources = [ "lib.rs" ]
++ crate_root = "lib.rs"
++ cxx_bindings = [ "lib.rs" ]
++
++ deps = [ ":alloc_error_handler_impl" ]
++ if (rust_allocator_uses_allocator_impls_h) {
++ deps += [ ":allocator_impls" ]
++ }
++
++ no_chromium_prelude = true
++ no_allocator_crate = true
++ allow_unsafe = true
++
++ rustflags = []
++ if (rust_allocator_uses_allocator_impls_h) {
++ rustflags += [ "--cfg=rust_allocator_uses_allocator_impls_h" ]
++ cxx_bindings += [ "allocator_impls_ffi.rs" ]
++ sources += [ "allocator_impls_ffi.rs" ]
++ }
++
++ # TODO(https://crbug.com/410596442): Stop using unstable features here.
++ configs -= [ "//build/config/compiler:disallow_unstable_features" ]
++ }
++
++ if (rust_allocator_uses_allocator_impls_h) {
++ static_library("allocator_impls") {
++ public_deps = []
++ if (rust_allocator_uses_partition_alloc) {
++ public_deps +=
++ [ "//base/allocator/partition_allocator:partition_alloc" ]
++ }
++
++ sources = [
++ "allocator_impls.cc",
++ "allocator_impls.h",
++ ]
++ deps = [ ":buildflags" ]
++ visibility = [ ":*" ]
++ }
++ }
++
++ static_library("alloc_error_handler_impl") {
++ sources = [
++ # `alias.*`, `compiler_specific.h`, and `immediate_crash.*` have been
++ # copied from `//base`.
++ # TODO(crbug.com/40279749): Avoid duplication / reuse code.
++ "alias.cc",
++ "alias.h",
++ "alloc_error_handler_impl.cc",
++ "alloc_error_handler_impl.h",
++ "compiler_specific.h",
++ "immediate_crash.h",
++ ]
++ visibility = [ ":*" ]
++ }
++}
diff --git a/www/ungoogled-chromium/files/patch-build_rust_allocator_DEPS b/www/ungoogled-chromium/files/patch-build_rust_allocator_DEPS
new file mode 100644
index 000000000000..74bb2d6c2421
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_rust_allocator_DEPS
@@ -0,0 +1,12 @@
+--- build/rust/allocator/DEPS.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/DEPS
+@@ -0,0 +1,9 @@
++include_rules = [
++ "-base",
++]
++
++specific_include_rules = {
++ "allocator_impls.cc" : [
++ "+partition_alloc"
++ ]
++}
diff --git a/www/ungoogled-chromium/files/patch-build_rust_allocator_alias.cc b/www/ungoogled-chromium/files/patch-build_rust_allocator_alias.cc
new file mode 100644
index 000000000000..5280641f27e1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_rust_allocator_alias.cc
@@ -0,0 +1,25 @@
+--- build/rust/allocator/alias.cc.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/alias.cc
+@@ -0,0 +1,22 @@
++// Copyright 2023 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++// This file has been copied from //base/debug/alias.cc ( additionally the APIs
++// were moved into the `build_rust_std` namespace).
++//
++// TODO(crbug.com/40279749): Avoid code duplication / reuse code.
++
++#include "build/rust/allocator/alias.h"
++
++#include "build/rust/allocator/compiler_specific.h"
++
++namespace build_rust_std {
++namespace debug {
++
++// This file/function should be excluded from LTO/LTCG to ensure that the
++// compiler can't see this function's implementation when compiling calls to it.
++NOINLINE void Alias(const void* var) {}
++
++} // namespace debug
++} // namespace build_rust_std
diff --git a/www/ungoogled-chromium/files/patch-build_rust_allocator_alias.h b/www/ungoogled-chromium/files/patch-build_rust_allocator_alias.h
new file mode 100644
index 000000000000..6530c6ae8779
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_rust_allocator_alias.h
@@ -0,0 +1,40 @@
+--- build/rust/allocator/alias.h.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/alias.h
+@@ -0,0 +1,37 @@
++// Copyright 2023 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++// This file has been copied from //base/debug/alias.h (and then trimmed to just
++// the APIs / macros needed by //build/rust/std; additionally the APIs were
++// moved into the `build_rust_std` namespace).
++//
++// TODO(crbug.com/40279749): Avoid code duplication / reuse code.
++
++#ifndef BUILD_RUST_ALLOCATOR_ALIAS_H_
++#define BUILD_RUST_ALLOCATOR_ALIAS_H_
++
++#include <stddef.h>
++
++namespace build_rust_std {
++namespace debug {
++
++// Make the optimizer think that |var| is aliased. This can be used to prevent a
++// local variable from being optimized out (which is something that
++// `NO_CODE_FOLDING` macro definition below depends on). See
++// //base/debug/alias.h for more details.
++void Alias(const void* var);
++
++} // namespace debug
++
++} // namespace build_rust_std
++
++// Prevent code folding (where a linker identifies functions that are
++// bit-identical and overlays them, which saves space but it leads to confusing
++// call stacks because multiple symbols are at the same address). See
++// //base/debug/alias.h for more details.
++#define NO_CODE_FOLDING() \
++ const int line_number = __LINE__; \
++ build_rust_std::debug::Alias(&line_number)
++
++#endif // BUILD_RUST_ALLOCATOR_ALIAS_H_
diff --git a/www/ungoogled-chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.cc b/www/ungoogled-chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.cc
new file mode 100644
index 000000000000..048c267abefa
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.cc
@@ -0,0 +1,20 @@
+--- build/rust/allocator/alloc_error_handler_impl.cc.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/alloc_error_handler_impl.cc
+@@ -0,0 +1,17 @@
++// Copyright 2025 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "build/rust/allocator/alloc_error_handler_impl.h"
++
++#include "build/rust/allocator/alias.h"
++#include "build/rust/allocator/immediate_crash.h"
++
++namespace rust_allocator_internal {
++
++void alloc_error_handler_impl() {
++ NO_CODE_FOLDING();
++ IMMEDIATE_CRASH();
++}
++
++} // namespace rust_allocator_internal
diff --git a/www/ungoogled-chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.h b/www/ungoogled-chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.h
new file mode 100644
index 000000000000..887ea602b027
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.h
@@ -0,0 +1,24 @@
+--- build/rust/allocator/alloc_error_handler_impl.h.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/alloc_error_handler_impl.h
+@@ -0,0 +1,21 @@
++// Copyright 2025 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#ifndef BUILD_RUST_ALLOCATOR_ALLOC_ERROR_HANDLER_IMPL_H_
++#define BUILD_RUST_ALLOCATOR_ALLOC_ERROR_HANDLER_IMPL_H_
++
++// This header exposes to Rust a C++ implementation of quickly crashing after an
++// allocation error. (The API below is called from `__rust_alloc_error_handler`
++// in `lib.rs`.)
++//
++// TODO(lukasza): Investigate if we can delete this `.h` / `.cc` and just call
++// `std::process::abort()` (or something else?) directly from `.rs`. The main
++// open question is how much we care about `NO_CODE_FOLDING`.
++namespace rust_allocator_internal {
++
++void alloc_error_handler_impl();
++
++} // namespace rust_allocator_internal
++
++#endif // BUILD_RUST_ALLOCATOR_ALLOC_ERROR_HANDLER_IMPL_H_
diff --git a/www/ungoogled-chromium/files/patch-build_rust_allocator_allocator__impls.cc b/www/ungoogled-chromium/files/patch-build_rust_allocator_allocator__impls.cc
new file mode 100644
index 000000000000..94e04d7b966a
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_rust_allocator_allocator__impls.cc
@@ -0,0 +1,108 @@
+--- build/rust/allocator/allocator_impls.cc.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/allocator_impls.cc
+@@ -0,0 +1,105 @@
++// Copyright 2021 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "build/rust/allocator/allocator_impls.h"
++
++#ifdef UNSAFE_BUFFERS_BUILD
++// TODO(crbug.com/390223051): Remove C-library calls to fix the errors.
++#pragma allow_unsafe_libc_calls
++#endif
++
++#include <cstddef>
++#include <cstring>
++
++#include "build/build_config.h"
++#include "build/rust/allocator/buildflags.h"
++
++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC)
++#include "partition_alloc/partition_alloc_constants.h" // nogncheck
++#include "partition_alloc/shim/allocator_shim.h" // nogncheck
++#elif BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC)
++#include <cstdlib>
++#endif
++
++namespace rust_allocator_internal {
++
++unsigned char* alloc(size_t size, size_t align) {
++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC)
++ // PartitionAlloc will crash if given an alignment larger than this.
++ if (align > partition_alloc::internal::kMaxSupportedAlignment) {
++ return nullptr;
++ }
++
++ // We use unchecked allocation paths in PartitionAlloc rather than going
++ // through its shims in `malloc()` etc so that we can support fallible
++ // allocation paths such as Vec::try_reserve without crashing on allocation
++ // failure.
++ if (align <= alignof(std::max_align_t)) {
++ return static_cast<unsigned char*>(allocator_shim::UncheckedAlloc(size));
++ } else {
++ return static_cast<unsigned char*>(
++ allocator_shim::UncheckedAlignedAlloc(size, align));
++ }
++#elif BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC)
++ return static_cast<unsigned char*>(_aligned_malloc(size, align));
++#else
++#error This configuration is not supported.
++#endif
++}
++
++void dealloc(unsigned char* p, size_t size, size_t align) {
++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC)
++ if (align <= alignof(std::max_align_t)) {
++ allocator_shim::UncheckedFree(p);
++ } else {
++ allocator_shim::UncheckedAlignedFree(p);
++ }
++#elif BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC)
++ return _aligned_free(p);
++#else
++#error This configuration is not supported.
++#endif
++}
++
++unsigned char* realloc(unsigned char* p,
++ size_t old_size,
++ size_t align,
++ size_t new_size) {
++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC)
++ // We use unchecked allocation paths in PartitionAlloc rather than going
++ // through its shims in `malloc()` etc so that we can support fallible
++ // allocation paths such as Vec::try_reserve without crashing on allocation
++ // failure.
++ if (align <= alignof(std::max_align_t)) {
++ return static_cast<unsigned char*>(
++ allocator_shim::UncheckedRealloc(p, new_size));
++ } else {
++ return static_cast<unsigned char*>(
++ allocator_shim::UncheckedAlignedRealloc(p, new_size, align));
++ }
++#elif BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC)
++ return static_cast<unsigned char*>(_aligned_realloc(p, new_size, align));
++#else
++#error This configuration is not supported.
++#endif
++}
++
++unsigned char* alloc_zeroed(size_t size, size_t align) {
++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC) || \
++ BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC)
++ // TODO(danakj): When RUST_ALLOCATOR_USES_PARTITION_ALLOC is true, it's
++ // possible that a partition_alloc::UncheckedAllocZeroed() call would perform
++ // better than partition_alloc::UncheckedAlloc() + memset. But there is no
++ // such API today. See b/342251590.
++ unsigned char* p = alloc(size, align);
++ if (p) {
++ memset(p, 0, size);
++ }
++ return p;
++#else
++#error This configuration is not supported.
++#endif
++}
++
++} // namespace rust_allocator_internal
diff --git a/www/ungoogled-chromium/files/patch-build_rust_allocator_allocator__impls.h b/www/ungoogled-chromium/files/patch-build_rust_allocator_allocator__impls.h
new file mode 100644
index 000000000000..9249cdc938d2
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_rust_allocator_allocator__impls.h
@@ -0,0 +1,27 @@
+--- build/rust/allocator/allocator_impls.h.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/allocator_impls.h
+@@ -0,0 +1,24 @@
++// Copyright 2025 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#ifndef BUILD_RUST_ALLOCATOR_ALLOCATOR_IMPLS_H_
++#define BUILD_RUST_ALLOCATOR_ALLOCATOR_IMPLS_H_
++
++#include <cstddef>
++
++// This header exposes a C++ allocator (e.g. PartitionAlloc) to Rust.
++// The APIs below are called from `impl GlobalAlloc` in `lib.rs`.
++namespace rust_allocator_internal {
++
++unsigned char* alloc(size_t size, size_t align);
++void dealloc(unsigned char* p, size_t size, size_t align);
++unsigned char* realloc(unsigned char* p,
++ size_t old_size,
++ size_t align,
++ size_t new_size);
++unsigned char* alloc_zeroed(size_t size, size_t align);
++
++} // namespace rust_allocator_internal
++
++#endif // BUILD_RUST_ALLOCATOR_ALLOCATOR_IMPLS_H_
diff --git a/www/ungoogled-chromium/files/patch-build_rust_allocator_allocator__impls__ffi.rs b/www/ungoogled-chromium/files/patch-build_rust_allocator_allocator__impls__ffi.rs
new file mode 100644
index 000000000000..8f0baf1576ce
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_rust_allocator_allocator__impls__ffi.rs
@@ -0,0 +1,22 @@
+--- build/rust/allocator/allocator_impls_ffi.rs.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/allocator_impls_ffi.rs
+@@ -0,0 +1,19 @@
++// Copyright 2025 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++//! FFI for `allocator_impls.h` is in a separate `.rs` file/module to
++//! better support conditional compilation (these functions are only
++//! used under `#[cfg(rust_allocator_uses_allocator_impls_h)]`.
++
++#[cxx::bridge(namespace = "rust_allocator_internal")]
++pub mod ffi {
++ extern "C++" {
++ include!("build/rust/allocator/allocator_impls.h");
++
++ unsafe fn alloc(size: usize, align: usize) -> *mut u8;
++ unsafe fn dealloc(p: *mut u8, size: usize, align: usize);
++ unsafe fn realloc(p: *mut u8, old_size: usize, align: usize, new_size: usize) -> *mut u8;
++ unsafe fn alloc_zeroed(size: usize, align: usize) -> *mut u8;
++ }
++}
diff --git a/www/ungoogled-chromium/files/patch-build_rust_allocator_compiler__specific.h b/www/ungoogled-chromium/files/patch-build_rust_allocator_compiler__specific.h
new file mode 100644
index 000000000000..7feb0c739d79
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_rust_allocator_compiler__specific.h
@@ -0,0 +1,41 @@
+--- build/rust/allocator/compiler_specific.h.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/compiler_specific.h
+@@ -0,0 +1,38 @@
++// Copyright 2023 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++// This file has been copied from //base/compiler_specific.h (and then
++// significantly trimmed to just the APIs / macros needed by //build/rust/std).
++//
++// TODO(crbug.com/40279749): Avoid code duplication / reuse code.
++
++#ifndef BUILD_RUST_ALLOCATOR_COMPILER_SPECIFIC_H_
++#define BUILD_RUST_ALLOCATOR_COMPILER_SPECIFIC_H_
++
++#include "build/build_config.h"
++
++#if defined(COMPILER_MSVC) && !defined(__clang__)
++#error "Only clang-cl is supported on Windows, see https://crbug.com/988071"
++#endif
++
++#if defined(__has_attribute)
++#define HAS_ATTRIBUTE(x) __has_attribute(x)
++#else
++#define HAS_ATTRIBUTE(x) 0
++#endif
++
++// Annotate a function indicating it should not be inlined.
++// Use like:
++// NOINLINE void DoStuff() { ... }
++#if defined(__clang__) && HAS_ATTRIBUTE(noinline)
++#define NOINLINE [[clang::noinline]]
++#elif defined(COMPILER_GCC) && HAS_ATTRIBUTE(noinline)
++#define NOINLINE __attribute__((noinline))
++#elif defined(COMPILER_MSVC)
++#define NOINLINE __declspec(noinline)
++#else
++#define NOINLINE
++#endif
++
++#endif // BUILD_RUST_ALLOCATOR_COMPILER_SPECIFIC_H_
diff --git a/www/ungoogled-chromium/files/patch-build_rust_allocator_immediate__crash.h b/www/ungoogled-chromium/files/patch-build_rust_allocator_immediate__crash.h
new file mode 100644
index 000000000000..7ab0f9d9c34c
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_rust_allocator_immediate__crash.h
@@ -0,0 +1,174 @@
+--- build/rust/allocator/immediate_crash.h.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/immediate_crash.h
+@@ -0,0 +1,171 @@
++// Copyright 2021 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++// This file has been copied from //base/immediate_crash.h.
++// TODO(crbug.com/40279749): Avoid code duplication / reuse code.
++
++#ifndef BUILD_RUST_ALLOCATOR_IMMEDIATE_CRASH_H_
++#define BUILD_RUST_ALLOCATOR_IMMEDIATE_CRASH_H_
++
++#include "build/build_config.h"
++
++// Crashes in the fastest possible way with no attempt at logging.
++// There are several constraints; see http://crbug.com/664209 for more context.
++//
++// - TRAP_SEQUENCE_() must be fatal. It should not be possible to ignore the
++// resulting exception or simply hit 'continue' to skip over it in a debugger.
++// - Different instances of TRAP_SEQUENCE_() must not be folded together, to
++// ensure crash reports are debuggable. Unlike __builtin_trap(), asm volatile
++// blocks will not be folded together.
++// Note: TRAP_SEQUENCE_() previously required an instruction with a unique
++// nonce since unlike clang, GCC folds together identical asm volatile
++// blocks.
++// - TRAP_SEQUENCE_() must produce a signal that is distinct from an invalid
++// memory access.
++// - TRAP_SEQUENCE_() must be treated as a set of noreturn instructions.
++// __builtin_unreachable() is used to provide that hint here. clang also uses
++// this as a heuristic to pack the instructions in the function epilogue to
++// improve code density.
++//
++// Additional properties that are nice to have:
++// - TRAP_SEQUENCE_() should be as compact as possible.
++// - The first instruction of TRAP_SEQUENCE_() should not change, to avoid
++// shifting crash reporting clusters. As a consequence of this, explicit
++// assembly is preferred over intrinsics.
++// Note: this last bullet point may no longer be true, and may be removed in
++// the future.
++
++// Note: TRAP_SEQUENCE Is currently split into two macro helpers due to the fact
++// that clang emits an actual instruction for __builtin_unreachable() on certain
++// platforms (see https://crbug.com/958675). In addition, the int3/bkpt/brk will
++// be removed in followups, so splitting it up like this now makes it easy to
++// land the followups.
++
++#if defined(COMPILER_GCC)
++
++#if BUILDFLAG(IS_NACL)
++
++// Crash report accuracy is not guaranteed on NaCl.
++#define TRAP_SEQUENCE1_() __builtin_trap()
++#define TRAP_SEQUENCE2_() asm volatile("")
++
++#elif defined(ARCH_CPU_X86_FAMILY)
++
++// TODO(crbug.com/40625592): In theory, it should be possible to use just
++// int3. However, there are a number of crashes with SIGILL as the exception
++// code, so it seems likely that there's a signal handler that allows execution
++// to continue after SIGTRAP.
++#define TRAP_SEQUENCE1_() asm volatile("int3")
++
++#if BUILDFLAG(IS_APPLE)
++// Intentionally empty: __builtin_unreachable() is always part of the sequence
++// (see IMMEDIATE_CRASH below) and already emits a ud2 on Mac.
++#define TRAP_SEQUENCE2_() asm volatile("")
++#else
++#define TRAP_SEQUENCE2_() asm volatile("ud2")
++#endif // BUILDFLAG(IS_APPLE)
++
++#elif defined(ARCH_CPU_ARMEL)
++
++// bkpt will generate a SIGBUS when running on armv7 and a SIGTRAP when running
++// as a 32 bit userspace app on arm64. There doesn't seem to be any way to
++// cause a SIGTRAP from userspace without using a syscall (which would be a
++// problem for sandboxing).
++// TODO(crbug.com/40625592): Remove bkpt from this sequence.
++#define TRAP_SEQUENCE1_() asm volatile("bkpt #0")
++#define TRAP_SEQUENCE2_() asm volatile("udf #0")
++
++#elif defined(ARCH_CPU_ARM64)
++
++// This will always generate a SIGTRAP on arm64.
++// TODO(crbug.com/40625592): Remove brk from this sequence.
++#define TRAP_SEQUENCE1_() asm volatile("brk #0")
++#define TRAP_SEQUENCE2_() asm volatile("hlt #0")
++
++#else
++
++// Crash report accuracy will not be guaranteed on other architectures, but at
++// least this will crash as expected.
++#define TRAP_SEQUENCE1_() __builtin_trap()
++#define TRAP_SEQUENCE2_() asm volatile("")
++
++#endif // ARCH_CPU_*
++
++#elif defined(COMPILER_MSVC)
++
++#if !defined(__clang__)
++
++// MSVC x64 doesn't support inline asm, so use the MSVC intrinsic.
++#define TRAP_SEQUENCE1_() __debugbreak()
++#define TRAP_SEQUENCE2_()
++
++#elif defined(ARCH_CPU_ARM64)
++
++// Windows ARM64 uses "BRK #F000" as its breakpoint instruction, and
++// __debugbreak() generates that in both VC++ and clang.
++#define TRAP_SEQUENCE1_() __debugbreak()
++// Intentionally empty: __builtin_unreachable() is always part of the sequence
++// (see IMMEDIATE_CRASH below) and already emits a ud2 on Win64,
++// https://crbug.com/958373
++#define TRAP_SEQUENCE2_() __asm volatile("")
++
++#else
++
++#define TRAP_SEQUENCE1_() asm volatile("int3")
++#define TRAP_SEQUENCE2_() asm volatile("ud2")
++
++#endif // __clang__
++
++#else
++
++#error No supported trap sequence!
++
++#endif // COMPILER_GCC
++
++#define TRAP_SEQUENCE_() \
++ do { \
++ TRAP_SEQUENCE1_(); \
++ TRAP_SEQUENCE2_(); \
++ } while (false)
++
++// CHECK() and the trap sequence can be invoked from a constexpr function.
++// This could make compilation fail on GCC, as it forbids directly using inline
++// asm inside a constexpr function. However, it allows calling a lambda
++// expression including the same asm.
++// The side effect is that the top of the stacktrace will not point to the
++// calling function, but to this anonymous lambda. This is still useful as the
++// full name of the lambda will typically include the name of the function that
++// calls CHECK() and the debugger will still break at the right line of code.
++#if !defined(COMPILER_GCC) || defined(__clang__)
++
++#define WRAPPED_TRAP_SEQUENCE_() TRAP_SEQUENCE_()
++
++#else
++
++#define WRAPPED_TRAP_SEQUENCE_() \
++ do { \
++ [] { TRAP_SEQUENCE_(); }(); \
++ } while (false)
++
++#endif // !defined(COMPILER_GCC) || defined(__clang__)
++
++#if defined(__clang__) || defined(COMPILER_GCC)
++
++// __builtin_unreachable() hints to the compiler that this is noreturn and can
++// be packed in the function epilogue.
++#define IMMEDIATE_CRASH() \
++ ({ \
++ WRAPPED_TRAP_SEQUENCE_(); \
++ __builtin_unreachable(); \
++ })
++
++#else
++
++// This is supporting non-chromium user of logging.h to build with MSVC, like
++// pdfium. On MSVC there is no __builtin_unreachable().
++#define IMMEDIATE_CRASH() WRAPPED_TRAP_SEQUENCE_()
++
++#endif // defined(__clang__) || defined(COMPILER_GCC)
++
++#endif // BUILD_RUST_ALLOCATOR_IMMEDIATE_CRASH_H_
diff --git a/www/ungoogled-chromium/files/patch-build_rust_allocator_lib.rs b/www/ungoogled-chromium/files/patch-build_rust_allocator_lib.rs
new file mode 100644
index 000000000000..89fddf278294
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_rust_allocator_lib.rs
@@ -0,0 +1,122 @@
+--- build/rust/allocator/lib.rs.orig 2025-05-20 09:16:26 UTC
++++ build/rust/allocator/lib.rs
+@@ -0,0 +1,119 @@
++// Copyright 2025 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++//! Define the allocator that Rust code in Chrome should use.
++//!
++//! Any final artifact that depends on this crate, even transitively, will use
++//! the allocator defined here.
++//!
++//! List of known issues:
++//!
++//! 1. We'd like to use PartitionAlloc on Windows, but the stdlib uses Windows
++//! heap functions directly that PartitionAlloc can not intercept.
++//! 2. We'd like `Vec::try_reserve` to fail at runtime on Linux instead of
++//! crashing in malloc() where PartitionAlloc replaces that function.
++
++// Required to apply weak linkage to symbols.
++//
++// TODO(https://crbug.com/410596442): Stop using unstable features here.
++// https://github.com/rust-lang/rust/issues/29603 tracks stabilization of the `linkage` feature.
++#![feature(linkage)]
++// Required to apply `#[rustc_std_internal_symbol]` to our alloc error handler
++// so the name is correctly mangled as rustc expects.
++//
++// TODO(https://crbug.com/410596442): Stop using internal features here.
++#![allow(internal_features)]
++#![feature(rustc_attrs)]
++
++// This module is in a separate source file to avoid having to teach `cxxbridge`
++// about conditional compilation.
++#[cfg(rust_allocator_uses_allocator_impls_h)]
++mod allocator_impls_ffi;
++
++/// Module that provides `#[global_allocator]` / `GlobalAlloc` interface for
++/// using an allocator from C++.
++#[cfg(rust_allocator_uses_allocator_impls_h)]
++mod cpp_allocator {
++ use super::allocator_impls_ffi::ffi;
++ use std::alloc::{GlobalAlloc, Layout};
++
++ struct Allocator;
++
++ unsafe impl GlobalAlloc for Allocator {
++ unsafe fn alloc(&self, layout: Layout) -> *mut u8 {
++ unsafe { ffi::alloc(layout.size(), layout.align()) }
++ }
++
++ unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) {
++ unsafe {
++ ffi::dealloc(ptr, layout.size(), layout.align());
++ }
++ }
++
++ unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut u8 {
++ unsafe { ffi::alloc_zeroed(layout.size(), layout.align()) }
++ }
++
++ unsafe fn realloc(&self, ptr: *mut u8, layout: Layout, new_size: usize) -> *mut u8 {
++ unsafe { ffi::realloc(ptr, layout.size(), layout.align(), new_size) }
++ }
++ }
++
++ #[global_allocator]
++ static GLOBAL: Allocator = Allocator;
++}
++
++/// Module that provides `#[global_allocator]` / `GlobalAlloc` interface for
++/// using the default Rust allocator.
++#[cfg(not(rust_allocator_uses_allocator_impls_h))]
++mod rust_allocator {
++ #[global_allocator]
++ static GLOBAL: std::alloc::System = std::alloc::System;
++}
++
++/// Module that provides global symbols that are needed both by `cpp_allocator`
++/// and `rust_allocator`.
++///
++/// When `rustc` drives linking, then it will define the symbols below. But
++/// Chromium only uses `rustc` to link Rust-only executables (e.g. `build.rs`
++/// scripts) and otherwise uses a non-Rust linker. This is why we have to
++/// manually define a few symbols below. We define those symbols
++/// as "weak" symbols, so that Rust-provided symbols "win" in case where Rust
++/// actually does drive the linking. This hack works (not only for Chromium,
++/// but also for google3 and other projects), but isn't officially supported by
++/// `rustc`.
++///
++/// TODO(https://crbug.com/410596442): Stop using internal features here.
++mod both_allocators {
++ /// As part of rustc's contract for using `#[global_allocator]` without
++ /// rustc-generated shims we must define this symbol, since we are opting in
++ /// to unstable functionality. See https://github.com/rust-lang/rust/issues/123015
++ #[no_mangle]
++ #[linkage = "weak"]
++ static __rust_no_alloc_shim_is_unstable: u8 = 0;
++
++ // Mangle the symbol name as rustc expects.
++ #[rustc_std_internal_symbol]
++ #[allow(non_upper_case_globals)]
++ #[linkage = "weak"]
++ static __rust_alloc_error_handler_should_panic: u8 = 0;
++
++ // Mangle the symbol name as rustc expects.
++ #[rustc_std_internal_symbol]
++ #[allow(non_upper_case_globals)]
++ #[linkage = "weak"]
++ fn __rust_alloc_error_handler(_size: usize, _align: usize) {
++ // TODO(lukasza): Investigate if we can just call `std::process::abort()` here.
++ // (Not really _needed_, but it could simplify code a little bit.)
++ unsafe { ffi::alloc_error_handler_impl() }
++ }
++
++ #[cxx::bridge(namespace = "rust_allocator_internal")]
++ mod ffi {
++ extern "C++" {
++ include!("build/rust/allocator/alloc_error_handler_impl.h");
++ unsafe fn alloc_error_handler_impl();
++ }
++ }
++}
diff --git a/www/ungoogled-chromium/files/patch-build_rust_cargo__crate.gni b/www/ungoogled-chromium/files/patch-build_rust_cargo__crate.gni
new file mode 100644
index 000000000000..a1590f727aa3
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_rust_cargo__crate.gni
@@ -0,0 +1,25 @@
+--- build/rust/cargo_crate.gni.orig 2025-05-20 09:16:26 UTC
++++ build/rust/cargo_crate.gni
+@@ -259,6 +259,12 @@ template("cargo_crate") {
+ # Don't import the `chromium` crate into third-party code.
+ no_chromium_prelude = true
+
++ # Don't depend on the chrome-specific #[global_allocator] crate from
++ # third-party code. This avoids some dependency cycle issues. The allocator
++ # crate will still be used if it exists anywhere in the dependency graph for
++ # a given linked artifact.
++ no_allocator_crate = true
++
+ rustc_metadata = _rustc_metadata
+
+ # TODO(crbug.com/40259764): don't default to true. This requires changes to
+@@ -482,6 +488,9 @@ template("cargo_crate") {
+
+ # Don't import the `chromium` crate into third-party code.
+ no_chromium_prelude = true
++
++ # Build scripts do not need to link to chrome's allocator.
++ no_allocator_crate = true
+
+ # The ${_build_script_name}_output target looks for the exe in this
+ # location. Due to how the Windows component build works, this has to
diff --git a/www/ungoogled-chromium/files/patch-build_rust_rust__macro.gni b/www/ungoogled-chromium/files/patch-build_rust_rust__macro.gni
new file mode 100644
index 000000000000..0dafc3819aa1
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_rust_rust__macro.gni
@@ -0,0 +1,12 @@
+--- build/rust/rust_macro.gni.orig 2025-05-20 09:16:26 UTC
++++ build/rust/rust_macro.gni
+@@ -16,6 +16,9 @@ template("rust_macro") {
+ forward_variables_from(invoker, TESTONLY_AND_VISIBILITY)
+ proc_macro_configs = invoker.configs
+ target_type = "rust_proc_macro"
++
++ # Macros are loaded by rustc and shouldn't use chrome's allocation routines.
++ no_allocator_crate = true
+ }
+ }
+
diff --git a/www/ungoogled-chromium/files/patch-build_rust_rust__target.gni b/www/ungoogled-chromium/files/patch-build_rust_rust__target.gni
new file mode 100644
index 000000000000..f4ad6f04fc45
--- /dev/null
+++ b/www/ungoogled-chromium/files/patch-build_rust_rust__target.gni
@@ -0,0 +1,13 @@
+--- build/rust/rust_target.gni.orig 2025-05-20 09:16:26 UTC
++++ build/rust/rust_target.gni
+@@ -339,6 +339,10 @@ template("rust_target") {
+ _rust_deps += [ "//build/rust/std" ]
+ }
+
++ if (!defined(invoker.no_allocator_crate) || !invoker.no_allocator_crate) {
++ _rust_deps += [ "//build/rust/allocator" ]
++ }
++
+ if (_build_unit_tests) {
+ _unit_test_target = "${_target_name}_unittests"
+ if (defined(invoker.unit_test_target)) {
diff --git a/www/ungoogled-chromium/files/patch-build_rust_std_BUILD.gn b/www/ungoogled-chromium/files/patch-build_rust_std_BUILD.gn
index 0a5335d58d48..c6c2801bd47d 100644
--- a/www/ungoogled-chromium/files/patch-build_rust_std_BUILD.gn
+++ b/www/ungoogled-chromium/files/patch-build_rust_std_BUILD.gn
@@ -1,6 +1,58 @@
---- build/rust/std/BUILD.gn.orig 2025-04-05 13:54:50 UTC
+--- build/rust/std/BUILD.gn.orig 2025-05-20 09:16:26 UTC
+++ build/rust/std/BUILD.gn
-@@ -89,13 +89,20 @@ if (toolchain_has_rust) {
+@@ -15,51 +15,12 @@
+ # allocator functions to PartitionAlloc when `use_partition_alloc_as_malloc` is
+ # true, so that Rust and C++ use the same allocator backend.
+
+-import("//build/buildflag_header.gni")
+ import("//build/config/compiler/compiler.gni")
+ import("//build/config/coverage/coverage.gni")
+ import("//build/config/rust.gni")
+ import("//build/config/sanitizers/sanitizers.gni")
+
+-rust_allocator_uses_partition_alloc = false
+-if (build_with_chromium) {
+- import("//base/allocator/partition_allocator/partition_alloc.gni")
+- rust_allocator_uses_partition_alloc = use_partition_alloc_as_malloc
+-}
+-
+-buildflag_header("buildflags") {
+- header = "buildflags.h"
+- flags = [
+- "RUST_ALLOCATOR_USES_PARTITION_ALLOC=$rust_allocator_uses_partition_alloc",
+- ]
+- visibility = [ ":*" ]
+-}
+-
+ if (toolchain_has_rust) {
+- # If clang performs the link step, we need to provide the allocator symbols
+- # that are normally injected by rustc during linking.
+- #
+- # We also "happen to" use this to redirect allocations to PartitionAlloc,
+- # though that would be better done through a #[global_allocator] crate (see
+- # above).
+- source_set("remap_alloc") {
+- public_deps = []
+- if (rust_allocator_uses_partition_alloc) {
+- public_deps += [ "//base/allocator/partition_allocator:partition_alloc" ]
+- }
+- deps = [ ":buildflags" ]
+- sources = [
+- # `alias.*`, `compiler_specific.h`, and `immediate_crash.*` have been
+- # copied from `//base`.
+- # TODO(crbug.com/40279749): Avoid duplication / reuse code.
+- "alias.cc",
+- "alias.h",
+- "compiler_specific.h",
+- "immediate_crash.h",
+- "remap_alloc.cc",
+- ]
+- }
+-
+ # List of Rust stdlib rlibs which are present in the official Rust toolchain
+ # we are using from the Android team. This is usually a version or two behind
+ # nightly. Generally this matches the toolchain we build ourselves, but if
+@@ -89,13 +50,20 @@ if (toolchain_has_rust) {
# These are no longer present in the Windows toolchain.
stdlib_files += [
"addr2line",
@@ -22,7 +74,7 @@
}
if (toolchain_for_rust_host_build_tools) {
-@@ -115,7 +122,6 @@ if (toolchain_has_rust) {
+@@ -115,7 +83,6 @@ if (toolchain_has_rust) {
# don't need to pass to the C++ linker because they're used for specialized
# purposes.
skip_stdlib_files = [
@@ -30,3 +82,25 @@
"rustc_std_workspace_alloc",
"rustc_std_workspace_core",
"rustc_std_workspace_std",
+@@ -269,8 +236,6 @@ if (toolchain_has_rust) {
+ foreach(libname, stdlib_files + skip_stdlib_files) {
+ deps += [ "rules:$libname" ]
+ }
+-
+- public_deps = [ ":remap_alloc" ]
+ }
+ } else {
+ action("find_stdlib") {
+@@ -396,12 +361,6 @@ if (toolchain_has_rust) {
+ ":stdlib_public_dependent_libs",
+ ]
+ deps = [ ":prebuilt_rustc_copy_to_sysroot" ]
+-
+- # The host builds tools toolchain supports Rust only and does not use
+- # the allocator remapping to point it to PartitionAlloc.
+- if (!toolchain_for_rust_host_build_tools) {
+- deps += [ ":remap_alloc" ]
+- }
+ }
+ }
+ }
diff --git a/www/varnish_exporter/Makefile b/www/varnish_exporter/Makefile
index 03f2fa9e6459..c41172a16100 100644
--- a/www/varnish_exporter/Makefile
+++ b/www/varnish_exporter/Makefile
@@ -1,6 +1,6 @@
PORTNAME= varnish_exporter
PORTVERSION= 1.6
-PORTREVISION= 24
+PORTREVISION= 25
CATEGORIES= www
MAINTAINER= ports@zx23.net
diff --git a/www/vultr-cli/Makefile b/www/vultr-cli/Makefile
index 882919ba8948..d9662d951003 100644
--- a/www/vultr-cli/Makefile
+++ b/www/vultr-cli/Makefile
@@ -1,7 +1,7 @@
PORTNAME= vultr-cli
DISTVERSIONPREFIX= v
DISTVERSION= 2.17.0
-PORTREVISION= 12
+PORTREVISION= 13
CATEGORIES= www
MAINTAINER= antranigv@freebsd.am
diff --git a/www/webhook/Makefile b/www/webhook/Makefile
index 84098c8cf717..37d9230251cc 100644
--- a/www/webhook/Makefile
+++ b/www/webhook/Makefile
@@ -1,6 +1,6 @@
PORTNAME= webhook
PORTVERSION= 2.8.0
-PORTREVISION= 25
+PORTREVISION= 26
CATEGORIES= www
MAINTAINER= stb@lassitu.de
diff --git a/www/websocketd/Makefile b/www/websocketd/Makefile
index e99066349810..f75db6f8b7b6 100644
--- a/www/websocketd/Makefile
+++ b/www/websocketd/Makefile
@@ -1,7 +1,7 @@
PORTNAME= websocketd
PORTVERSION= 0.4.1
DISTVERSIONPREFIX= v
-PORTREVISION= 25
+PORTREVISION= 26
CATEGORIES= www
MAINTAINER= sunpoet@FreeBSD.org
diff --git a/www/writeas-cli/Makefile b/www/writeas-cli/Makefile
index fe7feecabf02..cab9492646e2 100644
--- a/www/writeas-cli/Makefile
+++ b/www/writeas-cli/Makefile
@@ -1,7 +1,7 @@
PORTNAME= writeas-cli
DISTVERSIONPREFIX= v
DISTVERSION= 2.0.0-wf
-PORTREVISION= 25
+PORTREVISION= 26
CATEGORIES= www textproc
MASTER_SITES= https://code.as/core/socks/archive/v1.0.0.tar.gz?dummy=/:core_socks
DISTFILES= core-socks-v1.0.0.tar.gz:core_socks
diff --git a/www/writefreely/Makefile b/www/writefreely/Makefile
index a3ba0a891ff8..7f839f9f7005 100644
--- a/www/writefreely/Makefile
+++ b/www/writefreely/Makefile
@@ -1,7 +1,7 @@
PORTNAME= writefreely
DISTVERSIONPREFIX= v
DISTVERSION= 0.15.1
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= www textproc
MAINTAINER= fuz@FreeBSD.org
diff --git a/www/wuzz/Makefile b/www/wuzz/Makefile
index 17efd8f04350..8d7b842d4807 100644
--- a/www/wuzz/Makefile
+++ b/www/wuzz/Makefile
@@ -1,7 +1,7 @@
PORTNAME= wuzz
DISTVERSIONPREFIX= v
DISTVERSION= 0.5.0
-PORTREVISION= 25
+PORTREVISION= 26
CATEGORIES= www
MAINTAINER= yuri@FreeBSD.org
diff --git a/www/xcaddy/Makefile b/www/xcaddy/Makefile
index b8e7d1abeb54..800adff9291e 100644
--- a/www/xcaddy/Makefile
+++ b/www/xcaddy/Makefile
@@ -1,7 +1,7 @@
PORTNAME= xcaddy
DISTVERSIONPREFIX= v
DISTVERSION= 0.4.2
-PORTREVISION= 5
+PORTREVISION= 6
CATEGORIES= www
DIST_SUBDIR= xcaddy
diff --git a/www/zgrab2/Makefile b/www/zgrab2/Makefile
index 923f3f755802..7c76a6986554 100644
--- a/www/zgrab2/Makefile
+++ b/www/zgrab2/Makefile
@@ -1,7 +1,7 @@
PORTNAME= zgrab2
DISTVERSIONPREFIX= v
DISTVERSION= 0.1.8
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= www
MAINTAINER= yuri@FreeBSD.org