basenc 1.0.0-alpha.1

High-performance SIMD-accelerated Base64, Base32, and hex encoding and decoding with no_std support.
Documentation
name: Gate

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

  workflow_dispatch:

jobs:
  gate:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust:
          - stable
          - beta
          - nightly

    name: Gate (${{ matrix.rust }})

    steps:
      - name: Checkout sources
        uses: actions/checkout@v7

      - name: Install toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ matrix.rust }}
          targets: wasm32-unknown-unknown

      - name: Run tests
        run: cargo test

      - name: Run tests with static SSE2
        env:
          RUSTFLAGS: -C target-feature=+sse2,-ssse3
        run: cargo test --no-default-features --features std

      - name: Run tests with static SSSE3
        env:
          RUSTFLAGS: -C target-feature=+sse2,+ssse3
        run: cargo test --no-default-features --features std

      - name: Run proptest tests (Release)
        working-directory: proptest
        run: cargo test --release

      - name: Build wasm32 scalar tests
        working-directory: wasm-tests
        env:
          CARGO_TARGET_DIR: target/scalar
        run: cargo build --release --target wasm32-unknown-unknown --features scalar

      - name: Build wasm32 SIMD128 tests
        working-directory: wasm-tests
        env:
          CARGO_TARGET_DIR: target/simd
          RUSTFLAGS: -C target-feature=+simd128
        run: cargo build --release --target wasm32-unknown-unknown

      - name: Run wasm32 tests
        working-directory: wasm-tests
        run: node run.mjs

  windows:
    runs-on: windows-latest
    strategy:
      matrix:
        include:
          - name: x64 scalar
            target: x86_64-pc-windows-msvc
            rustflags: -C target-feature=-ssse3
            features: std,simd-off
          - name: x64 SSE2
            target: x86_64-pc-windows-msvc
            rustflags: -C target-feature=+sse2,-ssse3
            features: std
          - name: x64 SSSE3
            target: x86_64-pc-windows-msvc
            rustflags: -C target-feature=+sse2,+ssse3
            features: std
          - name: x86 scalar
            target: i686-pc-windows-msvc
            rustflags: -C target-feature=+sse2,-ssse3
            features: std,simd-off
          - name: x86 SSE2
            target: i686-pc-windows-msvc
            rustflags: -C target-feature=+sse2,-ssse3
            features: std
          - name: x86 SSSE3
            target: i686-pc-windows-msvc
            rustflags: -C target-feature=+sse2,+ssse3
            features: std

    name: Windows (${{ matrix.name }})

    steps:
      - name: Checkout sources
        uses: actions/checkout@v7

      - name: Install toolchain and target
        uses: dtolnay/rust-toolchain@stable
        with:
          targets: ${{ matrix.target }}

      - name: Run tests
        env:
          RUSTFLAGS: ${{ matrix.rustflags }}
        run: cargo test --target ${{ matrix.target }} --no-default-features --features ${{ matrix.features }}

  aarch64:
    runs-on: ubuntu-24.04-arm
    name: AArch64 NEON

    steps:
      - name: Checkout sources
        uses: actions/checkout@v7

      - name: Install toolchain
        uses: dtolnay/rust-toolchain@stable

      - name: Run tests with runtime detection
        run: cargo test

      - name: Run tests with static NEON
        env:
          RUSTFLAGS: -C target-feature=+neon
        run: cargo test --no-default-features --features std