[libcxx-commits] [libcxx] [libc++] Fill in Apple availability for LLVM 21 (PR #202347)

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Mon Jun 8 07:39:20 PDT 2026


https://github.com/ldionne created https://github.com/llvm/llvm-project/pull/202347

macOS 26.4 and aligned platforms have been released and they are roughly synchronized to libc++ 21. As a drive-by, also add missing versions for previous releases.

This also allows reverting #199682 which moved an XFAIL to UNSUPPORTED to silence CI failures temporarily.

>From e91a13d7df2a617256301cc391ebb4110980c81d Mon Sep 17 00:00:00 2001
From: Louis Dionne <ldionne.2 at gmail.com>
Date: Mon, 8 Jun 2026 16:15:46 +0200
Subject: [PATCH] [libc++] Fill in Apple availability for LLVM 21

macOS 26.4 and aligned platforms have been released and they are roughly
synchronized to libc++ 21. As a drive-by, also add missing versions for
previous releases.

This also allows reverting #199682 which moved an XFAIL to UNSUPPORTED
to silence CI failures temporarily.
---
 libcxx/include/__configuration/availability.h | 32 +++++++++++++++----
 .../string.capacity/over_max_size.pass.cpp    |  2 +-
 .../libcxx/test/features/availability.py      |  4 +--
 3 files changed, 28 insertions(+), 10 deletions(-)

diff --git a/libcxx/include/__configuration/availability.h b/libcxx/include/__configuration/availability.h
index f1a598b5206f4..395374df0b1cc 100644
--- a/libcxx/include/__configuration/availability.h
+++ b/libcxx/include/__configuration/availability.h
@@ -76,9 +76,23 @@
 #  define _LIBCPP_INTRODUCED_IN_LLVM_22_ATTRIBUTE __attribute__((unavailable))
 
 // LLVM 21
-// TODO: Fill this in
-#  define _LIBCPP_INTRODUCED_IN_LLVM_21 0
-#  define _LIBCPP_INTRODUCED_IN_LLVM_21_ATTRIBUTE __attribute__((unavailable))
+#  if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 260400) ||       \
+      (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 260400) ||     \
+      (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 260400) ||             \
+      (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 260400) ||       \
+      (defined(__ENVIRONMENT_BRIDGE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_BRIDGE_OS_VERSION_MIN_REQUIRED__ < 100400) ||     \
+      (defined(__ENVIRONMENT_DRIVERKIT_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_DRIVERKIT_VERSION_MIN_REQUIRED__ < 250400)
+#    define _LIBCPP_INTRODUCED_IN_LLVM_21 0
+#  else
+#    define _LIBCPP_INTRODUCED_IN_LLVM_21 1
+#  endif
+#  define _LIBCPP_INTRODUCED_IN_LLVM_21_ATTRIBUTE                                                                 \
+    __attribute__((availability(macos, strict, introduced = 26.4)))                                               \
+    __attribute__((availability(ios, strict, introduced = 26.4)))                                                 \
+    __attribute__((availability(tvos, strict, introduced = 26.4)))                                                \
+    __attribute__((availability(watchos, strict, introduced = 26.4)))                                             \
+    __attribute__((availability(bridgeos, strict, introduced = 10.4)))                                            \
+    __attribute__((availability(driverkit, strict, introduced = 25.4)))
 
 // LLVM 20
 //
@@ -87,7 +101,8 @@
       (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 260000) ||     \
       (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 260000) ||             \
       (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 260000) ||       \
-      (defined(__ENVIRONMENT_BRIDGE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_BRIDGE_OS_VERSION_MIN_REQUIRED__ < 100000)
+      (defined(__ENVIRONMENT_BRIDGE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_BRIDGE_OS_VERSION_MIN_REQUIRED__ < 100000) ||     \
+      (defined(__ENVIRONMENT_DRIVERKIT_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_DRIVERKIT_VERSION_MIN_REQUIRED__ < 250000)
 #    define _LIBCPP_INTRODUCED_IN_LLVM_20 0
 #  else
 #    define _LIBCPP_INTRODUCED_IN_LLVM_20 1
@@ -97,14 +112,16 @@
     __attribute__((availability(ios, strict, introduced = 26.0)))                                                 \
     __attribute__((availability(tvos, strict, introduced = 26.0)))                                                \
     __attribute__((availability(watchos, strict, introduced = 26.0)))                                             \
-    __attribute__((availability(bridgeos, strict, introduced = 10.0)))
+    __attribute__((availability(bridgeos, strict, introduced = 10.0)))                                            \
+    __attribute__((availability(driverkit, strict, introduced = 25.0)))
 
 // LLVM 19
 #  if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 150400) ||       \
       (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 180400) ||     \
       (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 180400) ||             \
       (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 110400) ||       \
-      (defined(__ENVIRONMENT_BRIDGE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_BRIDGE_OS_VERSION_MIN_REQUIRED__ < 90400)
+      (defined(__ENVIRONMENT_BRIDGE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_BRIDGE_OS_VERSION_MIN_REQUIRED__ < 90400) ||       \
+      (defined(__ENVIRONMENT_DRIVERKIT_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_DRIVERKIT_VERSION_MIN_REQUIRED__ < 240400)
 #    define _LIBCPP_INTRODUCED_IN_LLVM_19 0
 #  else
 #    define _LIBCPP_INTRODUCED_IN_LLVM_19 1
@@ -114,7 +131,8 @@
     __attribute__((availability(ios, strict, introduced = 18.4)))                                                 \
     __attribute__((availability(tvos, strict, introduced = 18.4)))                                                \
     __attribute__((availability(watchos, strict, introduced = 11.4)))                                             \
-    __attribute__((availability(bridgeos, strict, introduced = 9.4)))
+    __attribute__((availability(bridgeos, strict, introduced = 9.4)))                                             \
+    __attribute__((availability(driverkit, strict, introduced = 24.4)))
 
 // LLVM 18
 #  if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 150000) ||       \
diff --git a/libcxx/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp
index 8c829605f5e78..8e5919539d94e 100644
--- a/libcxx/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp
@@ -14,7 +14,7 @@
 // than it really is, and we fail to throw `length_error` from `string::resize()`,
 // which is explicitly instantiated in the built library.
 //
-// UNSUPPORTED: using-built-library-before-llvm-21
+// XFAIL: using-built-library-before-llvm-21
 
 // <string>
 
diff --git a/libcxx/utils/libcxx/test/features/availability.py b/libcxx/utils/libcxx/test/features/availability.py
index 39c6cf45a1708..374e85959333b 100644
--- a/libcxx/utils/libcxx/test/features/availability.py
+++ b/libcxx/utils/libcxx/test/features/availability.py
@@ -22,14 +22,14 @@
     Feature(
         name="_target-has-llvm-21",
         when=lambda cfg: BooleanExpression.evaluate(
-            "TBD",
+            r"_target-has-llvm-22 || target={{.+}}-apple-macosx{{26.[4-9](.\d+)?}}",
             cfg.available_features,
         ),
     ),
     Feature(
         name="_target-has-llvm-20",
         when=lambda cfg: BooleanExpression.evaluate(
-            r"_target-has-llvm-21 || target={{.+}}-apple-macosx{{26.[0-9](.\d+)?}}",
+            r"_target-has-llvm-21 || target={{.+}}-apple-macosx{{26.[0-3](.\d+)?}}",
             cfg.available_features,
         ),
     ),



More information about the libcxx-commits mailing list