diff --git a/.buildkite/Dockerfile b/.buildkite/Dockerfile index 7f97965191..3d0cd7c15a 100644 --- a/.buildkite/Dockerfile +++ b/.buildkite/Dockerfile @@ -1,5 +1,5 @@ -ARG LLVM_VERSION="19" -ARG REPORTED_LLVM_VERSION="19.1.7" +ARG LLVM_VERSION="21" +ARG REPORTED_LLVM_VERSION="21.1.8" ARG OLD_BUN_VERSION="1.1.38" ARG BUILDKITE_AGENT_TAGS="queue=linux,os=linux,arch=${TARGETARCH}" diff --git a/.github/workflows/CLAUDE.md b/.github/workflows/CLAUDE.md index 348555e184..86e3707436 100644 --- a/.github/workflows/CLAUDE.md +++ b/.github/workflows/CLAUDE.md @@ -33,8 +33,8 @@ The workflow runs all three formatters simultaneously: #### 3. Tool Installation -##### Clang-format-19 -- Installs ONLY `clang-format-19` package (not the entire LLVM toolchain) +##### Clang-format-21 +- Installs ONLY `clang-format-21` package (not the entire LLVM toolchain) - Uses `--no-install-recommends --no-install-suggests` to skip unnecessary packages - Quiet installation with `-qq` and `-o=Dpkg::Use-Pty=0` diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index cc10727b59..274b7a44d0 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -10,8 +10,8 @@ on: merge_group: env: BUN_VERSION: "1.3.2" - LLVM_VERSION: "19.1.7" - LLVM_VERSION_MAJOR: "19" + LLVM_VERSION: "21.1.8" + LLVM_VERSION_MAJOR: "21" jobs: autofix: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c55a43998c..f6c7e682da 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -35,7 +35,7 @@ $ sudo pacman -S base-devel cmake git go libiconv libtool make ninja pkg-config ``` ```bash#Fedora -$ sudo dnf install cargo clang19 llvm19 lld19 cmake git golang libtool ninja-build pkg-config rustc ruby libatomic-static libstdc++-static sed unzip which libicu-devel 'perl(Math::BigInt)' +$ sudo dnf install cargo clang21 llvm21 lld21 cmake git golang libtool ninja-build pkg-config rustc ruby libatomic-static libstdc++-static sed unzip which libicu-devel 'perl(Math::BigInt)' ``` ```bash#openSUSE Tumbleweed @@ -90,17 +90,17 @@ Our build scripts will automatically detect and use `ccache` if available. You c ## Install LLVM -Bun requires LLVM 19 (`clang` is part of LLVM). This version requirement is to match WebKit (precompiled), as mismatching versions will cause memory allocation failures at runtime. In most cases, you can install LLVM through your system package manager: +Bun requires LLVM 21.1.8 (`clang` is part of LLVM). This version is enforced by the build system — mismatching versions will cause memory allocation failures at runtime. In most cases, you can install LLVM through your system package manager: {% codetabs group="os" %} ```bash#macOS (Homebrew) -$ brew install llvm@19 +$ brew install llvm@21 ``` ```bash#Ubuntu/Debian $ # LLVM has an automatic installation script that is compatible with all versions of Ubuntu -$ wget https://apt.llvm.org/llvm.sh -O - | sudo bash -s -- 19 all +$ wget https://apt.llvm.org/llvm.sh -O - | sudo bash -s -- 21 all ``` ```bash#Arch @@ -112,17 +112,17 @@ $ sudo dnf install llvm clang lld-devel ``` ```bash#openSUSE Tumbleweed -$ sudo zypper install clang19 lld19 llvm19 +$ sudo zypper install clang21 lld21 llvm21 ``` {% /codetabs %} -If none of the above solutions apply, you will have to install it [manually](https://github.com/llvm/llvm-project/releases/tag/llvmorg-19.1.7). +If none of the above solutions apply, you will have to install it [manually](https://github.com/llvm/llvm-project/releases/tag/llvmorg-21.1.8). -Make sure Clang/LLVM 19 is in your path: +Make sure Clang/LLVM 21 is in your path: ```bash -$ which clang-19 +$ which clang-21 ``` If not, run this to manually add it: @@ -131,13 +131,13 @@ If not, run this to manually add it: ```bash#macOS (Homebrew) # use fish_add_path if you're using fish -# use path+="$(brew --prefix llvm@19)/bin" if you are using zsh -$ export PATH="$(brew --prefix llvm@19)/bin:$PATH" +# use path+="$(brew --prefix llvm@21)/bin" if you are using zsh +$ export PATH="$(brew --prefix llvm@21)/bin:$PATH" ``` ```bash#Arch # use fish_add_path if you're using fish -$ export PATH="$PATH:/usr/lib/llvm19/bin" +$ export PATH="$PATH:/usr/lib/llvm21/bin" ``` {% /codetabs %} @@ -299,7 +299,7 @@ The issue may manifest when initially running `bun setup` as Clang being unable ``` The C++ compiler - "/usr/bin/clang++-19" + "/usr/bin/clang++-21" is not able to compile a simple test program. ``` diff --git a/cmake/tools/SetupLLVM.cmake b/cmake/tools/SetupLLVM.cmake index d8849ed6f0..c695a4175e 100644 --- a/cmake/tools/SetupLLVM.cmake +++ b/cmake/tools/SetupLLVM.cmake @@ -12,13 +12,7 @@ if(NOT ENABLE_LLVM) return() endif() -# LLVM 21 is required for Windows ARM64 (first version with ARM64 Windows builds) -# Other platforms use LLVM 19.1.7 -if(WIN32 AND CMAKE_SYSTEM_PROCESSOR MATCHES "ARM64|aarch64|AARCH64") - set(DEFAULT_LLVM_VERSION "21.1.8") -else() - set(DEFAULT_LLVM_VERSION "19.1.7") -endif() +set(DEFAULT_LLVM_VERSION "21.1.8") optionx(LLVM_VERSION STRING "The version of LLVM to use" DEFAULT ${DEFAULT_LLVM_VERSION}) @@ -78,14 +72,12 @@ macro(find_llvm_command variable command) ) endif() - math(EXPR LLVM_VERSION_NEXT_MAJOR "${LLVM_VERSION_MAJOR} + 1") - find_command( VARIABLE ${variable} VERSION_VARIABLE LLVM_VERSION COMMAND ${commands} PATHS ${LLVM_PATHS} - VERSION ">=${LLVM_VERSION_MAJOR}.1.0 <${LLVM_VERSION_NEXT_MAJOR}.0.0" + VERSION "${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}" ) list(APPEND CMAKE_ARGS -D${variable}=${${variable}}) endmacro() diff --git a/cmake/tools/SetupWebKit.cmake b/cmake/tools/SetupWebKit.cmake index 2f3e5ee8b4..aa98860ae5 100644 --- a/cmake/tools/SetupWebKit.cmake +++ b/cmake/tools/SetupWebKit.cmake @@ -6,7 +6,7 @@ option(WEBKIT_LOCAL "If a local version of WebKit should be used instead of down option(WEBKIT_BUILD_TYPE "The build type for local WebKit (defaults to CMAKE_BUILD_TYPE)") if(NOT WEBKIT_VERSION) - set(WEBKIT_VERSION 515344bc5d65aa2d4f9ff277b5fb944f0e051dcd) + set(WEBKIT_VERSION autobuild-preview-pr-153-a73d459b) endif() # Use preview build URL for Windows ARM64 until the fix is merged to main diff --git a/docs/project/building-windows.mdx b/docs/project/building-windows.mdx index 5e50773b40..ec6a1af666 100644 --- a/docs/project/building-windows.mdx +++ b/docs/project/building-windows.mdx @@ -35,7 +35,7 @@ winget install "Visual Studio Community 2022" --override "--add Microsoft.Visual After Visual Studio, you need the following: -- LLVM (19.1.7 for x64, 21.1.8 for ARM64) +- LLVM 21.1.8 - Go - Rust - NASM @@ -51,7 +51,7 @@ After Visual Studio, you need the following: irm https://get.scoop.sh | iex scoop install nodejs-lts go rust nasm ruby perl ccache # scoop seems to be buggy if you install llvm and the rest at the same time -scoop install llvm@19.1.7 +scoop install llvm@21.1.8 ``` For Windows ARM64, download LLVM 21.1.8 directly from GitHub releases (first version with ARM64 Windows builds): diff --git a/docs/project/contributing.mdx b/docs/project/contributing.mdx index 2627118897..fdc6945821 100644 --- a/docs/project/contributing.mdx +++ b/docs/project/contributing.mdx @@ -40,7 +40,7 @@ sudo pacman -S base-devel cmake git go libiconv libtool make ninja pkg-config py ``` ```bash Fedora -sudo dnf install cargo clang19 llvm19 lld19 cmake git golang libtool ninja-build pkg-config rustc ruby libatomic-static libstdc++-static sed unzip which libicu-devel 'perl(Math::BigInt)' +sudo dnf install cargo clang21 llvm21 lld21 cmake git golang libtool ninja-build pkg-config rustc ruby libatomic-static libstdc++-static sed unzip which libicu-devel 'perl(Math::BigInt)' ``` ```bash openSUSE Tumbleweed @@ -95,17 +95,17 @@ Our build scripts will automatically detect and use `ccache` if available. You c ## Install LLVM -Bun requires LLVM 19 (`clang` is part of LLVM). This version requirement is to match WebKit (precompiled), as mismatching versions will cause memory allocation failures at runtime. In most cases, you can install LLVM through your system package manager: +Bun requires LLVM 21.1.8 (`clang` is part of LLVM). This version is enforced by the build system — mismatching versions will cause memory allocation failures at runtime. In most cases, you can install LLVM through your system package manager: ```bash macOS (Homebrew) -brew install llvm@19 +brew install llvm@21 ``` ```bash Ubuntu/Debian # LLVM has an automatic installation script that is compatible with all versions of Ubuntu -wget https://apt.llvm.org/llvm.sh -O - | sudo bash -s -- 19 all +wget https://apt.llvm.org/llvm.sh -O - | sudo bash -s -- 21 all ``` ```bash Arch @@ -117,17 +117,17 @@ sudo dnf install llvm clang lld-devel ``` ```bash openSUSE Tumbleweed -sudo zypper install clang19 lld19 llvm19 +sudo zypper install clang21 lld21 llvm21 ``` -If none of the above solutions apply, you will have to install it [manually](https://github.com/llvm/llvm-project/releases/tag/llvmorg-19.1.7). +If none of the above solutions apply, you will have to install it [manually](https://github.com/llvm/llvm-project/releases/tag/llvmorg-21.1.8). -Make sure Clang/LLVM 19 is in your path: +Make sure Clang/LLVM 21 is in your path: ```bash -which clang-19 +which clang-21 ``` If not, run this to manually add it: @@ -136,13 +136,13 @@ If not, run this to manually add it: ```bash macOS (Homebrew) # use fish_add_path if you're using fish -# use path+="$(brew --prefix llvm@19)/bin" if you are using zsh -export PATH="$(brew --prefix llvm@19)/bin:$PATH" +# use path+="$(brew --prefix llvm@21)/bin" if you are using zsh +export PATH="$(brew --prefix llvm@21)/bin:$PATH" ``` ```bash Arch # use fish_add_path if you're using fish -export PATH="$PATH:/usr/lib/llvm19/bin" +export PATH="$PATH:/usr/lib/llvm21/bin" ``` @@ -309,7 +309,7 @@ The issue may manifest when initially running `bun setup` as Clang being unable ```txt The C++ compiler - "/usr/bin/clang++-19" + "/usr/bin/clang++-21" is not able to compile a simple test program. ``` diff --git a/flake.nix b/flake.nix index f507a61c6d..175b7c584d 100644 --- a/flake.nix +++ b/flake.nix @@ -26,10 +26,10 @@ }; }; - # LLVM 19 - matching the bootstrap script (targets 19.1.7, actual version from nixpkgs-unstable) - llvm = pkgs.llvm_19; - clang = pkgs.clang_19; - lld = pkgs.lld_19; + # LLVM 21 - matching the bootstrap script (targets 21.1.8, actual version from nixpkgs-unstable) + llvm = pkgs.llvm_21; + clang = pkgs.clang_21; + lld = pkgs.lld_21; # Node.js 24 - matching the bootstrap script (targets 24.3.0, actual version from nixpkgs-unstable) nodejs = pkgs.nodejs_24; @@ -42,7 +42,7 @@ pkgs.pkg-config pkgs.ccache - # Compilers and toolchain - version pinned to LLVM 19 + # Compilers and toolchain - version pinned to LLVM 21 clang llvm lld diff --git a/scripts/bootstrap.ps1 b/scripts/bootstrap.ps1 index b4fba56480..ac0029451e 100755 --- a/scripts/bootstrap.ps1 +++ b/scripts/bootstrap.ps1 @@ -387,7 +387,7 @@ function Install-PdbAddr2line { function Install-Llvm { Install-Package llvm ` -Command clang-cl ` - -Version "19.1.7" + -Version "21.1.8" Add-To-Path "$env:ProgramFiles\LLVM\bin" } diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh index 43aa7fad7d..7942a9b7f4 100755 --- a/scripts/bootstrap.sh +++ b/scripts/bootstrap.sh @@ -1096,7 +1096,7 @@ install_build_essentials() { } llvm_version_exact() { - print "19.1.7" + print "21.1.8" } llvm_version() { @@ -1106,7 +1106,7 @@ llvm_version() { install_llvm() { case "$pm" in apt) - # Debian 13 (Trixie) has LLVM 19 natively, and apt.llvm.org doesn't have a trixie repo + # Debian 13 (Trixie) has LLVM 21 natively, and apt.llvm.org doesn't have a trixie repo if [ "$distro" = "debian" ]; then install_packages \ "llvm-$(llvm_version)" \ @@ -1177,7 +1177,7 @@ install_gcc() { ;; esac - llvm_v="19" + llvm_v="21" append_to_profile "export CC=clang-${llvm_v}" append_to_profile "export CXX=clang++-${llvm_v}" diff --git a/scripts/build-jsc.ts b/scripts/build-jsc.ts index d4fa5673e6..b3be6092ae 100755 --- a/scripts/build-jsc.ts +++ b/scripts/build-jsc.ts @@ -77,10 +77,10 @@ const HAS_CCACHE = CCACHE !== null; // On Windows, use clang-cl for MSVC compatibility const CC_BASE = IS_WINDOWS ? findExecutable(["clang-cl.exe", "clang-cl"]) || "clang-cl" - : findExecutable(["clang-19", "clang"]) || "clang"; + : findExecutable(["clang-21", "clang"]) || "clang"; const CXX_BASE = IS_WINDOWS ? findExecutable(["clang-cl.exe", "clang-cl"]) || "clang-cl" - : findExecutable(["clang++-19", "clang++"]) || "clang++"; + : findExecutable(["clang++-21", "clang++"]) || "clang++"; const CC = HAS_CCACHE ? CCACHE : CC_BASE; const CXX = HAS_CCACHE ? CCACHE : CXX_BASE; diff --git a/scripts/run-clang-format.sh b/scripts/run-clang-format.sh index 13d9e736b5..7316b68b52 100755 --- a/scripts/run-clang-format.sh +++ b/scripts/run-clang-format.sh @@ -12,7 +12,7 @@ PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" MODE="${1:-format}" # Use LLVM_VERSION_MAJOR from environment or default to 19 -LLVM_VERSION="${LLVM_VERSION_MAJOR:-19}" +LLVM_VERSION="${LLVM_VERSION_MAJOR:-21}" # Ensure we have the specific clang-format version CLANG_FORMAT="clang-format-${LLVM_VERSION}" diff --git a/shell.nix b/shell.nix index 571c66d176..a4917ddfe1 100644 --- a/shell.nix +++ b/shell.nix @@ -8,9 +8,9 @@ pkgs.mkShell rec { # Core build tools (matching bootstrap.sh) cmake ninja - clang_19 - llvm_19 - lld_19 + clang_21 + llvm_21 + lld_21 nodejs_24 bun rustc @@ -77,10 +77,10 @@ pkgs.mkShell rec { ]; shellHook = '' - export CC="${pkgs.lib.getExe pkgs.clang_19}" - export CXX="${pkgs.lib.getExe' pkgs.clang_19 "clang++"}" - export AR="${pkgs.llvm_19}/bin/llvm-ar" - export RANLIB="${pkgs.llvm_19}/bin/llvm-ranlib" + export CC="${pkgs.lib.getExe pkgs.clang_21}" + export CXX="${pkgs.lib.getExe' pkgs.clang_21 "clang++"}" + export AR="${pkgs.llvm_21}/bin/llvm-ar" + export RANLIB="${pkgs.llvm_21}/bin/llvm-ranlib" export CMAKE_C_COMPILER="$CC" export CMAKE_CXX_COMPILER="$CXX" export CMAKE_AR="$AR" @@ -88,7 +88,7 @@ pkgs.mkShell rec { export CMAKE_SYSTEM_PROCESSOR=$(uname -m) export TMPDIR=''${TMPDIR:-/tmp} '' + pkgs.lib.optionalString pkgs.stdenv.isLinux '' - export LD="${pkgs.lib.getExe' pkgs.lld_19 "ld.lld"}" + export LD="${pkgs.lib.getExe' pkgs.lld_21 "ld.lld"}" export NIX_CFLAGS_LINK="''${NIX_CFLAGS_LINK:+$NIX_CFLAGS_LINK }-fuse-ld=lld" export LD_LIBRARY_PATH="${pkgs.lib.makeLibraryPath packages}''${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" '' + '' diff --git a/src/bun.js/bindings/EncodingTables.h b/src/bun.js/bindings/EncodingTables.h index a7b7dec52a..ca3d1d7e7a 100644 --- a/src/bun.js/bindings/EncodingTables.h +++ b/src/bun.js/bindings/EncodingTables.h @@ -55,6 +55,10 @@ template static auto findInSortedPair inline void checkEncodingTableInvariants() {} #endif +// LLVM 21+ -Wcharacter-conversion flags intentional char32_t/char16_t comparisons +// used for Unicode code point range checks in findFirstInSortedPairs. +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcharacter-conversion" struct CompareFirst { template bool operator()(const TypeA& a, const TypeB& b) { @@ -132,5 +136,6 @@ template static auto findInSortedPair } return std::ranges::equal_range(collection, makeFirstAdapter(key), CompareFirst {}); } +#pragma clang diagnostic pop } diff --git a/src/bun.js/bindings/TextCodecCJK.cpp b/src/bun.js/bindings/TextCodecCJK.cpp index b09ee61889..eee9a134b9 100644 --- a/src/bun.js/bindings/TextCodecCJK.cpp +++ b/src/bun.js/bindings/TextCodecCJK.cpp @@ -890,7 +890,7 @@ static const GB18030EncodeIndex& gb18030EncodeIndex() // https://unicode-org.atlassian.net/browse/ICU-22357 // The 2-byte values are handled correctly by values from gb18030() // but these need to be exceptions from gb18030Ranges(). -static std::optional gb18030AsymmetricEncode(char16_t codePoint) +static std::optional gb18030AsymmetricEncode(char32_t codePoint) { switch (codePoint) { case 0xE81E: diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp index 996b007e54..8bfe3e876b 100644 --- a/src/bun.js/bindings/ZigGlobalObject.cpp +++ b/src/bun.js/bindings/ZigGlobalObject.cpp @@ -302,7 +302,6 @@ extern "C" void JSCInitialize(const char* envp[], size_t envc, void (*onCrash)(c JSC::Options::useJITCage() = false; JSC::Options::useShadowRealm() = true; JSC::Options::useV8DateParser() = true; - JSC::Options::useMathSumPreciseMethod() = true; JSC::Options::evalMode() = evalMode; JSC::Options::heapGrowthSteepnessFactor() = 1.0; JSC::Options::heapGrowthMaxIncrease() = 2.0; diff --git a/src/bun.js/bindings/webcore/URLPatternParser.cpp b/src/bun.js/bindings/webcore/URLPatternParser.cpp index 2193dc0396..ff45aa4da4 100644 --- a/src/bun.js/bindings/webcore/URLPatternParser.cpp +++ b/src/bun.js/bindings/webcore/URLPatternParser.cpp @@ -470,7 +470,7 @@ String generatePatternString(const Vector& partList, const URLPatternStrin if (!needsGrouping && part.prefix.isEmpty() && previousPart && previousPart->type == PartType::FixedText && !previousPart->value.isEmpty()) { if (options.prefixCodepoint.length() == 1 - && options.prefixCodepoint.startsWith(*StringView(previousPart->value).codePoints().codePointAt(previousPart->value.length() - 1))) + && options.prefixCodepoint.startsWith(static_cast(*StringView(previousPart->value).codePoints().codePointAt(previousPart->value.length() - 1)))) needsGrouping = true; } @@ -541,7 +541,7 @@ String escapePatternString(StringView input) } // https://urlpattern.spec.whatwg.org/#is-a-valid-name-code-point -bool isValidNameCodepoint(char16_t codepoint, URLPatternUtilities::IsFirst first) +bool isValidNameCodepoint(char32_t codepoint, URLPatternUtilities::IsFirst first) { if (first == URLPatternUtilities::IsFirst::Yes) return u_hasBinaryProperty(codepoint, UCHAR_ID_START) || codepoint == '_' || codepoint == '$'; diff --git a/src/bun.js/bindings/webcore/URLPatternParser.h b/src/bun.js/bindings/webcore/URLPatternParser.h index 1f95d0b2e6..a06b56db52 100644 --- a/src/bun.js/bindings/webcore/URLPatternParser.h +++ b/src/bun.js/bindings/webcore/URLPatternParser.h @@ -104,7 +104,7 @@ ASCIILiteral convertModifierToString(Modifier); std::pair> generateRegexAndNameList(const Vector& partList, const URLPatternStringOptions&); String generatePatternString(const Vector& partList, const URLPatternStringOptions&); String escapePatternString(StringView input); -bool isValidNameCodepoint(char16_t codepoint, URLPatternUtilities::IsFirst); +bool isValidNameCodepoint(char32_t codepoint, URLPatternUtilities::IsFirst); } // namespace URLPatternUtilities } // namespace WebCore diff --git a/src/bun.js/bindings/workaround-missing-symbols.cpp b/src/bun.js/bindings/workaround-missing-symbols.cpp index 15703aa7b9..f39d330635 100644 --- a/src/bun.js/bindings/workaround-missing-symbols.cpp +++ b/src/bun.js/bindings/workaround-missing-symbols.cpp @@ -249,32 +249,9 @@ extern "C" __attribute__((used)) char __libc_single_threaded = 0; #endif #endif -#ifdef _LIBCPP_VERBOSE_ABORT_NOEXCEPT -// Workaround for this error: -// workaround-missing-symbols.cpp:245:11: error: '__libcpp_verbose_abort' is missing exception specification 'noexcept' -// 2025-07-10 15:59:47 PDT -// 245 | void std::__libcpp_verbose_abort(char const* format, ...) -// 2025-07-10 15:59:47 PDT -// | ^ -// 2025-07-10 15:59:47 PDT -// | noexcept -// 2025-07-10 15:59:47 PDT -// /opt/homebrew/Cellar/llvm/20.1.7/bin/../include/c++/v1/__verbose_abort:30:28: note: previous declaration is here -// 2025-07-10 15:59:47 PDT -// 30 | __printf__, 1, 2) void __libcpp_verbose_abort(const char* __format, ...) _LIBCPP_VERBOSE_ABORT_NOEXCEPT; -// 2025-07-10 15:59:47 PDT -// | ^ -// 2025-07-10 15:59:47 PDT -// 1 error generated. -// 2025-07-10 15:59:47 PDT -// [515/540] Building CXX -#define BUN_VERBOSE_ABORT_NOEXCEPT _LIBCPP_VERBOSE_ABORT_NOEXCEPT -#else -#define BUN_VERBOSE_ABORT_NOEXCEPT -#endif - // Provide our implementation -void std::__libcpp_verbose_abort(char const* format, ...) BUN_VERBOSE_ABORT_NOEXCEPT +// LLVM 20 used _LIBCPP_VERBOSE_ABORT_NOEXCEPT, LLVM 21+ uses _NOEXCEPT (always noexcept). +void std::__libcpp_verbose_abort(char const* format, ...) noexcept { va_list list; va_start(list, format); diff --git a/src/bun.js/modules/BunJSCModule.h b/src/bun.js/modules/BunJSCModule.h index 0b30cea5ac..21aa5bbb13 100644 --- a/src/bun.js/modules/BunJSCModule.h +++ b/src/bun.js/modules/BunJSCModule.h @@ -82,8 +82,9 @@ JSC_DEFINE_HOST_FUNCTION(functionStartRemoteDebugger, if (hostValue.isString()) { auto str = hostValue.toWTFString(globalObject); + auto cstr = toCString(str); if (!str.isEmpty()) - host = toCString(str).span().data(); + host = cstr.span().data(); } else if (!hostValue.isUndefined()) { throwVMError(globalObject, scope, createTypeError(globalObject, "host must be a string"_s)); diff --git a/src/crash_handler.zig b/src/crash_handler.zig index c719549cc1..cb88ae42f5 100644 --- a/src/crash_handler.zig +++ b/src/crash_handler.zig @@ -1700,8 +1700,8 @@ pub fn dumpStackTrace(trace: std.builtin.StackTrace, limits: WriteStackTraceLimi const programs: []const [:0]const u8 = switch (bun.Environment.os) { .windows => &.{"pdb-addr2line"}, - // if `llvm-symbolizer` doesn't work, also try `llvm-symbolizer-19` - else => &.{ "llvm-symbolizer", "llvm-symbolizer-19" }, + // if `llvm-symbolizer` doesn't work, also try `llvm-symbolizer-21` + else => &.{ "llvm-symbolizer", "llvm-symbolizer-21" }, }; for (programs) |program| { var arena = bun.ArenaAllocator.init(bun.default_allocator); diff --git a/test/napi/node-napi-tests/harness.ts b/test/napi/node-napi-tests/harness.ts index 5b511ac346..2befe7ed97 100644 --- a/test/napi/node-napi-tests/harness.ts +++ b/test/napi/node-napi-tests/harness.ts @@ -20,8 +20,8 @@ export async function build(dir: string) { // so we make it use clang instead ...(process.platform == "linux" && isCI ? { - CC: !isMusl ? "/usr/lib/llvm-19/bin/clang" : "/usr/lib/llvm19/bin/clang", - CXX: !isMusl ? "/usr/lib/llvm-19/bin/clang++" : "/usr/lib/llvm19/bin/clang++", + CC: !isMusl ? "/usr/lib/llvm-21/bin/clang" : "/usr/lib/llvm21/bin/clang", + CXX: !isMusl ? "/usr/lib/llvm-21/bin/clang++" : "/usr/lib/llvm21/bin/clang++", } : {}), },