cuda-rust-wasm 0.1.7

CUDA to Rust transpiler with WebGPU/WASM support
Documentation
name: Optimized CUDA-WASM CI/CD Pipeline

on:
  push:
    branches: [ main, develop ]
  pull_request:
    branches: [ main ]
  release:
    types: [ published ]

env:
  CARGO_TERM_COLOR: always
  RUST_BACKTRACE: 1

jobs:
  # Code quality and linting
  quality:
    name: Code Quality
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt, clippy
          
      - name: Cache Rust dependencies
        uses: actions/cache@v3
        with:
          path: |

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

            ${{ runner.os }}-cargo-
      
      - name: Check formatting
        run: cargo fmt -- --check
        
      - name: Run clippy
        run: cargo clippy --all-targets --all-features -- -D warnings
        
      - name: Install Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '18'
          cache: 'npm'
          
      - name: Install dependencies
        run: npm ci
        
      - name: Lint JavaScript
        run: npm run lint:js
        
      - name: Check formatting (JS)
        run: npm run format:check

  # Security audit
  security:
    name: Security Audit
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable
        
      - name: Install cargo-audit
        run: cargo install cargo-audit
        
      - name: Run cargo audit
        run: cargo audit
        
      - name: Install Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '18'
          cache: 'npm'
          
      - name: Install dependencies
        run: npm ci
        
      - name: Run npm audit
        run: npm audit --audit-level moderate

  # Cross-platform testing
  test:
    name: Test Suite
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
        rust: [stable, beta]
        node: ['16', '18', '20']
        exclude:
          # Reduce matrix size for faster CI
          - os: windows-latest
            rust: beta
          - os: macos-latest
            rust: beta
    runs-on: ${{ matrix.os }}
    
    steps:
      - uses: actions/checkout@v4
      
      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ matrix.rust }}
          targets: wasm32-unknown-unknown
          
      - name: Cache Rust dependencies
        uses: actions/cache@v3
        with:
          path: |

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

            ${{ runner.os }}-${{ matrix.rust }}-cargo-
      
      - name: Install Node.js
        uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node }}
          cache: 'npm'
          
      - name: Install system dependencies (Ubuntu)
        if: matrix.os == 'ubuntu-latest'
        run: |

          sudo apt-get update
          sudo apt-get install -y build-essential pkg-config libssl-dev
          
      - name: Install system dependencies (macOS)
        if: matrix.os == 'macos-latest'
        run: |

          brew install pkg-config openssl
          
      - name: Install dependencies
        run: npm ci
        
      - name: Install wasm-pack
        run: cargo install wasm-pack
        
      - name: Install wasm-opt
        run: |

          if [ "${{ matrix.os }}" = "ubuntu-latest" ]; then
            sudo apt-get install -y binaryen
          elif [ "${{ matrix.os }}" = "macos-latest" ]; then
            brew install binaryen
          else
            npm install -g wasm-opt
          fi
        shell: bash
        
      - name: Run Rust tests
        run: cargo test --verbose --features native-gpu,optimized-build
        
      - name: Run Rust tests (WASM)
        run: cargo test --verbose --target wasm32-unknown-unknown --features wasm-simd
        
      - name: Build WASM package
        run: npm run build:wasm
        env:
          BUILD_MODE: release
          ENABLE_SIMD: true
          OPTIMIZE_SIZE: true
          
      - name: Build Node.js bindings
        run: npm run build:node
        
      - name: Run integration tests
        run: npm run test:integration
        
      - name: Run smoke tests
        run: npm run test:smoke

  # Performance benchmarks
  benchmark:
    name: Performance Benchmarks
    runs-on: ubuntu-latest
    if: github.event_name == 'push' && github.ref == 'refs/heads/main'
    
    steps:
      - uses: actions/checkout@v4
      
      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable
        with:
          targets: wasm32-unknown-unknown
          
      - name: Cache Rust dependencies
        uses: actions/cache@v3
        with:
          path: |

            ~/.cargo/registry
            ~/.cargo/git
            target/
          key: ${{ runner.os }}-bench-cargo-${{ hashFiles('**/Cargo.lock') }}
          
      - name: Install Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '18'
          cache: 'npm'
          
      - name: Install dependencies
        run: |

          sudo apt-get update
          sudo apt-get install -y build-essential pkg-config libssl-dev binaryen
          npm ci
          cargo install wasm-pack
          
      - name: Run benchmarks
        run: |

          npm run benchmark
          npm run benchmark:wasm
          
      - name: Upload benchmark results
        uses: actions/upload-artifact@v3
        with:
          name: benchmark-results
          path: |

            target/criterion/
            dist/build-report.json
            dist/size-analysis.txt

  # Code coverage
  coverage:
    name: Code Coverage
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable
        
      - name: Install tarpaulin
        run: cargo install cargo-tarpaulin
        
      - name: Generate coverage
        run: cargo tarpaulin --out html --output-dir coverage --features native-gpu,optimized-build
        
      - name: Upload coverage reports
        uses: actions/upload-artifact@v3
        with:
          name: coverage-report
          path: coverage/

  # Build and publish
  build:
    name: Build Release
    runs-on: ubuntu-latest
    needs: [quality, security, test]
    if: github.event_name == 'release'
    
    steps:
      - uses: actions/checkout@v4
      
      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable
        with:
          targets: wasm32-unknown-unknown
          
      - name: Cache Rust dependencies
        uses: actions/cache@v3
        with:
          path: |

            ~/.cargo/registry
            ~/.cargo/git
            target/
          key: ${{ runner.os }}-release-cargo-${{ hashFiles('**/Cargo.lock') }}
          
      - name: Install Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '18'
          cache: 'npm'
          registry-url: 'https://registry.npmjs.org'
          
      - name: Install dependencies
        run: |

          sudo apt-get update
          sudo apt-get install -y build-essential pkg-config libssl-dev binaryen
          npm ci
          cargo install wasm-pack
          
      - name: Build optimized release
        run: |

          npm run build
        env:
          BUILD_MODE: release
          ENABLE_SIMD: true
          OPTIMIZE_SIZE: true
          ENABLE_CACHE: false
          
      - name: Run final tests
        run: npm run ci
        
      - name: Publish to npm
        run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
          
      - name: Upload release artifacts
        uses: actions/upload-artifact@v3
        with:
          name: release-build
          path: |

            dist/
            target/wasm32-unknown-unknown/release/
            
  # Documentation
  docs:
    name: Documentation
    runs-on: ubuntu-latest
    if: github.event_name == 'push' && github.ref == 'refs/heads/main'
    
    steps:
      - uses: actions/checkout@v4
      
      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable
        
      - name: Cache Rust dependencies
        uses: actions/cache@v3
        with:
          path: |

            ~/.cargo/registry
            ~/.cargo/git
            target/
          key: ${{ runner.os }}-docs-cargo-${{ hashFiles('**/Cargo.lock') }}
          
      - name: Build documentation
        run: cargo doc --no-deps --features native-gpu,optimized-build
        
      - name: Deploy to GitHub Pages
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./target/doc