ticklog 0.1.1

A fast, minimal logging library for Rust, designed for performance-critical applications, e.g. high-frequency trading.
Documentation
name: CI

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

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

env:
  CARGO_TERM_COLOR: always

jobs:
  # Build + test across all OS targets
  test:
    name: test (${{ matrix.os }})
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
    steps:
      - uses: actions/checkout@v4

      - uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: stable

      - uses: Swatinem/rust-cache@v2
        with:
          shared-key: test-${{ matrix.os }}

      - name: Run tests (lib + integration)
        run: cargo test --lib --tests

      - name: Run doc tests
        run: cargo test --doc

      - name: Compile examples
        run: cargo build --examples

      - name: Compile benchmarks
        run: cargo bench --no-run

  # Format + clippy
  lint:
    name: lint
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: stable
          components: rustfmt, clippy

      - uses: Swatinem/rust-cache@v2
        with:
          shared-key: lint

      - name: Check formatting
        run: cargo fmt --all -- --check

      - name: Clippy
        run: cargo clippy --all-targets -- -D warnings

  # Miri
  miri:
    name: miri
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: nightly
          components: miri

      - uses: Swatinem/rust-cache@v2
        with:
          shared-key: miri

      - name: cargo miri setup
        run: cargo +nightly miri setup

      - name: Run Miri tests
        run: |
          cargo +nightly miri test --lib cursor_
          cargo +nightly miri test --lib write_record
          cargo +nightly miri test --lib producer_and_drain
          cargo +nightly miri test --lib thread_buf
        env:
          MIRIFLAGS: -Zmiri-tree-borrows

  # Doc build check
  docs:
    name: docs
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: stable

      - uses: Swatinem/rust-cache@v2
        with:
          shared-key: docs

      - name: Build docs
        run: cargo doc --no-deps --document-private-items
        env:
          RUSTDOCFLAGS: -D warnings

  # MSRV
  msrv:
    name: msrv (1.85)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: "1.85"

      - uses: Swatinem/rust-cache@v2
        with:
          shared-key: msrv

      - name: Check with MSRV
        run: cargo check --all-targets