Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Proposal: Cross-runtime correctness validation for asyncband primitives

Abierto
#154 6 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
35/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
rust

Línea de trabajo

Empieza por localizar la suite de pruebas #[tokio::test] existente y los microbenchmarks; después, establece un mapa de las primitivas y semánticas que necesitan una cobertura compartida. Define un harness independiente del runtime para los runtimes primarios indicados y determina cómo encajan los runtimes secundarios y los trabajos de CI. Se considera terminado cuando las propiedades garantizadas se validen en toda la matriz indicada, mientras las pruebas y benchmarks existentes de Tokio permanecen sin cambios.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Motivation

Asyncband advertises itself as runtime-agnostic, but our test suite is effectively Tokio-only: all tests run under #[tokio::test] (mostly the single-threaded current-thread runtime), and benchmarks poll futures directly without a real executor. This leaves waker registration, cancellation, and wake-up races under real multi-threaded scheduling unverified, which undermines the core promise of the crate.

This proposal adds a cross-runtime correctness validation suite that exercises the library's primitives under the commonly used Rust async runtimes and gates it in CI.

Target runtimes

Primary matrix (all platforms, active maintenance):

  • tokio – de facto standard; multi-threaded work-stealing runtime. Required baseline.
  • async-std – still one of the mainstream runtimes listed in the official async book.
  • smol – the lightweight, composable runtime; representative of the async-executor/async-lock ecosystem.
  • compio - one thread per core async runtime

Secondary matrix (Linux-only):

  • glommio – io_uring-based thread-per-core runtime (no Mutex, tasks are !Send).
  • monoio – io_uring-based thread-per-core runtime (limited sync primitives).

Scope

  • Build a small runtime-agnostic test harness (spawn / join / yield / timeout adapters) and run a shared semantic test suite for each primitive on every runtime in the primary matrix.
  • Validate guaranteed properties only (no lost wakeups, correct cancellation, close/disconnect semantics, single-flight/once dedup, no deadlock on single-threaded executors) — not implementation-specific fairness guarantees.
  • CI: run the primary matrix on Ubuntu, macOS, and Windows (stable toolchain only); run the secondary matrix on Ubuntu as a Linux-only job.
  • Keep the existing Tokio test suite and microbenchmarks unchanged.

Open questions

  • Should the secondary matrix (glommio, monoio) be required or informational in CI?
  • Do we want benchmark comparisons against runtime-native primitives(e.g. tokio::sync::Mutex) in this proposal, or a follow-up?
  • Where should the harness live: a separate non-workspace test crate to keep heavy runtime dependencies out of regular cargo test?
  • Is there any project that we can leverage? e.g. loom
Lenguaje dominante
Rust
Estrellas
283
Forks
49
Merge medio
1 d 9 h
PR fusionados (30 d)
39

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de apache/asyncband

Todos los issues de apache/asyncband

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.