Implement Global::finalizeGC to prevent memory leak #2890
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: ES-Actions | |
| on: | |
| push: | |
| branches: [ master ] | |
| pull_request: | |
| branches: [ master ] | |
| workflow_dispatch: | |
| env: | |
| RUNNER: tools/run-tests.py | |
| jobs: | |
| check-tidy: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Install Packages | |
| run: | | |
| wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - | |
| sudo add-apt-repository "deb [trusted=yes] http://apt.llvm.org/noble/ llvm-toolchain-noble-20 main" | |
| sudo apt-get update | |
| sudo apt-get install -y clang-format-20 | |
| - name: Test | |
| run: tools/check_tidy.py | |
| build-on-macos: | |
| runs-on: macos-15 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Install Packages | |
| run: | | |
| brew update | |
| brew install ninja icu4c | |
| - name: Build x64 | |
| env: | |
| BUILD_OPTIONS: -DESCARGOT_WASM=ON -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -DESCARGOT_SHADOWREALM=ON -DESCARGOT_OUTPUT=shell -GNinja | |
| run: | | |
| # check cpu | |
| sysctl -a | grep machdep.cpu | |
| # add icu path to pkg_config_path | |
| export PKG_CONFIG_PATH="$(brew --prefix icu4c)/lib/pkgconfig" | |
| echo $PKG_CONFIG_PATH | |
| cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.10 -H. -Bout/debug/ -DESCARGOT_MODE=debug $BUILD_OPTIONS | |
| ninja -Cout/debug/ | |
| $RUNNER --engine="./out/debug/escargot" new-es | |
| cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.10 -H. -Bout/release/ -DESCARGOT_MODE=release $BUILD_OPTIONS | |
| ninja -Cout/release/ | |
| cp test/octane/*.js . | |
| ./out/release/escargot run.js | |
| build-on-macos-arm64: | |
| runs-on: macos-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Install Packages | |
| run: | | |
| brew update | |
| brew install ninja icu4c | |
| - name: Build arm64 | |
| env: | |
| BUILD_OPTIONS: -DESCARGOT_WASM=ON -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -DESCARGOT_SHADOWREALM=ON -DESCARGOT_OUTPUT=shell -GNinja | |
| run: | | |
| # check cpu | |
| sysctl -a | grep machdep.cpu | |
| # add icu path to pkg_config_path | |
| export PKG_CONFIG_PATH="$(brew --prefix icu4c)/lib/pkgconfig" | |
| echo $PKG_CONFIG_PATH | |
| cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.10 -H. -Bout/debug/ -DESCARGOT_MODE=debug $BUILD_OPTIONS | |
| ninja -Cout/debug/ | |
| $RUNNER --engine="./out/debug/escargot" new-es | |
| cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.10 -H. -Bout/release/ -DESCARGOT_MODE=release $BUILD_OPTIONS | |
| ninja -Cout/release/ | |
| cp test/octane/*.js . | |
| ./out/release/escargot run.js | |
| build-test-on-android: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| arch: [x86, x86_64] | |
| api: [28] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Enable KVM | |
| run: | | |
| echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules | |
| sudo udevadm control --reload-rules | |
| sudo udevadm trigger --name-match=kvm | |
| - name: Set up JDK | |
| uses: actions/[email protected] | |
| with: | |
| distribution: "zulu" | |
| java-version: 17 | |
| - name: Gradle cache | |
| uses: gradle/actions/setup-gradle@v3 | |
| - name: Create AVD and run tests | |
| uses: reactivecircus/android-emulator-runner@v2 | |
| with: | |
| api-level: ${{ matrix.api }} | |
| arch: ${{ matrix.arch }} | |
| force-avd-creation: false | |
| emulator-options: -no-window -gpu swiftshader_indirect -camera-back none -no-snapshot-save -gpu swiftshader_indirect -noaudio -no-boot-anim | |
| disable-animations: true | |
| script: cd build/android/;./gradlew connectedDebugAndroidTest -DESCARGOT_BUILD_TLS_ACCESS_BY_PTHREAD_KEY=ON | |
| build-by-clang: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Install Packages | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y ninja-build gcc-multilib g++-multilib libicu-dev | |
| - name: Build x86 | |
| env: | |
| BUILD_OPTIONS: -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=x86 -DESCARGOT_MODE=debug -DESCARGOT_WASM=ON -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TLS_ACCESS_BY_ADDRESS=ON -DESCARGOT_TEST=ON -DESCARGOT_SHADOWREALM=ON -DESCARGOT_OUTPUT=shell -GNinja | |
| run: | | |
| CC=clang CXX=clang++ cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/clang/x86 $BUILD_OPTIONS | |
| ninja -Cout/clang/x86 | |
| - name: Build x64 | |
| env: | |
| BUILD_OPTIONS: -DESCARGOT_MODE=debug -DESCARGOT_WASM=ON -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TLS_ACCESS_BY_ADDRESS=ON -DESCARGOT_TEST=ON -DESCARGOT_SHADOWREALM=ON -DESCARGOT_OUTPUT=shell -GNinja | |
| run: | | |
| CC=clang CXX=clang++ cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/clang/x64 $BUILD_OPTIONS | |
| ninja -Cout/clang/x64 | |
| $RUNNER --engine="./out/clang/x64/escargot" new-es | |
| test-on-windows-clang-cl: | |
| runs-on: windows-2022 | |
| strategy: | |
| matrix: | |
| # clang-cl with cannot generate c++ exception code well | |
| # if clang-cl bug fixed, we can add x64 | |
| # clang version and STL version are sometimes not matched in github actions, | |
| # so I add -D_ALLOW_COMPILER_AND_STL_VERSION_MISMATCH | |
| arch: [ | |
| {cpu: "x86", flag: "-m32 -D_ALLOW_COMPILER_AND_STL_VERSION_MISMATCH"} | |
| #, {cpu: "x64", flag: "-D_ALLOW_COMPILER_AND_STL_VERSION_MISMATCH"} | |
| ] | |
| steps: | |
| - name: Set git cllf config | |
| run: | | |
| git config --global core.autocrlf input | |
| git config --global core.eol lf | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - uses: szenius/[email protected] | |
| with: | |
| timezoneWindows: "Pacific Standard Time" | |
| - uses: lukka/get-cmake@latest | |
| with: | |
| cmakeVersion: "~3.25.0" | |
| - uses: GuillaumeFalourd/setup-windows10-sdk-action@v2 | |
| with: | |
| sdk-version: 26100 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Download and Install Visual C++ Redistributable | |
| shell: powershell | |
| run: | | |
| $vcRedistUrl64 = "https://aka.ms/vs/17/release/vc_redist.x64.exe" # Or the appropriate URL for your target architecture/version | |
| $vcRedistPath64 = "$env:TEMP\vc_redist.x64.exe" | |
| $vcRedistUrl32 = "https://aka.ms/vs/17/release/vc_redist.x86.exe" # Or the appropriate URL for your target architecture/version | |
| $vcRedistPath32 = "$env:TEMP\vc_redist.x86.exe" | |
| Write-Host "Downloading Visual C++ Redistributable from $vcRedistUrl64" | |
| Invoke-WebRequest -Uri $vcRedistUrl64 -OutFile $vcRedistPath64 | |
| Write-Host "Downloading Visual C++ Redistributable from $vcRedistUrl32" | |
| Invoke-WebRequest -Uri $vcRedistUrl32 -OutFile $vcRedistPath32 | |
| Write-Host "Installing Visual C++ Redistributable silently" | |
| Start-Process -FilePath $vcRedistPath64 -ArgumentList "/install /quiet /norestart" -Wait | |
| Start-Process -FilePath $vcRedistPath32 -ArgumentList "/install /quiet /norestart" -Wait | |
| Write-Host "Visual C++ Redistributable installation complete." | |
| - uses: ilammy/[email protected] | |
| with: | |
| arch: ${{ matrix.arch.cpu }} | |
| sdk: "10.0.26100.0" | |
| - uses: egor-tensin/setup-clang@v1 | |
| with: | |
| version: 19.1.7 | |
| platform: ${{ matrix.arch.cpu }} | |
| - name: Build ${{ matrix.arch.cpu }} Release | |
| run: | | |
| CMake -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_VERSION:STRING="10.0" -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.arch.cpu }} -Bout/ -DESCARGOT_OUTPUT=shell -DESCARGOT_LIBICU_SUPPORT=ON -DESCARGOT_THREADING=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -DESCARGOT_SHADOWREALM=ON -G Ninja -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_BUILD_TYPE=release -DCMAKE_C_FLAGS="${{ matrix.arch.flag }}" -DCMAKE_CXX_FLAGS="${{ matrix.arch.flag }}" | |
| CMake --build out/ --config Release | |
| - name: Run octane | |
| run: | | |
| copy test\octane\*.js | |
| dir | |
| .\out\escargot.exe run.js | |
| # clang-cl with cannot generate c++ exception code well. if clang-cl bug fixed, we can enable test262 | |
| # - name: Run test262 | |
| # run: | | |
| # set GC_FREE_SPACE_DIVISOR=1 | |
| # pip install chardet | |
| # python tools\run-tests.py --engine=%cd%\out\escargot.exe test262 --test262-extra-arg="--skip Temporal --skip intl402 --skip Atomics" | |
| # shell: cmd | |
| - if: ${{ failure() }} | |
| uses: mxschmitt/action-tmate@v3 | |
| timeout-minutes: 15 | |
| test-on-windows-x86-x64: | |
| runs-on: windows-2022 | |
| strategy: | |
| matrix: | |
| arch: [x86, x64] | |
| steps: | |
| - name: Set git cllf config | |
| run: | | |
| git config --global core.autocrlf input | |
| git config --global core.eol lf | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - uses: szenius/[email protected] | |
| with: | |
| timezoneWindows: "Pacific Standard Time" | |
| - uses: lukka/get-cmake@latest | |
| with: | |
| cmakeVersion: "~3.25.0" # <--= optional, use most recent 3.25.x version | |
| - uses: GuillaumeFalourd/setup-windows10-sdk-action@v2 | |
| with: | |
| sdk-version: 26100 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Download and Install Visual C++ Redistributable | |
| shell: powershell | |
| run: | | |
| $vcRedistUrl64 = "https://aka.ms/vs/17/release/vc_redist.x64.exe" # Or the appropriate URL for your target architecture/version | |
| $vcRedistPath64 = "$env:TEMP\vc_redist.x64.exe" | |
| $vcRedistUrl32 = "https://aka.ms/vs/17/release/vc_redist.x86.exe" # Or the appropriate URL for your target architecture/version | |
| $vcRedistPath32 = "$env:TEMP\vc_redist.x86.exe" | |
| Write-Host "Downloading Visual C++ Redistributable from $vcRedistUrl64" | |
| Invoke-WebRequest -Uri $vcRedistUrl64 -OutFile $vcRedistPath64 | |
| Write-Host "Downloading Visual C++ Redistributable from $vcRedistUrl32" | |
| Invoke-WebRequest -Uri $vcRedistUrl32 -OutFile $vcRedistPath32 | |
| Write-Host "Installing Visual C++ Redistributable silently" | |
| Start-Process -FilePath $vcRedistPath64 -ArgumentList "/install /quiet /norestart" -Wait | |
| Start-Process -FilePath $vcRedistPath32 -ArgumentList "/install /quiet /norestart" -Wait | |
| Write-Host "Visual C++ Redistributable installation complete." | |
| - uses: ilammy/[email protected] | |
| with: | |
| arch: ${{ matrix.arch }} | |
| sdk: "10.0.26100.0" | |
| - name: Build ${{ matrix.arch }} Release | |
| run: | | |
| CMake -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_VERSION:STRING="10.0" -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.arch }} -DESCARGOT_ARCH=${{ matrix.arch }} -Bout/ -DESCARGOT_OUTPUT=shell -DESCARGOT_LIBICU_SUPPORT=ON -DESCARGOT_WASM=ON -DESCARGOT_THREADING=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -DESCARGOT_SHADOWREALM=ON -G Ninja -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl -DCMAKE_BUILD_TYPE=release | |
| CMake --build out/ --config Release | |
| # windows internal ICU doesn't support Temporal and intl402 well | |
| # github action windows runner only have 2 CPUs. that's why I disable Atomics(timeout occured with some tests) | |
| - name: Run test262 | |
| run: | | |
| set GC_FREE_SPACE_DIVISOR=1 | |
| pip install chardet | |
| python tools\run-tests.py --engine=%cd%\out\escargot.exe test262 --test262-extra-arg="--skip Temporal --skip intl402 --skip Atomics --skip sm" | |
| shell: cmd | |
| - name: Run octane | |
| run: | | |
| copy test\octane\*.js | |
| dir | |
| .\out\escargot.exe run.js | |
| - if: ${{ failure() }} | |
| uses: mxschmitt/action-tmate@v3 | |
| timeout-minutes: 15 | |
| build-on-windows-x64-uwp-x86-shared: | |
| runs-on: windows-2022 | |
| steps: | |
| - name: Set git cllf config | |
| run: | | |
| git config --global core.autocrlf input | |
| git config --global core.eol lf | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - uses: lukka/get-cmake@latest | |
| with: | |
| cmakeVersion: "~3.25.0" # <--= optional, use most recent 3.25.x version | |
| - uses: GuillaumeFalourd/setup-windows10-sdk-action@v2 | |
| with: | |
| sdk-version: 26100 | |
| - uses: ilammy/[email protected] | |
| with: | |
| arch: x64 | |
| sdk: "10.0.26100.0" | |
| uwp: true | |
| - name: Build x64 UWP Release | |
| run: | | |
| CMake -G "Visual Studio 17 2022" -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION:STRING="10.0" -DCMAKE_SYSTEM_PROCESSOR=x64 -Bout/win64_release_uwp/ -DESCARGOT_OUTPUT=shell -DESCARGOT_LIBICU_SUPPORT=ON -DESCARGOT_TEST=ON -DESCARGOT_SHADOWREALM=ON | |
| CMake --build out\win64_release_uwp --config Release | |
| shell: cmd | |
| - uses: ilammy/[email protected] | |
| with: | |
| arch: x86 | |
| sdk: "10.0.26100.0" | |
| - name: Build x86 DLL Release | |
| run: | | |
| CMake -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_VERSION:STRING="10.0" -DCMAKE_SYSTEM_PROCESSOR=x86 -Bout/win32_release_shared/ -DESCARGOT_OUTPUT=shared_lib -DESCARGOT_LIBICU_SUPPORT=ON -DESCARGOT_THREADING=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -DESCARGOT_SHADOWREALM=ON -G Ninja -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl -DCMAKE_BUILD_TYPE=release | |
| CMake --build out/win32_release_shared --config Release | |
| shell: cmd | |
| - if: ${{ failure() }} | |
| uses: mxschmitt/action-tmate@v3 | |
| timeout-minutes: 15 | |
| build-test-on-x86-release: | |
| runs-on: ubuntu-24.04 | |
| strategy: | |
| matrix: | |
| tc: ['new-es octane', 'v8 chakracore spidermonkey', 'jetstream-only-simple-parallel-1', 'jetstream-only-simple-parallel-2 jsc-stress', 'jetstream-only-simple-parallel-3 jetstream-only-cdjs'] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Install Packages | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y ninja-build gcc-multilib g++-multilib make g++ pkg-config automake libtool git build-essential checkinstall libncurses-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev | |
| - name: Build python2 | |
| run: | | |
| mkdir $GITHUB_WORKSPACE/python2-build/ | |
| cd $GITHUB_WORKSPACE/python2-build/ | |
| wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz | |
| tar xzf Python-2.7.18.tgz | |
| cd Python-2.7.18 | |
| ./configure --prefix=/usr/local/python2.7 | |
| make -j8 | |
| sudo make install | |
| sudo update-alternatives --install /usr/bin/python python /usr/local/python2.7/bin/python2.7 1 | |
| - name: Build ICU | |
| run: | | |
| git clone --depth 1 --single-branch -b release-78.1 https://github.com/unicode-org/icu.git $GITHUB_WORKSPACE/icu-build/ | |
| cd $GITHUB_WORKSPACE/icu-build/icu4c/source | |
| LDFLAGS="-m32 -Wl,-rpath=$GITHUB_WORKSPACE/icu32/lib/" CFLAGS="-m32" CXXFLAGS="-m32" ./runConfigureICU Linux/gcc --prefix="$GITHUB_WORKSPACE/icu32/" | |
| make -j8 | |
| make install | |
| ls $GITHUB_WORKSPACE/icu32/lib/ | |
| - name: Build x86 | |
| env: | |
| BUILD_OPTIONS: -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=x86 -DESCARGOT_THREADING=ON -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TLS_ACCESS_BY_ADDRESS=ON -DESCARGOT_TEST=ON -DESCARGOT_SHADOWREALM=ON -DESCARGOT_OUTPUT=shell -GNinja | |
| run: | | |
| export CXXFLAGS="-I$GITHUB_WORKSPACE/icu32/include" | |
| export LDFLAGS="-L$GITHUB_WORKSPACE/icu32/lib/ -Wl,-rpath=$GITHUB_WORKSPACE/icu32/lib/" | |
| export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/icu32/lib/pkgconfig | |
| cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/release/x86 $BUILD_OPTIONS | |
| ninja -Cout/release/x86 | |
| - name: Run release-x86 test | |
| env: | |
| GC_FREE_SPACE_DIVISOR: 1 | |
| run: LD_LIBRARY_PATH=$GITHUB_WORKSPACE/icu32/lib $RUNNER --arch=x86 --engine="$GITHUB_WORKSPACE/out/release/x86/escargot" ${{ matrix.tc }} | |
| - if: ${{ failure() }} | |
| uses: mxschmitt/action-tmate@v3 | |
| timeout-minutes: 15 | |
| build-test-on-x64-release: | |
| runs-on: ubuntu-24.04 | |
| strategy: | |
| matrix: | |
| tc: ['octane v8 web-tooling-benchmark', 'chakracore spidermonkey new-es'] | |
| build_opt: ['', '-DESCARGOT_THREADING=ON -DESCARGOT_TCO=ON', '-DESCARGOT_SMALL_CONFIG=ON -DESCARGOT_USE_CUSTOM_LOGGING=ON'] | |
| exclude: | |
| # exclude octane, v8, web-tooling-benchmark due to low performance incurred by SMALL_CONFIG | |
| - tc: 'octane v8 web-tooling-benchmark' | |
| build_opt: '-DESCARGOT_SMALL_CONFIG=ON -DESCARGOT_USE_CUSTOM_LOGGING=ON' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Install Packages | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y ninja-build g++ pkg-config automake libtool git build-essential checkinstall libncurses-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev | |
| - name: Build ICU(64) | |
| run: | | |
| git clone --depth 1 --single-branch -b release-78.1 https://github.com/unicode-org/icu.git $GITHUB_WORKSPACE/icu64-build/ | |
| cd $GITHUB_WORKSPACE/icu64-build/icu4c/source | |
| LDFLAGS="-Wl,-rpath=$GITHUB_WORKSPACE/icu64/lib/" ./runConfigureICU Linux/gcc --prefix="$GITHUB_WORKSPACE/icu64/" | |
| make -j8 | |
| make install | |
| - name: Build python2 | |
| run: | | |
| mkdir $GITHUB_WORKSPACE/python2-build/ | |
| cd $GITHUB_WORKSPACE/python2-build/ | |
| wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz | |
| tar xzf Python-2.7.18.tgz | |
| cd Python-2.7.18 | |
| ./configure --prefix=/usr/local/python2.7 | |
| make -j8 | |
| sudo make install | |
| sudo update-alternatives --install /usr/bin/python python /usr/local/python2.7/bin/python2.7 1 | |
| - name: Build x64 | |
| env: | |
| BUILD_OPTIONS: -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TLS_ACCESS_BY_ADDRESS=ON -DESCARGOT_TEST=ON -DESCARGOT_SHADOWREALM=ON -DESCARGOT_OUTPUT=shell -GNinja | |
| run: | | |
| export CXXFLAGS="-I$GITHUB_WORKSPACE/icu64/include" | |
| export LDFLAGS="-L$GITHUB_WORKSPACE/icu64/lib -Wl,-rpath=$GITHUB_WORKSPACE/icu64/lib" | |
| export PKG_CONFIG_PATH=$GITHUB_WORKSPACE/icu64/lib/pkgconfig | |
| cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/release/x64 $BUILD_OPTIONS ${{ matrix.build_opt }} | |
| ninja -Cout/release/x64 | |
| - name: Run release-x64 test | |
| env: | |
| GC_FREE_SPACE_DIVISOR: 1 | |
| run: | | |
| export LD_LIBRARY_PATH=$GITHUB_WORKSPACE/icu64/lib | |
| # set locale | |
| sudo locale-gen en_US.UTF-8 | |
| export LANG=en_US.UTF-8 | |
| locale | |
| $RUNNER --arch=x86_64 --engine="$GITHUB_WORKSPACE/out/release/x64/escargot" ${{ matrix.tc }} | |
| - if: ${{ failure() }} | |
| uses: mxschmitt/action-tmate@v3 | |
| timeout-minutes: 15 | |
| build-test-on-x86-x64-debug: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Install Packages | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y ninja-build gcc-multilib g++-multilib make g++ pkg-config automake libtool git build-essential checkinstall libncurses-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev | |
| - name: Build ICU(32) | |
| run: | | |
| git clone --depth 1 --single-branch -b release-78.1 https://github.com/unicode-org/icu.git $GITHUB_WORKSPACE/icu32-build/ | |
| cd $GITHUB_WORKSPACE/icu32-build/icu4c/source | |
| LDFLAGS="-m32 -Wl,-rpath=$GITHUB_WORKSPACE/icu32/lib/" CFLAGS="-m32" CXXFLAGS="-m32" ./runConfigureICU Linux/gcc --prefix="$GITHUB_WORKSPACE/icu32/" | |
| make -j8 | |
| make install | |
| - name: Build ICU(64) | |
| run: | | |
| git clone --depth 1 --single-branch -b release-78.1 https://github.com/unicode-org/icu.git $GITHUB_WORKSPACE/icu64-build/ | |
| cd $GITHUB_WORKSPACE/icu64-build/icu4c/source | |
| LDFLAGS="-Wl,-rpath=$GITHUB_WORKSPACE/icu64/lib/" ./runConfigureICU Linux/gcc --prefix="$GITHUB_WORKSPACE/icu64/" | |
| make -j8 | |
| make install | |
| - name: Build x86/x64 | |
| env: | |
| BUILD_OPTIONS_X86: -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=x86 -DESCARGOT_MODE=debug -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TLS_ACCESS_BY_ADDRESS=ON -DESCARGOT_TEST=ON -DESCARGOT_SHADOWREALM=ON -DESCARGOT_OUTPUT=shell -GNinja | |
| BUILD_OPTIONS_X64: -DESCARGOT_MODE=debug -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TLS_ACCESS_BY_ADDRESS=ON -DESCARGOT_TEST=ON -DESCARGOT_SHADOWREALM=ON -DESCARGOT_OUTPUT=shell -GNinja | |
| run: | | |
| cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/debug/x86 $BUILD_OPTIONS_X86 | |
| cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/debug/x64 $BUILD_OPTIONS_X64 | |
| ninja -Cout/debug/x86 | |
| ninja -Cout/debug/x64 | |
| - name: Run debug-mode test | |
| run: | | |
| export LD_LIBRARY_PATH=$GITHUB_WORKSPACE/icu32/lib | |
| $RUNNER --arch=x86 --engine="$GITHUB_WORKSPACE/out/debug/x86/escargot" modifiedVendorTest regression-tests new-es intl sunspider-js | |
| export LD_LIBRARY_PATH=$GITHUB_WORKSPACE/icu64/lib | |
| $RUNNER --arch=x86_64 --engine="$GITHUB_WORKSPACE/out/debug/x64/escargot" modifiedVendorTest regression-tests new-es intl sunspider-js | |
| build-test-on-self-hosted-linux: | |
| runs-on: [self-hosted, linux, x64, test] | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Build | |
| env: | |
| BUILD_OPTIONS: -DESCARGOT_THREADING=ON -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TLS_ACCESS_BY_ADDRESS=ON -DESCARGOT_TEST=ON -DESCARGOT_SHADOWREALM=ON -DESCARGOT_OUTPUT=shell -GNinja | |
| run: | | |
| LDFLAGS=" -L/usr/icu78-32/lib/ -Wl,-rpath=/usr/icu78-32/lib/" PKG_CONFIG_PATH="/usr/icu78-32/lib/pkgconfig/" cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H./ -Bbuild/out_linux -DESCARGOT_ARCH=x86 -DESCARGOT_MODE=debug -DESCARGOT_TCO_DEBUG=ON $BUILD_OPTIONS | |
| LDFLAGS=" -L/usr/icu78-32/lib/ -Wl,-rpath=/usr/icu78-32/lib/" PKG_CONFIG_PATH="/usr/icu78-32/lib/pkgconfig/" cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H./ -Bbuild/out_linux_release -DESCARGOT_ARCH=x86 $BUILD_OPTIONS | |
| gcc -shared -m32 -fPIC -o backtrace-hooking-32.so tools/test/test262/backtrace-hooking.c | |
| LDFLAGS=" -L/usr/icu78-64/lib/ -Wl,-rpath=/usr/icu78-64/lib/" PKG_CONFIG_PATH="/usr/icu78-64/lib/pkgconfig/" cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H./ -Bbuild/out_linux64 -DESCARGOT_ARCH=x64 -DESCARGOT_MODE=debug -DESCARGOT_TCO_DEBUG=ON $BUILD_OPTIONS | |
| LDFLAGS=" -L/usr/icu78-64/lib/ -Wl,-rpath=/usr/icu78-64/lib/" PKG_CONFIG_PATH="/usr/icu78-64/lib/pkgconfig/" cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H./ -Bbuild/out_linux64_release -DESCARGOT_ARCH=x64 -DESCARGOT_MODE=release $BUILD_OPTIONS | |
| cmake --build build/out_linux/ | |
| cmake --build build/out_linux64/ | |
| cmake --build build/out_linux_release/ | |
| cmake --build build/out_linux64_release/ | |
| - name: Test | |
| run: | | |
| LD_LIBRARY_PATH=/usr/icu78-32/lib/ GC_FREE_SPACE_DIVISOR=1 $RUNNER --arch=x86 --engine="${{ github.workspace }}/build/out_linux_release/escargot" test262 | |
| LD_LIBRARY_PATH=/usr/icu78-32/lib/ GC_FREE_SPACE_DIVISOR=1 ESCARGOT_LD_PRELOAD=${{ github.workspace }}/backtrace-hooking-32.so $RUNNER --arch=x86 --engine="${{ github.workspace }}/build/out_linux/escargot" test262 | |
| LD_LIBRARY_PATH=/usr/icu78-64/lib/ GC_FREE_SPACE_DIVISOR=1 $RUNNER --arch=x86_64 --engine="${{ github.workspace }}/build/out_linux64_release/escargot" test262 | |
| LD_LIBRARY_PATH=/usr/icu78-64/lib/ python tools/kangax/run-kangax.py --engine="${{ github.workspace }}/build/out_linux64/escargot" | |
| build-test-on-self-hosted-arm-linux: | |
| runs-on: [self-hosted, linux, arm, test] | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Build | |
| run: | | |
| cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H./ -Bout -DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11 -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=arm32 -DESCARGOT_MODE=release -DESCARGOT_THREADING=ON -DESCARGOT_TEMPORAL=OFF -DESCARGOT_TCO=ON -DESCARGOT_TLS_ACCESS_BY_ADDRESS=ON -DESCARGOT_TEST=ON -DESCARGOT_SHADOWREALM=ON -DESCARGOT_OUTPUT=shell -GNinja | |
| cmake --build ./out/ | |
| - name: Test | |
| run: | | |
| GC_FREE_SPACE_DIVISOR=1 $RUNNER --engine="${{ github.workspace }}/out/escargot" --test262-extra-arg="--skip intl402 --skip sm --skip Temporal" new-es v8 spidermonkey chakracore test262 | |
| build-test-on-self-hosted-arm64-linux: | |
| runs-on: [self-hosted, linux, arm64, test] | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Build | |
| run: | | |
| LDFLAGS=" -L/usr/icu78-64/lib/ -Wl,-rpath=/usr/icu78-64/lib/" PKG_CONFIG_PATH="/usr/icu78-64/lib/pkgconfig/" cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H./ -Bout -DESCARGOT_MODE=release -DESCARGOT_THREADING=ON -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -DESCARGOT_SHADOWREALM=ON -DESCARGOT_OUTPUT=shell -GNinja | |
| cmake --build ./out/ | |
| - name: Test | |
| run: | | |
| export LD_LIBRARY_PATH=/usr/icu78-64/lib/ | |
| GC_FREE_SPACE_DIVISOR=1 $RUNNER --engine="${{ github.workspace }}/out/escargot" --test262-extra-arg="--skip intl402 --skip sm" test262 chakracore spidermonkey v8 new-es | |
| build-test-on-riscv64-release: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Build in riscv64 container | |
| uses: uraimo/[email protected] | |
| with: | |
| arch: riscv64 | |
| distro: ubuntu22.04 | |
| # Install deps into the container. With the token, the container will be cached | |
| # The image is cached publically like a package | |
| githubToken: ${{ github.token }} | |
| install: | | |
| apt-get update | |
| apt-get install -y cmake build-essential ninja-build pkg-config python3 git libicu-dev | |
| run: | | |
| cmake -H. -Bout/riscv64 -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -DESCARGOT_SHADOWREALM=ON -DESCARGOT_OUTPUT=shell -GNinja | |
| ninja -Cout/riscv64 | |
| python3 ./tools/run-tests.py --engine="./out/riscv64/escargot" regression-tests new-es intl sunspider-js | |
| build-test-debugger: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Install Packages | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y ninja-build | |
| - name: Build | |
| env: | |
| BUILD_OPTIONS: -DESCARGOT_MODE=debug -DESCARGOT_DEBUGGER=1 -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -DESCARGOT_SHADOWREALM=ON -DESCARGOT_OUTPUT=shell -GNinja | |
| run: | | |
| cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/debugger $BUILD_OPTIONS | |
| ninja -Cout/debugger | |
| - name: Debugger Test | |
| run: | | |
| $RUNNER --arch=x86_64 --engine="$GITHUB_WORKSPACE/out/debugger/escargot" debugger-server-source | |
| $RUNNER --arch=x86_64 --engine="$GITHUB_WORKSPACE/out/debugger/escargot" debugger-client-source | |
| build-test-api: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Install Packages | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y ninja-build gcc-multilib g++-multilib | |
| - name: Build x86/x64 | |
| env: | |
| BUILD_OPTIONS_X86: -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=x86 -DESCARGOT_MODE=debug -DESCARGOT_THREADING=ON -DESCARGOT_DEBUGGER=1 -DESCARGOT_USE_EXTENDED_API=ON -DESCARGOT_TEST=ON -DESCARGOT_OUTPUT=cctest -GNinja | |
| BUILD_OPTIONS_X64: -DESCARGOT_MODE=debug -DESCARGOT_THREADING=1 -DESCARGOT_DEBUGGER=1 -DESCARGOT_USE_EXTENDED_API=ON -DESCARGOT_TEST=ON -DESCARGOT_OUTPUT=cctest -GNinja | |
| run: | | |
| cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/cctest/x86 $BUILD_OPTIONS_X86 | |
| ninja -Cout/cctest/x86 | |
| cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/cctest/x64 $BUILD_OPTIONS_X64 | |
| ninja -Cout/cctest/x64 | |
| - name: Run Test | |
| run: | | |
| $RUNNER --arch=x86 --engine="$GITHUB_WORKSPACE/out/cctest/x86/cctest" cctest | |
| $RUNNER --arch=x86_64 --engine="$GITHUB_WORKSPACE/out/cctest/x64/cctest" cctest | |
| build-test-codecache: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Install Packages | |
| run: | | |
| # for i386 ICU | |
| sudo dpkg --add-architecture i386 | |
| sudo apt-get update | |
| sudo apt-get install -y ninja-build gcc-multilib g++-multilib | |
| sudo apt-get install -y libicu-dev:i386 # install i386 ICU | |
| - name: Build x86 | |
| env: | |
| BUILD_OPTIONS: -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=x86 -DESCARGOT_MODE=debug -DESCARGOT_CODE_CACHE=ON -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -DESCARGOT_SHADOWREALM=ON -DESCARGOT_OUTPUT=shell -GNinja | |
| run: | | |
| cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/codecache/x86 $BUILD_OPTIONS | |
| ninja -Cout/codecache/x86 | |
| - name: Build x64 | |
| env: | |
| BUILD_OPTIONS: -DESCARGOT_MODE=debug -DESCARGOT_CODE_CACHE=ON -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -DESCARGOT_SHADOWREALM=ON -DESCARGOT_OUTPUT=shell -GNinja | |
| run: | | |
| cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/codecache/x64 $BUILD_OPTIONS | |
| ninja -Cout/codecache/x64 | |
| - name: Build x64 Release Mode | |
| env: | |
| BUILD_OPTIONS: -DESCARGOT_MODE=release -DESCARGOT_CODE_CACHE=ON -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -DESCARGOT_SHADOWREALM=ON -DESCARGOT_OUTPUT=shell -GNinja | |
| run: | | |
| cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/codecache/release/x64 $BUILD_OPTIONS | |
| ninja -Cout/codecache/release/x64 | |
| - name: Run x86 test | |
| run: | | |
| $RUNNER --arch=x86 --engine="$GITHUB_WORKSPACE/out/codecache/x86/escargot" sunspider-js | |
| $RUNNER --arch=x86 --engine="$GITHUB_WORKSPACE/out/codecache/x86/escargot" sunspider-js | |
| $RUNNER --arch=x86 --engine="$GITHUB_WORKSPACE/out/codecache/x86/escargot" new-es | |
| $RUNNER --arch=x86 --engine="$GITHUB_WORKSPACE/out/codecache/x86/escargot" new-es | |
| $RUNNER --arch=x86 --engine="$GITHUB_WORKSPACE/out/codecache/x86/escargot" octane-loading | |
| $RUNNER --arch=x86 --engine="$GITHUB_WORKSPACE/out/codecache/x86/escargot" octane-loading | |
| rm -rf $HOME/Escargot-cache/ | |
| - name: Run x64 test | |
| run: | | |
| $RUNNER --arch=x86_64 --engine="$GITHUB_WORKSPACE/out/codecache/x64/escargot" sunspider-js | |
| $RUNNER --arch=x86_64 --engine="$GITHUB_WORKSPACE/out/codecache/x64/escargot" sunspider-js | |
| $RUNNER --arch=x86_64 --engine="$GITHUB_WORKSPACE/out/codecache/x64/escargot" new-es | |
| $RUNNER --arch=x86_64 --engine="$GITHUB_WORKSPACE/out/codecache/x64/escargot" new-es | |
| $RUNNER --arch=x86_64 --engine="$GITHUB_WORKSPACE/out/codecache/x64/escargot" octane-loading | |
| $RUNNER --arch=x86_64 --engine="$GITHUB_WORKSPACE/out/codecache/x64/escargot" octane-loading | |
| rm -rf $HOME/Escargot-cache/ | |
| - name: Run x64 release test | |
| run: | | |
| $RUNNER --arch=x86_64 --engine="$GITHUB_WORKSPACE/out/codecache/release/x64/escargot" web-tooling-benchmark | |
| rm -rf $HOME/Escargot-cache/ | |
| - name: Handle error cases | |
| run: | | |
| $RUNNER --arch=x86_64 --engine="$GITHUB_WORKSPACE/out/codecache/x64/escargot" sunspider-js | |
| rm $HOME/Escargot-cache/2728638815_17149 | |
| $RUNNER --arch=x86_64 --engine="$GITHUB_WORKSPACE/out/codecache/x64/escargot" sunspider-js | |
| ls -1q $HOME/Escargot-cache/ | wc -l | |
| $RUNNER --arch=x86_64 --engine="$GITHUB_WORKSPACE/out/codecache/x64/escargot" sunspider-js | |
| rm $HOME/Escargot-cache/cache_list | |
| $RUNNER --arch=x86_64 --engine="$GITHUB_WORKSPACE/out/codecache/x64/escargot" sunspider-js | |
| - if: ${{ failure() }} | |
| uses: mxschmitt/action-tmate@v3 | |
| timeout-minutes: 15 | |
| build-test-wasmjs: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Install Packages | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y ninja-build gcc-multilib g++-multilib make g++ pkg-config automake libtool git build-essential checkinstall libncurses-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev | |
| - name: Build ICU(32) | |
| run: | | |
| git clone --depth 1 --single-branch -b release-78.1 https://github.com/unicode-org/icu.git $GITHUB_WORKSPACE/icu-build/ | |
| cd $GITHUB_WORKSPACE/icu-build/icu4c/source | |
| LDFLAGS="-m32 -Wl,-rpath=$GITHUB_WORKSPACE/icu32/lib/" CFLAGS="-m32" CXXFLAGS="-m32" ./runConfigureICU Linux/gcc --prefix="$GITHUB_WORKSPACE/icu32/" | |
| make -j8 | |
| make install | |
| - name: Build ICU(64) | |
| run: | | |
| git clone --depth 1 --single-branch -b release-78.1 https://github.com/unicode-org/icu.git $GITHUB_WORKSPACE/icu64-build/ | |
| cd $GITHUB_WORKSPACE/icu64-build/icu4c/source | |
| LDFLAGS="-Wl,-rpath=$GITHUB_WORKSPACE/icu64/lib/" ./runConfigureICU Linux/gcc --prefix="$GITHUB_WORKSPACE/icu64/" | |
| make -j8 | |
| make install | |
| - name: Build x86 | |
| env: | |
| BUILD_OPTIONS: -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=x86 -DESCARGOT_MODE=debug -DESCARGOT_WASM=ON -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -DESCARGOT_SHADOWREALM=ON -DESCARGOT_OUTPUT=shell -GNinja | |
| run: | | |
| cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/wasm/x86 $BUILD_OPTIONS | |
| ninja -Cout/wasm/x86 | |
| - name: Build x64 | |
| env: | |
| BUILD_OPTIONS: -DESCARGOT_MODE=debug -DESCARGOT_WASM=ON -DESCARGOT_TEMPORAL=ON -DESCARGOT_TCO=ON -DESCARGOT_TEST=ON -DESCARGOT_SHADOWREALM=ON -DESCARGOT_OUTPUT=shell -GNinja | |
| run: | | |
| cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -H. -Bout/wasm/x64 $BUILD_OPTIONS | |
| ninja -Cout/wasm/x64 | |
| - name: Run x86 test | |
| run: | | |
| export LD_LIBRARY_PATH=$GITHUB_WORKSPACE/icu32/lib | |
| $RUNNER --arch=x86 --engine="$GITHUB_WORKSPACE/out/wasm/x86/escargot" wasm-js | |
| - name: Run x64 test | |
| run: | | |
| export LD_LIBRARY_PATH=$GITHUB_WORKSPACE/icu64/lib | |
| $RUNNER --arch=x86_64 --engine="$GITHUB_WORKSPACE/out/wasm/x64/escargot" wasm-js | |
| - if: ${{ failure() }} | |
| uses: mxschmitt/action-tmate@v3 | |
| timeout-minutes: 60 |