pluto-src 0.1.1+0.10.4

Sources of Pluto (Lua 5.4 dialect) and logic to build it.
Documentation
name: CI
on: [push, pull_request]

jobs:
  build:
    name: Build
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        target:
        - x86_64-unknown-linux-gnu
        - i686-unknown-linux-gnu
        - aarch64-unknown-linux-gnu
        - x86_64-pc-windows-gnu
        - x86_64-pc-windows-msvc
        - x86_64-apple-darwin
        - aarch64-apple-darwin
        include:
        - target: x86_64-unknown-linux-gnu
          os: ubuntu-latest
        - target: i686-unknown-linux-gnu
          os: ubuntu-latest
        - target: aarch64-unknown-linux-gnu
          os: ubuntu-latest
        - target: x86_64-pc-windows-gnu
          os: ubuntu-latest
        - target: x86_64-pc-windows-msvc
          os: windows-latest
        - target: x86_64-apple-darwin
          os: macos-latest
        - target: aarch64-apple-darwin
          os: macos-latest
    steps:
    - uses: actions/checkout@v4
    - uses: dtolnay/rust-toolchain@stable
      with:
        target: ${{ matrix.target }}
    - name: Install GCC (i686-unknown-linux-gnu)
      if: ${{ matrix.target == 'i686-unknown-linux-gnu' }}
      run: |
        sudo apt-get update -y
        sudo apt-get install -y --no-install-recommends gcc-multilib g++-multilib
      shell: bash
    - name: Install GCC (aarch64-unknown-linux-gnu)
      if: ${{ matrix.target == 'aarch64-unknown-linux-gnu' }}
      run: |
        sudo apt-get update -y
        sudo apt-get install -y --no-install-recommends gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libc6-dev-arm64-cross
      shell: bash
    - name: Install GCC (x86_64-pc-windows-gnu)
      if: ${{ matrix.target == 'x86_64-pc-windows-gnu' }}
      run: |
        sudo apt-get update -y
        sudo apt-get install -y --no-install-recommends gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64
      shell: bash
    - name: Build
      run: |
        cargo build -p testcrate --target ${{ matrix.target }}
      shell: bash

  test:
    name: Test
    runs-on: ${{ matrix.os }}
    needs: build
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        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@v4
    - uses: dtolnay/rust-toolchain@stable
      with:
        target: ${{ matrix.target }}
    - name: Run tests
      run: |
        cargo test -p testcrate
      shell: bash

  rustfmt:
    name: Rustfmt
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - uses: dtolnay/rust-toolchain@stable
      with:
        components: rustfmt
    - run: cargo fmt -- --check