Task monad based on `Materializer`
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
- #1802 de @jypma — cerrado sin fusionar
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
Línea de trabajo
Revisa las abstracciones Task, TaskControl, Materializer, Supplier, Source, Sink, KillSwitch, CompletionStage y RunnableGraph descritas en el issue. La propuesta no identifica archivos del repositorio, pruebas ni un criterio de aceptación establecido; determina primero si Pekko debería adoptar esta API unificada de cancelación para futures y streams, y luego define qué debe cubrir un diseño aceptado.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
In a pekko Java project I'm working on, I've been creating a Task class whose abstraction looks something like:
public abstract class Task<T> {
public static <T> Task<T> of(Supplier<T> fn) {}
public static <T> Task<T> connect(Source<A, ? extends KillSwitch> source, Sink<A,CompletionStage<T>> sink) {}
/* ... */
public abstract TaskControl<T> run(Materializer mat);
}
public class TaskControl<T> {
public void cancel() { /* ... */ }
public CompletableFuture<T> future() { /* ... */ }
}
Task is a description of running something, but also has a unified cancellation API (across futures and connected RunnableGraphs). It is inspired heavily from ZIO's API. A lot of combinators are written.
Would this be an interesting abstraction to have in Pekko itself? The fact that streams need to be materialized brings them close to a Task monad already, and in my experience having a unified API between running streams and futures is very valuable.
We'd of course add a nice Scala API as well (which should be trivial).
- Lenguaje dominante
- Scala
- Estrellas
- 1.7k
- Forks
- 212
- Merge medio
- 18 h 20 min
- PR fusionados (30 d)
- 108
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
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/pekko
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Los mantenedores suelen responder en 1 día
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
apache/pekko#1840 · 8 comentarios ·
Los mantenedores suelen responder en 1 día
-
Coordinator singleton lease loss permanently stops the local ShardRegion while the node is still UpPosiblemente ocupada @He-Pin la tomó hace 4 días. Abiertobug cluster
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
Los mantenedores suelen responder en 1 día
-
enhancement flaky make-tests-easier-to-run
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
Los mantenedores suelen responder en 1 día
-
build enhancement github_actions
Dificultad 3/5 1-2 días Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día
Todos los issues de apache/pekko
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
canton-network/splice#8087 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 73/100
lichess-org/lila#22298 ·
Los mantenedores suelen responder en 1 día
-
Task 🔧
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
valkey-io/valkey-glide#7455 ·
Los mantenedores suelen responder en 1 día