mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
Upgrade LLVM toolchain from 19.1.7 to 21.1.8
- Update LLVM version references across build scripts, Dockerfiles, CI, Nix configs, and documentation - Fix LLVM 21 -Wcharacter-conversion errors in WebKit bindings: - EncodingTables.h: pragma for intentional char32_t/char16_t comparisons - TextCodecCJK.cpp: widen gb18030AsymmetricEncode param to char32_t - URLPatternParser: widen isValidNameCodepoint param to char32_t - Fix __libcpp_verbose_abort noexcept mismatch (LLVM 21 uses _NOEXCEPT) - Remove useMathSumPreciseMethod (removed upstream in JSC) - Point WEBKIT_VERSION to preview build from oven-sh/WebKit#153 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
ARG LLVM_VERSION="19"
|
ARG LLVM_VERSION="21"
|
||||||
ARG REPORTED_LLVM_VERSION="19.1.7"
|
ARG REPORTED_LLVM_VERSION="21.1.8"
|
||||||
ARG OLD_BUN_VERSION="1.1.38"
|
ARG OLD_BUN_VERSION="1.1.38"
|
||||||
ARG BUILDKITE_AGENT_TAGS="queue=linux,os=linux,arch=${TARGETARCH}"
|
ARG BUILDKITE_AGENT_TAGS="queue=linux,os=linux,arch=${TARGETARCH}"
|
||||||
|
|
||||||
|
|||||||
4
.github/workflows/CLAUDE.md
vendored
4
.github/workflows/CLAUDE.md
vendored
@@ -33,8 +33,8 @@ The workflow runs all three formatters simultaneously:
|
|||||||
|
|
||||||
#### 3. Tool Installation
|
#### 3. Tool Installation
|
||||||
|
|
||||||
##### Clang-format-19
|
##### Clang-format-21
|
||||||
- Installs ONLY `clang-format-19` package (not the entire LLVM toolchain)
|
- Installs ONLY `clang-format-21` package (not the entire LLVM toolchain)
|
||||||
- Uses `--no-install-recommends --no-install-suggests` to skip unnecessary packages
|
- Uses `--no-install-recommends --no-install-suggests` to skip unnecessary packages
|
||||||
- Quiet installation with `-qq` and `-o=Dpkg::Use-Pty=0`
|
- Quiet installation with `-qq` and `-o=Dpkg::Use-Pty=0`
|
||||||
|
|
||||||
|
|||||||
4
.github/workflows/format.yml
vendored
4
.github/workflows/format.yml
vendored
@@ -10,8 +10,8 @@ on:
|
|||||||
merge_group:
|
merge_group:
|
||||||
env:
|
env:
|
||||||
BUN_VERSION: "1.3.2"
|
BUN_VERSION: "1.3.2"
|
||||||
LLVM_VERSION: "19.1.7"
|
LLVM_VERSION: "21.1.8"
|
||||||
LLVM_VERSION_MAJOR: "19"
|
LLVM_VERSION_MAJOR: "21"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
autofix:
|
autofix:
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ $ sudo pacman -S base-devel cmake git go libiconv libtool make ninja pkg-config
|
|||||||
```
|
```
|
||||||
|
|
||||||
```bash#Fedora
|
```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
|
```bash#openSUSE Tumbleweed
|
||||||
@@ -90,17 +90,17 @@ Our build scripts will automatically detect and use `ccache` if available. You c
|
|||||||
|
|
||||||
## Install LLVM
|
## 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" %}
|
{% codetabs group="os" %}
|
||||||
|
|
||||||
```bash#macOS (Homebrew)
|
```bash#macOS (Homebrew)
|
||||||
$ brew install llvm@19
|
$ brew install llvm@21
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash#Ubuntu/Debian
|
```bash#Ubuntu/Debian
|
||||||
$ # LLVM has an automatic installation script that is compatible with all versions of Ubuntu
|
$ # 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
|
```bash#Arch
|
||||||
@@ -112,17 +112,17 @@ $ sudo dnf install llvm clang lld-devel
|
|||||||
```
|
```
|
||||||
|
|
||||||
```bash#openSUSE Tumbleweed
|
```bash#openSUSE Tumbleweed
|
||||||
$ sudo zypper install clang19 lld19 llvm19
|
$ sudo zypper install clang21 lld21 llvm21
|
||||||
```
|
```
|
||||||
|
|
||||||
{% /codetabs %}
|
{% /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
|
```bash
|
||||||
$ which clang-19
|
$ which clang-21
|
||||||
```
|
```
|
||||||
|
|
||||||
If not, run this to manually add it:
|
If not, run this to manually add it:
|
||||||
@@ -131,13 +131,13 @@ If not, run this to manually add it:
|
|||||||
|
|
||||||
```bash#macOS (Homebrew)
|
```bash#macOS (Homebrew)
|
||||||
# use fish_add_path if you're using fish
|
# use fish_add_path if you're using fish
|
||||||
# use path+="$(brew --prefix llvm@19)/bin" if you are using zsh
|
# use path+="$(brew --prefix llvm@21)/bin" if you are using zsh
|
||||||
$ export PATH="$(brew --prefix llvm@19)/bin:$PATH"
|
$ export PATH="$(brew --prefix llvm@21)/bin:$PATH"
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash#Arch
|
```bash#Arch
|
||||||
# use fish_add_path if you're using fish
|
# use fish_add_path if you're using fish
|
||||||
$ export PATH="$PATH:/usr/lib/llvm19/bin"
|
$ export PATH="$PATH:/usr/lib/llvm21/bin"
|
||||||
```
|
```
|
||||||
|
|
||||||
{% /codetabs %}
|
{% /codetabs %}
|
||||||
@@ -299,7 +299,7 @@ The issue may manifest when initially running `bun setup` as Clang being unable
|
|||||||
```
|
```
|
||||||
The C++ compiler
|
The C++ compiler
|
||||||
|
|
||||||
"/usr/bin/clang++-19"
|
"/usr/bin/clang++-21"
|
||||||
|
|
||||||
is not able to compile a simple test program.
|
is not able to compile a simple test program.
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -12,13 +12,7 @@ if(NOT ENABLE_LLVM)
|
|||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# LLVM 21 is required for Windows ARM64 (first version with ARM64 Windows builds)
|
set(DEFAULT_LLVM_VERSION "21.1.8")
|
||||||
# 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()
|
|
||||||
|
|
||||||
optionx(LLVM_VERSION STRING "The version of LLVM to use" DEFAULT ${DEFAULT_LLVM_VERSION})
|
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()
|
endif()
|
||||||
|
|
||||||
math(EXPR LLVM_VERSION_NEXT_MAJOR "${LLVM_VERSION_MAJOR} + 1")
|
|
||||||
|
|
||||||
find_command(
|
find_command(
|
||||||
VARIABLE ${variable}
|
VARIABLE ${variable}
|
||||||
VERSION_VARIABLE LLVM_VERSION
|
VERSION_VARIABLE LLVM_VERSION
|
||||||
COMMAND ${commands}
|
COMMAND ${commands}
|
||||||
PATHS ${LLVM_PATHS}
|
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}})
|
list(APPEND CMAKE_ARGS -D${variable}=${${variable}})
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|||||||
@@ -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)")
|
option(WEBKIT_BUILD_TYPE "The build type for local WebKit (defaults to CMAKE_BUILD_TYPE)")
|
||||||
|
|
||||||
if(NOT WEBKIT_VERSION)
|
if(NOT WEBKIT_VERSION)
|
||||||
set(WEBKIT_VERSION 515344bc5d65aa2d4f9ff277b5fb944f0e051dcd)
|
set(WEBKIT_VERSION autobuild-preview-pr-153-a73d459b)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Use preview build URL for Windows ARM64 until the fix is merged to main
|
# Use preview build URL for Windows ARM64 until the fix is merged to main
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ winget install "Visual Studio Community 2022" --override "--add Microsoft.Visual
|
|||||||
|
|
||||||
After Visual Studio, you need the following:
|
After Visual Studio, you need the following:
|
||||||
|
|
||||||
- LLVM (19.1.7 for x64, 21.1.8 for ARM64)
|
- LLVM 21.1.8
|
||||||
- Go
|
- Go
|
||||||
- Rust
|
- Rust
|
||||||
- NASM
|
- NASM
|
||||||
@@ -51,7 +51,7 @@ After Visual Studio, you need the following:
|
|||||||
irm https://get.scoop.sh | iex
|
irm https://get.scoop.sh | iex
|
||||||
scoop install nodejs-lts go rust nasm ruby perl ccache
|
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 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):
|
For Windows ARM64, download LLVM 21.1.8 directly from GitHub releases (first version with ARM64 Windows builds):
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ sudo pacman -S base-devel cmake git go libiconv libtool make ninja pkg-config py
|
|||||||
```
|
```
|
||||||
|
|
||||||
```bash Fedora
|
```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
|
```bash openSUSE Tumbleweed
|
||||||
@@ -95,17 +95,17 @@ Our build scripts will automatically detect and use `ccache` if available. You c
|
|||||||
|
|
||||||
## Install LLVM
|
## 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:
|
||||||
|
|
||||||
<CodeGroup>
|
<CodeGroup>
|
||||||
|
|
||||||
```bash macOS (Homebrew)
|
```bash macOS (Homebrew)
|
||||||
brew install llvm@19
|
brew install llvm@21
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash Ubuntu/Debian
|
```bash Ubuntu/Debian
|
||||||
# LLVM has an automatic installation script that is compatible with all versions of Ubuntu
|
# 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
|
```bash Arch
|
||||||
@@ -117,17 +117,17 @@ sudo dnf install llvm clang lld-devel
|
|||||||
```
|
```
|
||||||
|
|
||||||
```bash openSUSE Tumbleweed
|
```bash openSUSE Tumbleweed
|
||||||
sudo zypper install clang19 lld19 llvm19
|
sudo zypper install clang21 lld21 llvm21
|
||||||
```
|
```
|
||||||
|
|
||||||
</CodeGroup>
|
</CodeGroup>
|
||||||
|
|
||||||
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
|
```bash
|
||||||
which clang-19
|
which clang-21
|
||||||
```
|
```
|
||||||
|
|
||||||
If not, run this to manually add it:
|
If not, run this to manually add it:
|
||||||
@@ -136,13 +136,13 @@ If not, run this to manually add it:
|
|||||||
|
|
||||||
```bash macOS (Homebrew)
|
```bash macOS (Homebrew)
|
||||||
# use fish_add_path if you're using fish
|
# use fish_add_path if you're using fish
|
||||||
# use path+="$(brew --prefix llvm@19)/bin" if you are using zsh
|
# use path+="$(brew --prefix llvm@21)/bin" if you are using zsh
|
||||||
export PATH="$(brew --prefix llvm@19)/bin:$PATH"
|
export PATH="$(brew --prefix llvm@21)/bin:$PATH"
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash Arch
|
```bash Arch
|
||||||
# use fish_add_path if you're using fish
|
# use fish_add_path if you're using fish
|
||||||
export PATH="$PATH:/usr/lib/llvm19/bin"
|
export PATH="$PATH:/usr/lib/llvm21/bin"
|
||||||
```
|
```
|
||||||
|
|
||||||
</CodeGroup>
|
</CodeGroup>
|
||||||
@@ -309,7 +309,7 @@ The issue may manifest when initially running `bun setup` as Clang being unable
|
|||||||
```txt
|
```txt
|
||||||
The C++ compiler
|
The C++ compiler
|
||||||
|
|
||||||
"/usr/bin/clang++-19"
|
"/usr/bin/clang++-21"
|
||||||
|
|
||||||
is not able to compile a simple test program.
|
is not able to compile a simple test program.
|
||||||
```
|
```
|
||||||
|
|||||||
10
flake.nix
10
flake.nix
@@ -26,10 +26,10 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# LLVM 19 - matching the bootstrap script (targets 19.1.7, actual version from nixpkgs-unstable)
|
# LLVM 21 - matching the bootstrap script (targets 21.1.8, actual version from nixpkgs-unstable)
|
||||||
llvm = pkgs.llvm_19;
|
llvm = pkgs.llvm_21;
|
||||||
clang = pkgs.clang_19;
|
clang = pkgs.clang_21;
|
||||||
lld = pkgs.lld_19;
|
lld = pkgs.lld_21;
|
||||||
|
|
||||||
# Node.js 24 - matching the bootstrap script (targets 24.3.0, actual version from nixpkgs-unstable)
|
# Node.js 24 - matching the bootstrap script (targets 24.3.0, actual version from nixpkgs-unstable)
|
||||||
nodejs = pkgs.nodejs_24;
|
nodejs = pkgs.nodejs_24;
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
pkgs.pkg-config
|
pkgs.pkg-config
|
||||||
pkgs.ccache
|
pkgs.ccache
|
||||||
|
|
||||||
# Compilers and toolchain - version pinned to LLVM 19
|
# Compilers and toolchain - version pinned to LLVM 21
|
||||||
clang
|
clang
|
||||||
llvm
|
llvm
|
||||||
lld
|
lld
|
||||||
|
|||||||
@@ -387,7 +387,7 @@ function Install-PdbAddr2line {
|
|||||||
function Install-Llvm {
|
function Install-Llvm {
|
||||||
Install-Package llvm `
|
Install-Package llvm `
|
||||||
-Command clang-cl `
|
-Command clang-cl `
|
||||||
-Version "19.1.7"
|
-Version "21.1.8"
|
||||||
Add-To-Path "$env:ProgramFiles\LLVM\bin"
|
Add-To-Path "$env:ProgramFiles\LLVM\bin"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1096,7 +1096,7 @@ install_build_essentials() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
llvm_version_exact() {
|
llvm_version_exact() {
|
||||||
print "19.1.7"
|
print "21.1.8"
|
||||||
}
|
}
|
||||||
|
|
||||||
llvm_version() {
|
llvm_version() {
|
||||||
@@ -1106,7 +1106,7 @@ llvm_version() {
|
|||||||
install_llvm() {
|
install_llvm() {
|
||||||
case "$pm" in
|
case "$pm" in
|
||||||
apt)
|
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
|
if [ "$distro" = "debian" ]; then
|
||||||
install_packages \
|
install_packages \
|
||||||
"llvm-$(llvm_version)" \
|
"llvm-$(llvm_version)" \
|
||||||
@@ -1177,7 +1177,7 @@ install_gcc() {
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
llvm_v="19"
|
llvm_v="21"
|
||||||
|
|
||||||
append_to_profile "export CC=clang-${llvm_v}"
|
append_to_profile "export CC=clang-${llvm_v}"
|
||||||
append_to_profile "export CXX=clang++-${llvm_v}"
|
append_to_profile "export CXX=clang++-${llvm_v}"
|
||||||
|
|||||||
@@ -77,10 +77,10 @@ const HAS_CCACHE = CCACHE !== null;
|
|||||||
// On Windows, use clang-cl for MSVC compatibility
|
// On Windows, use clang-cl for MSVC compatibility
|
||||||
const CC_BASE = IS_WINDOWS
|
const CC_BASE = IS_WINDOWS
|
||||||
? findExecutable(["clang-cl.exe", "clang-cl"]) || "clang-cl"
|
? findExecutable(["clang-cl.exe", "clang-cl"]) || "clang-cl"
|
||||||
: findExecutable(["clang-19", "clang"]) || "clang";
|
: findExecutable(["clang-21", "clang"]) || "clang";
|
||||||
const CXX_BASE = IS_WINDOWS
|
const CXX_BASE = IS_WINDOWS
|
||||||
? findExecutable(["clang-cl.exe", "clang-cl"]) || "clang-cl"
|
? 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 CC = HAS_CCACHE ? CCACHE : CC_BASE;
|
||||||
const CXX = HAS_CCACHE ? CCACHE : CXX_BASE;
|
const CXX = HAS_CCACHE ? CCACHE : CXX_BASE;
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|||||||
MODE="${1:-format}"
|
MODE="${1:-format}"
|
||||||
|
|
||||||
# Use LLVM_VERSION_MAJOR from environment or default to 19
|
# 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
|
# Ensure we have the specific clang-format version
|
||||||
CLANG_FORMAT="clang-format-${LLVM_VERSION}"
|
CLANG_FORMAT="clang-format-${LLVM_VERSION}"
|
||||||
|
|||||||
16
shell.nix
16
shell.nix
@@ -8,9 +8,9 @@ pkgs.mkShell rec {
|
|||||||
# Core build tools (matching bootstrap.sh)
|
# Core build tools (matching bootstrap.sh)
|
||||||
cmake
|
cmake
|
||||||
ninja
|
ninja
|
||||||
clang_19
|
clang_21
|
||||||
llvm_19
|
llvm_21
|
||||||
lld_19
|
lld_21
|
||||||
nodejs_24
|
nodejs_24
|
||||||
bun
|
bun
|
||||||
rustc
|
rustc
|
||||||
@@ -77,10 +77,10 @@ pkgs.mkShell rec {
|
|||||||
];
|
];
|
||||||
|
|
||||||
shellHook = ''
|
shellHook = ''
|
||||||
export CC="${pkgs.lib.getExe pkgs.clang_19}"
|
export CC="${pkgs.lib.getExe pkgs.clang_21}"
|
||||||
export CXX="${pkgs.lib.getExe' pkgs.clang_19 "clang++"}"
|
export CXX="${pkgs.lib.getExe' pkgs.clang_21 "clang++"}"
|
||||||
export AR="${pkgs.llvm_19}/bin/llvm-ar"
|
export AR="${pkgs.llvm_21}/bin/llvm-ar"
|
||||||
export RANLIB="${pkgs.llvm_19}/bin/llvm-ranlib"
|
export RANLIB="${pkgs.llvm_21}/bin/llvm-ranlib"
|
||||||
export CMAKE_C_COMPILER="$CC"
|
export CMAKE_C_COMPILER="$CC"
|
||||||
export CMAKE_CXX_COMPILER="$CXX"
|
export CMAKE_CXX_COMPILER="$CXX"
|
||||||
export CMAKE_AR="$AR"
|
export CMAKE_AR="$AR"
|
||||||
@@ -88,7 +88,7 @@ pkgs.mkShell rec {
|
|||||||
export CMAKE_SYSTEM_PROCESSOR=$(uname -m)
|
export CMAKE_SYSTEM_PROCESSOR=$(uname -m)
|
||||||
export TMPDIR=''${TMPDIR:-/tmp}
|
export TMPDIR=''${TMPDIR:-/tmp}
|
||||||
'' + pkgs.lib.optionalString pkgs.stdenv.isLinux ''
|
'' + 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 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}"
|
export LD_LIBRARY_PATH="${pkgs.lib.makeLibraryPath packages}''${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
|
||||||
'' + ''
|
'' + ''
|
||||||
|
|||||||
@@ -55,6 +55,10 @@ template<typename CollectionType, typename KeyType> static auto findInSortedPair
|
|||||||
inline void checkEncodingTableInvariants() {}
|
inline void checkEncodingTableInvariants() {}
|
||||||
#endif
|
#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 {
|
struct CompareFirst {
|
||||||
template<typename TypeA, typename TypeB> bool operator()(const TypeA& a, const TypeB& b)
|
template<typename TypeA, typename TypeB> bool operator()(const TypeA& a, const TypeB& b)
|
||||||
{
|
{
|
||||||
@@ -132,5 +136,6 @@ template<typename CollectionType, typename KeyType> static auto findInSortedPair
|
|||||||
}
|
}
|
||||||
return std::ranges::equal_range(collection, makeFirstAdapter(key), CompareFirst {});
|
return std::ranges::equal_range(collection, makeFirstAdapter(key), CompareFirst {});
|
||||||
}
|
}
|
||||||
|
#pragma clang diagnostic pop
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -890,7 +890,7 @@ static const GB18030EncodeIndex& gb18030EncodeIndex()
|
|||||||
// https://unicode-org.atlassian.net/browse/ICU-22357
|
// https://unicode-org.atlassian.net/browse/ICU-22357
|
||||||
// The 2-byte values are handled correctly by values from gb18030()
|
// The 2-byte values are handled correctly by values from gb18030()
|
||||||
// but these need to be exceptions from gb18030Ranges().
|
// but these need to be exceptions from gb18030Ranges().
|
||||||
static std::optional<uint16_t> gb18030AsymmetricEncode(char16_t codePoint)
|
static std::optional<uint16_t> gb18030AsymmetricEncode(char32_t codePoint)
|
||||||
{
|
{
|
||||||
switch (codePoint) {
|
switch (codePoint) {
|
||||||
case 0xE81E:
|
case 0xE81E:
|
||||||
|
|||||||
@@ -302,7 +302,6 @@ extern "C" void JSCInitialize(const char* envp[], size_t envc, void (*onCrash)(c
|
|||||||
JSC::Options::useJITCage() = false;
|
JSC::Options::useJITCage() = false;
|
||||||
JSC::Options::useShadowRealm() = true;
|
JSC::Options::useShadowRealm() = true;
|
||||||
JSC::Options::useV8DateParser() = true;
|
JSC::Options::useV8DateParser() = true;
|
||||||
JSC::Options::useMathSumPreciseMethod() = true;
|
|
||||||
JSC::Options::evalMode() = evalMode;
|
JSC::Options::evalMode() = evalMode;
|
||||||
JSC::Options::heapGrowthSteepnessFactor() = 1.0;
|
JSC::Options::heapGrowthSteepnessFactor() = 1.0;
|
||||||
JSC::Options::heapGrowthMaxIncrease() = 2.0;
|
JSC::Options::heapGrowthMaxIncrease() = 2.0;
|
||||||
|
|||||||
@@ -470,7 +470,7 @@ String generatePatternString(const Vector<Part>& partList, const URLPatternStrin
|
|||||||
|
|
||||||
if (!needsGrouping && part.prefix.isEmpty() && previousPart && previousPart->type == PartType::FixedText && !previousPart->value.isEmpty()) {
|
if (!needsGrouping && part.prefix.isEmpty() && previousPart && previousPart->type == PartType::FixedText && !previousPart->value.isEmpty()) {
|
||||||
if (options.prefixCodepoint.length() == 1
|
if (options.prefixCodepoint.length() == 1
|
||||||
&& options.prefixCodepoint.startsWith(*StringView(previousPart->value).codePoints().codePointAt(previousPart->value.length() - 1)))
|
&& options.prefixCodepoint.startsWith(static_cast<char16_t>(*StringView(previousPart->value).codePoints().codePointAt(previousPart->value.length() - 1))))
|
||||||
needsGrouping = true;
|
needsGrouping = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -541,7 +541,7 @@ String escapePatternString(StringView input)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// https://urlpattern.spec.whatwg.org/#is-a-valid-name-code-point
|
// 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)
|
if (first == URLPatternUtilities::IsFirst::Yes)
|
||||||
return u_hasBinaryProperty(codepoint, UCHAR_ID_START) || codepoint == '_' || codepoint == '$';
|
return u_hasBinaryProperty(codepoint, UCHAR_ID_START) || codepoint == '_' || codepoint == '$';
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ ASCIILiteral convertModifierToString(Modifier);
|
|||||||
std::pair<String, Vector<String>> generateRegexAndNameList(const Vector<Part>& partList, const URLPatternStringOptions&);
|
std::pair<String, Vector<String>> generateRegexAndNameList(const Vector<Part>& partList, const URLPatternStringOptions&);
|
||||||
String generatePatternString(const Vector<Part>& partList, const URLPatternStringOptions&);
|
String generatePatternString(const Vector<Part>& partList, const URLPatternStringOptions&);
|
||||||
String escapePatternString(StringView input);
|
String escapePatternString(StringView input);
|
||||||
bool isValidNameCodepoint(char16_t codepoint, URLPatternUtilities::IsFirst);
|
bool isValidNameCodepoint(char32_t codepoint, URLPatternUtilities::IsFirst);
|
||||||
|
|
||||||
} // namespace URLPatternUtilities
|
} // namespace URLPatternUtilities
|
||||||
} // namespace WebCore
|
} // namespace WebCore
|
||||||
|
|||||||
@@ -249,32 +249,9 @@ extern "C" __attribute__((used)) char __libc_single_threaded = 0;
|
|||||||
#endif
|
#endif
|
||||||
#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
|
// 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_list list;
|
||||||
va_start(list, format);
|
va_start(list, format);
|
||||||
|
|||||||
@@ -82,8 +82,9 @@ JSC_DEFINE_HOST_FUNCTION(functionStartRemoteDebugger,
|
|||||||
if (hostValue.isString()) {
|
if (hostValue.isString()) {
|
||||||
|
|
||||||
auto str = hostValue.toWTFString(globalObject);
|
auto str = hostValue.toWTFString(globalObject);
|
||||||
|
auto cstr = toCString(str);
|
||||||
if (!str.isEmpty())
|
if (!str.isEmpty())
|
||||||
host = toCString(str).span().data();
|
host = cstr.span().data();
|
||||||
} else if (!hostValue.isUndefined()) {
|
} else if (!hostValue.isUndefined()) {
|
||||||
throwVMError(globalObject, scope,
|
throwVMError(globalObject, scope,
|
||||||
createTypeError(globalObject, "host must be a string"_s));
|
createTypeError(globalObject, "host must be a string"_s));
|
||||||
|
|||||||
@@ -1700,8 +1700,8 @@ pub fn dumpStackTrace(trace: std.builtin.StackTrace, limits: WriteStackTraceLimi
|
|||||||
|
|
||||||
const programs: []const [:0]const u8 = switch (bun.Environment.os) {
|
const programs: []const [:0]const u8 = switch (bun.Environment.os) {
|
||||||
.windows => &.{"pdb-addr2line"},
|
.windows => &.{"pdb-addr2line"},
|
||||||
// if `llvm-symbolizer` doesn't work, also try `llvm-symbolizer-19`
|
// if `llvm-symbolizer` doesn't work, also try `llvm-symbolizer-21`
|
||||||
else => &.{ "llvm-symbolizer", "llvm-symbolizer-19" },
|
else => &.{ "llvm-symbolizer", "llvm-symbolizer-21" },
|
||||||
};
|
};
|
||||||
for (programs) |program| {
|
for (programs) |program| {
|
||||||
var arena = bun.ArenaAllocator.init(bun.default_allocator);
|
var arena = bun.ArenaAllocator.init(bun.default_allocator);
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ export async function build(dir: string) {
|
|||||||
// so we make it use clang instead
|
// so we make it use clang instead
|
||||||
...(process.platform == "linux" && isCI
|
...(process.platform == "linux" && isCI
|
||||||
? {
|
? {
|
||||||
CC: !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-19/bin/clang++" : "/usr/lib/llvm19/bin/clang++",
|
CXX: !isMusl ? "/usr/lib/llvm-21/bin/clang++" : "/usr/lib/llvm21/bin/clang++",
|
||||||
}
|
}
|
||||||
: {}),
|
: {}),
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user