Proposal: Cross-runtime correctness validation for asyncband primitives
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
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
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de apache/asyncband
-
Tracking Issue to Release 0.7.4Posiblemente ocupada @QwQBiG la tomó hace 3 días. Abierto
apache/asyncband#369 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Investigate unsound mapped RwLock write guard downgradingPosiblemente ocupada @orthur2 la tomó hace 6 días. Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
apache/asyncband#362 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
apache/asyncband#360 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
enhancement good first issue help wanted
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
apache/asyncband#324 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Discuss shared broadcast receives without a Clone boundPosiblemente ocupada @orthur2 la tomó hace 7 días. Abiertoenhancement question
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
apache/asyncband#312 · 5 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de apache/asyncband
Issues similares
-
The book has a Nix install section that chelis.ch lacks, and it names two of the three systemsAbiertoarea:ecosystem documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Chelis-Lang/chelis#3866 ·
Los mantenedores suelen responder en 1 día
-
[安卓Feature]: 数字键盘左侧符号区域大小优化Abiertoenhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
metasequoiaime/msime#8620 ·
Los mantenedores suelen responder en 1 día
-
agent-detection macos p2 triaged
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
Los mantenedores suelen responder en 1 día
-
bug documentation sev-0
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
Los mantenedores suelen responder en 1 día