spargio 0.5.11

Work-stealing async runtime for Rust built on io_uring and msg_ring
Documentation
name: CI

on:
  pull_request:
  push:
    branches: ["master"]
  schedule:
    - cron: "0 4 * * *"

jobs:
  test-and-build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

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

      - name: Cargo fmt
        run: cargo fmt --all -- --check

      - name: Cargo test
        run: cargo test

      - name: Cargo test (uring-native)
        run: cargo test --features uring-native

      - name: Cargo bench --no-run
        run: cargo bench --no-run

      - name: Install mdBook
        run: cargo install --locked mdbook --version 0.4.40

      - name: Build mdBook
        run: mdbook build book

      - name: Fanout bench smoke
        run: ./scripts/bench_fanout_smoke.sh

      - name: Ping perf guardrail
        run: ./scripts/bench_ping_guardrail.sh

      - name: Fanout perf guardrail
        run: ./scripts/bench_fanout_guardrail.sh

      - name: Ping percentile guardrails
        run: |
          ./scripts/bench_tail_guardrail.sh steady_ping_pong_rtt tokio_two_worker spargio_io_uring
          ./scripts/bench_tail_guardrail.sh steady_one_way_send_drain tokio_two_worker spargio_io_uring
          ./scripts/bench_tail_guardrail.sh cold_start_ping_pong tokio_two_worker spargio_io_uring

      - name: Fanout percentile guardrails
        run: |
          MAX_P50_RATIO=2.5 MAX_P95_RATIO=2.5 MAX_P99_RATIO=2.5 ./scripts/bench_tail_guardrail.sh fanout_fanin_balanced tokio_mt_4 spargio_io_uring
          MAX_P50_RATIO=2.5 MAX_P95_RATIO=2.5 MAX_P99_RATIO=2.5 ./scripts/bench_tail_guardrail.sh fanout_fanin_skewed tokio_mt_4 spargio_io_uring

      - name: QUIC perf gate
        run: QUIC_PERF_FIXTURE=tests/fixtures/quic_perf/native_vs_bridge.json ./scripts/quic_perf_gate.sh

  companion-matrix:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

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

      - name: Companion crate smoke
        run: ./scripts/companion_ci_smoke.sh

      - name: Companion crate hardening
        run: ./scripts/companion_ci_hardening.sh

      - name: QUIC interop matrix
        run: ./scripts/quic_interop_matrix.sh

  nightly-soak:
    if: github.event_name == 'schedule'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

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

      - name: Soak tests (ignored)
        run: cargo test --features uring-native --test stress_tdd -- --ignored

      - name: QUIC soak and fault qualification
        run: ./scripts/quic_soak_fault.sh

      - name: Install valgrind
        run: sudo apt-get update && sudo apt-get install -y valgrind

      - name: Scheduler profiler lane
        run: |
          SUMMARY_JSON=target/scheduler_profiles/nightly_skew_summary.json \
          WARMUP=0.01 MEASURE=0.02 SAMPLES=10 \
          ./scripts/bench_scheduler_profile.sh fanout_fanin_skewed spargio_io_uring
          MAX_CALLGRIND_IR_RATIO=1.35 \
          MAX_CACHEGRIND_D1MR_RATIO=1.35 \
          MAX_CACHEGRIND_D1MW_RATIO=1.35 \
          ./scripts/scheduler_profile_guardrail.sh \
            tests/fixtures/scheduler_profile/fanout_fanin_skewed_spargio_io_uring.json \
            target/scheduler_profiles/nightly_skew_summary.json
          SUMMARY_JSON=target/scheduler_profiles/nightly_balanced_summary.json \
          WARMUP=0.01 MEASURE=0.02 SAMPLES=10 \
          ./scripts/bench_scheduler_profile.sh fanout_fanin_balanced spargio_io_uring
          MAX_CALLGRIND_IR_RATIO=1.35 \
          MAX_CACHEGRIND_D1MR_RATIO=1.35 \
          MAX_CACHEGRIND_D1MW_RATIO=1.35 \
          ./scripts/scheduler_profile_guardrail.sh \
            tests/fixtures/scheduler_profile/fanout_fanin_balanced_spargio_io_uring.json \
            target/scheduler_profiles/nightly_balanced_summary.json