elusion 8.3.0

Elusion is a modern DataFrame / Data Engineering / Data Analysis library that combines the familiarity of DataFrame operations (like those in PySpark, Pandas, and Polars) with the power of SQL query building. It provides flexible query construction without enforcing strict operation ordering, enabling developers to write intuitive and maintainable data transformations.
Documentation
name: Platform Compatibility

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  test:
    name: Build & Test (${{ matrix.os }})
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        rust: [stable]

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup Rust (${{ matrix.rust }})
        uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: ${{ matrix.rust }}

      - name: Cache Cargo registry & build
        uses: actions/cache@v4
        with:
          path: |

            ~/.cargo/registry
            ~/.cargo/git
            target
          key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
          restore-keys: |

            ${{ runner.os }}-cargo-

      - name: Install ODBC (Ubuntu)
        if: matrix.os == 'ubuntu-latest'
        run: |

          sudo apt-get update
          sudo apt-get install -y unixodbc-dev

      - name: Install ODBC (macOS)
        if: matrix.os == 'macos-latest'
        run: |

          brew install unixodbc

      - name: Build
        run: cargo build --verbose

      - name: Run tests
        run: cargo test --verbose
  security-audit:
    name: Security Audit
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install cargo-audit
        run: cargo install cargo-audit --locked

      - name: Audit Rust dependencies
        # Ignored advisories — all transitive deps Elusion cannot control:
        # RUSTSEC-2026-0041: lz4_flex — datafusion/parquet dep
        # RUSTSEC-2026-0037: quinn-proto — reqwest/object_store dep
        # RUSTSEC-2026-0049: rustls-webpki — reqwest/rustls dep
        # RUSTSEC-2026-0002: lru IterMut — mysql_async dep (low severity)
        # RUSTSEC-2024-0384: instant — azure_core dep (unmaintained warning)
        # RUSTSEC-2024-0436: paste — parquet/datafusion dep (unmaintained warning)
        # RUSTSEC-2025-0134: rustls-pemfile — object_store dep (unmaintained warning)
        run: |

          cargo audit \
            --ignore RUSTSEC-2026-0041 \
            --ignore RUSTSEC-2026-0037 \
            --ignore RUSTSEC-2026-0049 \
            --ignore RUSTSEC-2026-0002 \
            --ignore RUSTSEC-2024-0384 \
            --ignore RUSTSEC-2024-0436 \
            --ignore RUSTSEC-2025-0134

  # ─────────────────────────────────────────────
  # HTTPS-only check — ensure no plain HTTP URLs
  # ─────────────────────────────────────────────
  tls-check:
    name: HTTPS Check
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Check no plain HTTP URLs in source
        run: |

          if grep -rn "http://" src/ --include="*.rs"; then
            echo "Plain HTTP URLs found in source. Use HTTPS instead."
            exit 1
          fi
          echo "No plain HTTP URLs found."