Optimize encoding_rs bindings: reduce allocations and simplify error handling #17
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: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| env: | |
| MIX_ENV: test | |
| ENCODING_RS_BUILD: "true" | |
| jobs: | |
| test: | |
| name: Test (Elixir ${{ matrix.elixir }} / OTP ${{ matrix.otp }}) | |
| runs-on: ubuntu-22.04 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - elixir: "1.15" | |
| otp: "26" | |
| - elixir: "1.16" | |
| otp: "26" | |
| - elixir: "1.17" | |
| otp: "27" | |
| - elixir: "1.18" | |
| otp: "27" | |
| - elixir: "1.19" | |
| otp: "28" | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Elixir | |
| uses: erlef/setup-beam@v1 | |
| with: | |
| elixir-version: ${{ matrix.elixir }} | |
| otp-version: ${{ matrix.otp }} | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache deps | |
| uses: actions/cache@v4 | |
| with: | |
| path: deps | |
| key: deps-${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-${{ hashFiles('**/mix.lock') }} | |
| restore-keys: deps-${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}- | |
| - name: Cache _build | |
| uses: actions/cache@v4 | |
| with: | |
| path: _build | |
| key: build-${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-${{ hashFiles('**/mix.lock') }} | |
| restore-keys: build-${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}- | |
| - name: Cache Rust target | |
| uses: actions/cache@v4 | |
| with: | |
| path: native/encoding_rs/target | |
| key: rust-${{ runner.os }}-${{ hashFiles('native/encoding_rs/Cargo.lock') }} | |
| restore-keys: rust-${{ runner.os }}- | |
| - name: Install dependencies | |
| run: mix deps.get | |
| - name: Compile | |
| run: mix compile --warnings-as-errors | |
| - name: Run tests | |
| run: mix test | |
| lint: | |
| name: Lint | |
| runs-on: ubuntu-22.04 | |
| env: | |
| ENCODING_RS_BUILD: "true" | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Elixir | |
| uses: erlef/setup-beam@v1 | |
| with: | |
| elixir-version: "1.19" | |
| otp-version: "28" | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: rustfmt, clippy | |
| - name: Cache deps | |
| uses: actions/cache@v4 | |
| with: | |
| path: deps | |
| key: deps-lint-${{ runner.os }}-${{ hashFiles('**/mix.lock') }} | |
| - name: Install dependencies | |
| run: mix deps.get | |
| - name: Check formatting (Elixir) | |
| run: mix format --check-formatted | |
| - name: Check formatting (Rust) | |
| run: cargo fmt --manifest-path native/encoding_rs/Cargo.toml -- --check | |
| - name: Clippy (Rust) | |
| run: cargo clippy --manifest-path native/encoding_rs/Cargo.toml -- -D warnings | |
| - name: Cache PLTs | |
| uses: actions/cache@v4 | |
| with: | |
| path: _build/plts | |
| key: plts-${{ runner.os }}-${{ hashFiles('mix.lock') }} | |
| - name: Dialyzer | |
| run: mix dialyzer |