[async hooks] Criteria for exiting experimental
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 20/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- node.js
- Área
- backend-api-design
Línea de trabajo
Start with the tracking issue #124 and the related discussions in #107, TSC #340, diagnostics #144, and diagnostics #188. Review the open questions around formal semantics, performance, and API stability; this issue is complete when the working group agrees on and records concrete criteria for leaving experimental status.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
At a previous WG meeting we discussed the task (assigned to me) of figuring out the criteria for async_hooks to exit experimental. While #124 can continue to be the tracking issue keeping track of the concrete work that needs to happen, I am opening this issue as a discussion what being stable entails.
To become stable, the API must be well understood, well specified and well tested – but those are subjective.
-
At previous WG meetings, in #107 and in https://github.com/nodejs/TSC/issues/340#issuecomment-383972054, @mike-kaufman and @mrkmarron have expressed the need (albeit not directly) for more formally defined semantics – perhaps at the language level – rather than the semantics being defined by implementation. I share this sentiment. We have gotten this concept wrong before, an it is a foundational concept for the language that needs some more rigorous treatment rather than being implementation defined. @mike-kaufman, @mrkmarron: LMK if I am inferring incorrectly.
-
Similarly, the V8 team (e.g. @bmeurer) has expressed concerns about semantics being inadequately specified which is a barrier to VM being able to optimize safely. A recent example of this is the recent regression in Node 10 where async_hooks behavior changed in a way to break existing use-cases in a major way. The regression was a result of optimization work V8 did in order to improve async await performance. The optimizations V8 did were reasonable as per the spec. However, since Promise Hooks is neither well specified, nor well tested it is hard to know what behaviors are observable part of the Promise Hook contract and what aspects are ancillary. What all can the VM optimize? IMO, at a minimum the Promise Hooks API needs to be better specified (as if it was a language spec – even if it is not) so that we can have adequate levels of fuzz testing in V8 and a strong contract between Node and V8 on the semantics.
-
Well-understood semantics: I am still making discoveries about async-hooks behavior that are surprising to me. For example, recently I learned that for certain kinds of promises the resolve hook will be called multiple times – what kind of promises this applies to left as an exercise for the reader. As a group we need to decide whether the semantics have gotten enough vetting for us to be comfortable calling it stable.
-
Performance: AsyncHooks (esp. PromiseHooks), when enabled have a fair amount of performance impact and there are anecdotal reports from both extremes. We have not concluded https://github.com/nodejs/diagnostics/issues/144 with data from the real world – although I know people are working on getting this data. More abstractly, what is acceptable level of performance impact? Should this even be part of the exit criteria?
-
API Stability: To improve performance, we may need to change API as a result of the changes suggested in https://github.com/nodejs/diagnostics/issues/188. There is also a branch that @mcollina is working on that adds currentResource as a parameter to each callback. It is not clear whether we are API stable at this point.
- Lenguaje dominante
- Sin datos de lenguaje
- Estrellas
- 550
- Forks
- 69
- Métricas de merge de PR
- Sin PR fusionados en 30 d
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 nodejs/diagnostics
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 65/100
nodejs/diagnostics#648 · 3 comentarios ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 20/100
nodejs/diagnostics#690 · 1 reacción ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 20/100
nodejs/diagnostics#689 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 25/100
nodejs/diagnostics#688 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
nodejs/diagnostics#687 ·
Todos los issues de nodejs/diagnostics
Issues similares
-
[BUG] 请修改标题为您遇到的问题Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
OpenListTeam/OpenList-Worker#103 ·
Los mantenedores suelen responder en 1 día
-
needs-ac
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Ikalus1988/MisakaNet#2845 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
modelcontextprotocol/go-sdk#1340 ·
Los mantenedores suelen responder en 1 día
-
skills.mdx: ReadResourceDirectoryRequest does not type-check against the 2026-07-28 base schemaAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
modelcontextprotocol/ext-skills#156 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
MystenLabs/MemWal#1104 · 1 comentario ·
Los mantenedores suelen responder en 1 día