Sophya merge requestshttps://gitlab.in2p3.fr/SOPHYA/Sophya/-/merge_requests2021-08-25T10:27:55+02:00https://gitlab.in2p3.fr/SOPHYA/Sophya/-/merge_requests/2Sélection de norme C++, avec C++11 minimum/par défaut2021-08-25T10:27:55+02:00GRASLAND HadrienSélection de norme C++, avec C++11 minimum/par défautCette MR permet de sélectionner la norme C++ utilisée, via le flag "-cxxstd" au script configure, qui accepte deux syntaxes différentes:
- Une syntaxe simple où on donne le numéro de version de la norme C++ souhaitée (98, 11, 17...) et ...Cette MR permet de sélectionner la norme C++ utilisée, via le flag "-cxxstd" au script configure, qui accepte deux syntaxes différentes:
- Une syntaxe simple où on donne le numéro de version de la norme C++ souhaitée (98, 11, 17...) et le script configure se charge de vérifier que SOPHYA est compatible, puis de générer le bon flag de dialecte pour le compilateur.
- Une syntaxe avancée où on donne directement un dialecte C++ spécifique au compilateur cible (ex: gnu++17 = C++17 avec les extensions GNU) et le script configure le passe tel quel au compilateur en croisant les doigts pour que ce soit compatible.
J'ai vérifié que ça compile chez moi (avec une tonne de warnings), mais je ne connais pas Sophya assez bien pour tester plus que ça.https://gitlab.in2p3.fr/SOPHYA/Sophya/-/merge_requests/3WIP: Utilisation des types entiers de la norme C++2021-08-25T10:27:41+02:00GRASLAND HadrienWIP: Utilisation des types entiers de la norme C++Cette soumission se base sur !2 et ne devrait donc être évaluée qu'après coup.
Ici, l'idée est de simplifier l'interaction du code écrit en C++ récent avec SOPHYA en utilisant systématiquement dans l'implémentation SOPHYA les types enti...Cette soumission se base sur !2 et ne devrait donc être évaluée qu'après coup.
Ici, l'idée est de simplifier l'interaction du code écrit en C++ récent avec SOPHYA en utilisant systématiquement dans l'implémentation SOPHYA les types entiers qui sont désormais fournis par la norme C++.
Ainsi...
- int_1 devient un alias de int8_t
- int_2 devient un alias de int16_t
- int_4 devient un alias de int32_t
- int_8 devient un alias de int64_t
- Idem pour les versions non signées
- sa_size_t devient un alias de ptrdiff_t (et non size_t car il doit être signé)
---
Les premiers changements permettent au code utilisant les types entiers de taille fixe normalisés de stdint.h d'interagir sans soucis avec du code SOPHYA basé sur les types int_x.
Initialement, je voulais même migrer le code SOPHYA aux types stdint, mais il s'avère qu'en pratique, Sophya expose le nom des types entiers utilisés en interne de diverses manières (APIs émettant/recevant des chaînes de caractères avec ce nom dedans, enums nommées par rapport aux types entiers dans datatypes.h, APIs suivant une convention en U1/2/4/8...), donc j'ai trop peur de casser quelque chose ou de perturber les gens en effectuant cette migration.
En revanche, c'est possible de migrer TAcq aux types stdint, et c'est ce que je vais tenter après.
---
Je m'attends à ce que le point sur la modification de sa_size_t soit potentiellement plus polémique (peut créer des incompatibilités binaires si des données en sa_size_t sont écrites dans des fichiers), donc je suis prêt à revenir dessus.
Je me disais juste que si on est parti pour moderniser nos types entiers, ça vaut le coup d'enlever une "surprise" possible au niveau du size_t en se rapprochant des types indice standard du C/++.
---
Résout le bug #2