nodejs / nodejs/node-addon-api
Enforce callback signatures with C++ Concepts
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- C++
- Estrellas
- 2.4k
- Forks
- 499
- Merge medio
- 2 d 11 h
- PR fusionados (30 d)
- 2
Descripción
#1738 documented the required signature of the templated finalizer callback parameters as inline comment hints.
These are human-only annotations. The compiler does not enforce them, so a mismatched callable fails deep inside the template instantiation with an unhelpful error.
Once C++20 is the minimum supported standard, we should replace these hints with C++ Concepts that constrain the Finalizer/FinalizerType template parameters. This gives compiler-enforced contracts and clear diagnostics at the call site.
Finalizer candidates:
BasicEnv::PostFinalizerObject::AddFinalizerExternal::NewBuffer::New/Buffer::NewOrCopyThreadSafeFunction::NewTypedThreadSafeFunction::New
Callback candidates:
Function::New— the JS callback (Callable)PropertyDescriptor::Accessor—Getter/SetterPropertyDescriptor::Function—CallableThreadSafeFunction::BlockingCall/NonBlockingCall—CallbackTypedThreadSafeFunction::BlockingCall/NonBlockingCall—CallbackTypedThreadSafeFunction— theCallJscallback
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.
Línea de trabajo
Revisa las anotaciones de firma inline de #1738 y los puntos de entrada de plantillas enumerados, incluidos BasicEnv::PostFinalizer, Object::AddFinalizer, External::New, Buffer::New y las APIs de ThreadSafeFunction. Determina las restricciones necesarias para cada candidato de Finalizer, Callable, Getter, Setter y Callback. Se considera terminado cuando C++20 Concepts hacen cumplir las firmas documentadas y producen diagnósticos en el punto de llamada.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- cpp
- Área
- api
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Tranquilo
- Claridad
- Bastante claro
- Aptitud para principiantes
- 52/100