Perso je débug avec GDB, mais j’ai pas beaucoup plus d’informations. J’arrive à voir la valeurs des variables, mais les conteneurs utilisent du code unsafe avec des pointeurs donc ça pose problème.
Je vais essayer de logger les états de ce nœud pour trouver d’où ça vient.
EDIT: Trouvé ! Le bug avait lieu dans le fonction Node.add_link(…) (aussi dans remove_link). Pour pouvoir manipuler 2 noeuds avec des références mutables, je dois couper mon Vec en deux. L’indexage dans le cas où from > to n’était pas bon.
Ca me fait penser : est-qu’il y a une sécurité dans le code actuel pour empêcher un nœud de se certifier lui même ?
Peut être pas dans le module wotb, en tout cas cette sécurité se situe en amont au niveau de l’application du Protocole donc le cas n’est pas possible en prod.
Je n’en suis pas aussi certain, comme tu le sais cela reste du code compilé, or il n’est pas certain que la version Desktop de Duniter accepte les modules Rust sans broncher :
Je ne connais pas les commandes que tu as cité, mais pourquoi ça poserait problème ? Si la version client “combine” tous les exécutables il ne devrait pas y avoir de problème, non ? Surtout que le Rust est compilé en du code assembleur sensiblement proche de ce que tu aurais avec du C.
Si tu peux m’indiquer la procédure à suivre pour tester ça je peux regarder
De même je regarderai ce soir ce que ça donne avec Neon, ça à l’air plutôt simple à utiliser.
Il faudrait que j’ajoute un license avant de l’envoyer sur crates.io. Tu me propose quoi (qui soit utilisable de mon côté tout en étant compatible avec celle de duniter-ts) ?
D’acc. Je demande car j’ai jamais publié de code, et encore moins fait attention aux licenses. C’est la “GNU General Public License v3.0” : qu’est-ce qu’elle permet ou empêche de faire avec le code ?
C’est bien ce que je me souvenais. Dans le cadre de Duniter ça me semble une bonne chose, par contre je ne pense pas que ça serait souhaitable pour d’autres types de projets.
Ça dépend … il est possible de démontrer que la GPL (et ses dérivés comme AGPL) est la seule licence véritablement symétrique dans l’espace-temps humain. Bon je suis pas encore bien rôdé dessus, et ce n’est pas le sujet ici, donc je t’épargne cela.
Toutefois on n’est pas forcé non plus de vouloir donner les même droits à chaque individu de cet espace-temps, et dans ce cas oui on peut choisir une autre licence type MIT ou autre.
Je vois. Je prend la GPL3 pour mes projets autour de Duniter, et je verrais pour les autres.
Je viens de setup un projet Neon, et je peux bien appeler mon code Rust depuis le code NodeJS.
Du coup pour que ça soit compatible avec votre utilisation actuelle il va falloir que je rajoute votre interface WoT en mémoire/fichier. Je vais regarder comment faire ça proprement