Protect Lua(u) during chunk loading if memory limit is enforced #1237
This file contains 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: CI | |
on: [push, pull_request] | |
jobs: | |
build: | |
name: Build | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
rust: [stable] | |
lua: [lua54, lua53, lua52, lua51, luajit, luau, luau-jit, luau-vector4] | |
include: | |
- os: ubuntu-latest | |
target: x86_64-unknown-linux-gnu | |
- os: macos-latest | |
target: x86_64-apple-darwin | |
- os: windows-latest | |
target: x86_64-pc-windows-msvc | |
steps: | |
- uses: actions/checkout@main | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: ${{ matrix.rust }} | |
target: ${{ matrix.target }} | |
- uses: Swatinem/rust-cache@v2 | |
- name: Build ${{ matrix.lua }} vendored | |
run: | | |
cargo build --features "${{ matrix.lua }},vendored" | |
cargo build --features "${{ matrix.lua }},vendored,async,serialize,macros,anyhow,userdata-wrappers" | |
cargo build --features "${{ matrix.lua }},vendored,async,serialize,macros,anyhow,userdata-wrappers,send" | |
shell: bash | |
- name: Build ${{ matrix.lua }} pkg-config | |
if: ${{ matrix.os == 'ubuntu-latest' }} | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y --no-install-recommends liblua5.4-dev liblua5.3-dev liblua5.2-dev liblua5.1-0-dev libluajit-5.1-dev | |
cargo build --features "${{ matrix.lua }}" | |
build_aarch64_cross_macos: | |
name: Cross-compile to aarch64-apple-darwin | |
runs-on: macos-latest | |
needs: build | |
strategy: | |
matrix: | |
lua: [lua54, lua53, lua52, lua51, luajit] | |
steps: | |
- uses: actions/checkout@main | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: stable | |
target: aarch64-apple-darwin | |
- name: Cross-compile | |
run: cargo build --target aarch64-apple-darwin --features "${{ matrix.lua }},vendored,async,send,serialize,macros,anyhow,userdata-wrappers" | |
build_aarch64_cross_ubuntu: | |
name: Cross-compile to aarch64-unknown-linux-gnu | |
runs-on: ubuntu-latest | |
needs: build | |
strategy: | |
matrix: | |
lua: [lua54, lua53, lua52, lua51, luajit] | |
steps: | |
- uses: actions/checkout@main | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: stable | |
target: aarch64-unknown-linux-gnu | |
- name: Install ARM compiler toolchain | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y --no-install-recommends gcc-aarch64-linux-gnu libc6-dev-arm64-cross | |
shell: bash | |
- name: Cross-compile | |
run: cargo build --target aarch64-unknown-linux-gnu --features "${{ matrix.lua }},vendored,async,send,serialize,macros,anyhow,userdata-wrappers" | |
shell: bash | |
build_armv7_cross_ubuntu: | |
name: Cross-compile to armv7-unknown-linux-gnueabihf | |
runs-on: ubuntu-latest | |
needs: build | |
strategy: | |
matrix: | |
lua: [lua54, lua53, lua52, lua51] | |
steps: | |
- uses: actions/checkout@main | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: stable | |
target: armv7-unknown-linux-gnueabihf | |
- name: Install ARM compiler toolchain | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y --no-install-recommends gcc-arm-linux-gnueabihf libc-dev-armhf-cross | |
shell: bash | |
- name: Cross-compile | |
run: cargo build --target armv7-unknown-linux-gnueabihf --features "${{ matrix.lua }},vendored,async,send,serialize,macros,anyhow,userdata-wrappers" | |
shell: bash | |
test: | |
name: Test | |
runs-on: ${{ matrix.os }} | |
needs: build | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
rust: [stable, nightly] | |
lua: [lua54, lua53, lua52, lua51, luajit, luajit52, luau, luau-jit, luau-vector4] | |
include: | |
- os: ubuntu-latest | |
target: x86_64-unknown-linux-gnu | |
- os: macos-latest | |
target: x86_64-apple-darwin | |
- os: windows-latest | |
target: x86_64-pc-windows-msvc | |
steps: | |
- uses: actions/checkout@main | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: ${{ matrix.rust }} | |
target: ${{ matrix.target }} | |
- uses: Swatinem/rust-cache@v2 | |
- name: Run ${{ matrix.lua }} tests | |
run: | | |
cargo test --features "${{ matrix.lua }},vendored" | |
cargo test --features "${{ matrix.lua }},vendored,async,serialize,macros,anyhow,userdata-wrappers" | |
cargo test --features "${{ matrix.lua }},vendored,async,serialize,macros,anyhow,userdata-wrappers,send" | |
shell: bash | |
- name: Run compile tests (macos lua54) | |
if: ${{ matrix.os == 'macos-latest' && matrix.lua == 'lua54' }} | |
run: | | |
TRYBUILD=overwrite cargo test --features "${{ matrix.lua }},vendored" -- --ignored | |
TRYBUILD=overwrite cargo test --features "${{ matrix.lua }},vendored,async,send,serialize,macros" -- --ignored | |
shell: bash | |
test_with_sanitizer: | |
name: Test with address sanitizer | |
runs-on: ${{ matrix.os }} | |
needs: build | |
strategy: | |
matrix: | |
os: [ubuntu-latest] | |
rust: [nightly] | |
lua: [lua54, lua53, lua52, lua51, luajit, luau, luau-jit, luau-vector4] | |
include: | |
- os: ubuntu-latest | |
target: x86_64-unknown-linux-gnu | |
steps: | |
- uses: actions/checkout@main | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: ${{ matrix.rust }} | |
target: ${{ matrix.target }} | |
- uses: Swatinem/rust-cache@v2 | |
- name: Run ${{ matrix.lua }} tests with address sanitizer | |
run: | | |
cargo test --tests --features "${{ matrix.lua }},vendored,async,serialize,macros,anyhow" --target x86_64-unknown-linux-gnu -- --skip test_too_many_recursions | |
cargo test --tests --features "${{ matrix.lua }},vendored,async,serialize,macros,anyhow,userdata-wrappers,send" --target x86_64-unknown-linux-gnu -- --skip test_too_many_recursions | |
shell: bash | |
env: | |
RUSTFLAGS: -Z sanitizer=address | |
test_with_memory_limit: | |
name: Test with memory limit | |
runs-on: ${{ matrix.os }} | |
needs: build | |
strategy: | |
matrix: | |
os: [ubuntu-latest] | |
rust: [nightly] | |
lua: [lua54, lua53, lua52, lua51, luajit, luau, luau-jit, luau-vector4] | |
include: | |
- os: ubuntu-latest | |
target: x86_64-unknown-linux-gnu | |
steps: | |
- uses: actions/checkout@main | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: ${{ matrix.rust }} | |
target: ${{ matrix.target }} | |
- uses: Swatinem/rust-cache@v2 | |
- name: Run ${{ matrix.lua }} tests with forced memory limit | |
run: | | |
cargo test --tests --features "${{ matrix.lua }},vendored,async,send,serialize,macros,anyhow,userdata-wrappers" | |
shell: bash | |
env: | |
RUSTFLAGS: --cfg=force_memory_limit | |
test_modules: | |
name: Test modules | |
runs-on: ${{ matrix.os }} | |
needs: build | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-latest] | |
rust: [stable] | |
lua: [lua54, lua53, lua52, lua51, luajit, luau] | |
include: | |
- os: ubuntu-latest | |
target: x86_64-unknown-linux-gnu | |
- os: macos-latest | |
target: x86_64-apple-darwin | |
steps: | |
- uses: actions/checkout@main | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: ${{ matrix.rust }} | |
target: ${{ matrix.target }} | |
- uses: Swatinem/rust-cache@v2 | |
- name: Run ${{ matrix.lua }} module tests | |
run: | | |
(cd tests/module && cargo build --release --features "${{ matrix.lua }}") | |
(cd tests/module/loader && cargo test --release --features "${{ matrix.lua }},vendored") | |
shell: bash | |
test_modules_windows: | |
name: Test modules on Windows | |
runs-on: windows-latest | |
needs: build | |
strategy: | |
matrix: | |
lua: [lua54, luajit] | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- uses: msys2/setup-msys2@v2 | |
- uses: actions/checkout@main | |
- name: Install Rust & Lua | |
run: | | |
pacman -S --noconfirm mingw-w64-x86_64-rust mingw-w64-x86_64-lua mingw-w64-x86_64-luajit mingw-w64-x86_64-pkg-config | |
- name: Run ${{ matrix.lua }} module tests | |
run: | | |
(cd tests/module && cargo build --release --features "${{ matrix.lua }}") | |
(cd tests/module/loader && cargo test --release --features "${{ matrix.lua }}") | |
test_wasm32_emscripten: | |
name: Test on wasm32-unknown-emscripten | |
runs-on: ubuntu-latest | |
needs: build | |
strategy: | |
matrix: | |
lua: [lua54, lua53, lua52, lua51, luau] | |
steps: | |
- uses: actions/checkout@main | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: stable | |
target: wasm32-unknown-emscripten | |
- name: Install Emscripten | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y --no-install-recommends emscripten | |
- name: Run ${{ matrix.lua }} tests | |
run: | | |
cargo test --tests --features "${{ matrix.lua }},vendored" | |
cargo test --tests --features "${{ matrix.lua }},vendored,async,serialize,macros,anyhow,userdata-wrappers" | |
rustfmt: | |
name: Rustfmt | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@main | |
- uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: rustfmt | |
- run: cargo fmt -- --check | |
clippy: | |
name: Clippy | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
lua: [lua54, lua53, lua52, lua51, luajit, luau, luau-jit, luau-vector4] | |
steps: | |
- uses: actions/checkout@main | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: nightly | |
components: clippy | |
- uses: giraffate/clippy-action@v1 | |
with: | |
reporter: 'github-pr-review' | |
clippy_flags: --features "${{ matrix.lua }},vendored,async,send,serialize,macros,anyhow,userdata-wrappers" |