nodejs / nodejs/node-addon-api
Enforce callback signatures with C++ Concepts
Personne n'a encore pris cette issue.
- Langage dominant
- C++
- Étoiles
- 2.4k
- Forks
- 499
- Merge moyen
- 2 j 11 h
- PR mergées (30 j)
- 2
Description
#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
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Examinez les annotations de signature inline de #1738 et les points d’entrée de templates indiqués, notamment BasicEnv::PostFinalizer, Object::AddFinalizer, External::New, Buffer::New et les API de ThreadSafeFunction. Déterminez les contraintes nécessaires pour chaque candidat Finalizer, Callable, Getter, Setter et Callback. Le travail est considéré comme terminé lorsque les Concepts C++20 imposent les signatures documentées et produisent des diagnostics au niveau de l’appel.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- cpp
- Domaine
- api
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- Calme
- Clarté
- Plutôt claire
- Accessibilité débutants
- 52/100